Browse Source

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

Min 10 months ago
parent
commit
7e44fca33d

+ 0 - 18
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DepartmentServiceImpl.java

@@ -513,24 +513,6 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
             }
             list.add(departmentMasterVO);
         }
-        //当前部门下的直属人员工时统计
-        if (parentDeptId != null) {
-            List<Integer> curDeptIds = new ArrayList<>();
-            curDeptIds.add(parentDeptId);
-            List<Map<String, Object>> userTimeList = departmentMapper.getCostByUserSum(curDeptIds, startDate, endDate, companyId);
-            for (Map<String, Object> map : userTimeList) {
-                DepartmentMasterVO departmentMasterVO = new DepartmentMasterVO();
-                departmentMasterVO.setSeq(0);
-                departmentMasterVO.setDepartmentName((String)map.get("user"));
-                departmentMasterVO.setCostTime((Double)map.get("time"));
-                BigDecimal money = map == null ? new BigDecimal(0) : (BigDecimal) map.get("money");
-                departmentMasterVO.setCostMoney(money);
-                departmentMasterVO.setType("userName");
-                departmentMasterVO.setHasSubDept(false);
-                list.add(departmentMasterVO);
-                totalCostMoney = totalCostMoney.add(money);
-            }
-        }
         //对部门排序
         list.sort(Comparator.comparing(l->l.getSeq()));
         resultMap.put("totalCostMoney", totalCostMoney);

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

@@ -1533,5 +1533,179 @@
   "yi-cun-zai-zhong-fu-ren-yuan": "There are already duplicate personnel present",
   "zhi-shao-xuan-ze-yi-ge-bu-men-huo-zhe-ren-yuan-zuo-wei-shen-he-ren": "Select at least one department or personnel as the reviewer",
   "zhong-xin-ti-jiao": "Resubmit",
-  "zhu-yao-fu-ze-ren": "(Main person in charge)"
+  "zhu-yao-fu-ze-ren": "(Main person in charge)",
+  "qing-shu-ru-guan-jian-ming-cheng": "Please enter the key name",
+  "sou-suo": "search",
+  "he-tong-lei-xing-zui-duo-zhi-neng-chuang-jian-20-ge": "A maximum of 20 contract types can be created",
+  "hui-kuan-ji-hua": "Collection plan",
+  "hui-kuan-jin-e": "Collection amount",
+  "hui-kuan-jinebu-neng-wei-0": "The payment amount cannot be 0",
+  "hui-kuan-ri-qi": "Payment date",
+  "hui-kuan-ri-qi-bu-neng-wei-kong": "The payment date cannot be empty",
+  "que-ren-shen-he-tong-guo-ma-tong-guo-hou-he-tong-ji-ben-xin-xi-wu-fa-xiu-gai": "Are you sure the review has been approved? Once approved, the basic information of the contract cannot be modified",
+  "shi-fou-yi-hui-kuan": "Has the payment been received",
+  "wei-hui-kuan": "Unpaid payments",
+  "xia-bi-hui-kuan-jin-e": "Next payment amount",
+  "xia-bi-hui-kuan-ri-qi": "Date of next payment collection",
+  "yi-hui-kuan": "Received payment",
+  "yi-hui-kuan-jin-du": "Progress of payments received",
+  "yi-hui-kuan-jin-e": "Received amount",
+  "zong-hui-kuan-jinebu-de-da-yu-he-tong-jin-e": "The total payment amount shall not exceed the contract amount",
+  "fenLeiGongShiMingXiBiao": "Classification of Work Hours Details",
+  "fenZuHaoYongJinDuBiao": "Group Consumption Schedule",
+  "fteBaoBiao": "FTE report",
+  "renWuZhongQiBiao": "Task restart table",
+  "xiangMuFenLeiGongShiZhanBiBiao": "Table of proportion of project classification working hours",
+  "xiangMuHaoYongJinDuBiao": "Project Consumption Schedule",
+  "xiangMuYuGuGongShiBiao": "Project Estimated Work Hours Table",
+  "youXiaoGongShiShuaiBiao": "Effective working hour rate table",
+  "yuanGongRenWuJinDuBiao": "Employee Task Schedule",
+  "yuanGongRenWuWanChengQingKuangBiao": "Employee Task Completion Status Table",
+  "yuanGongXiangMuJinDuBiao": "Employee Project Schedule",
+  "ziXiangMuGongShiChengBenBiao": "Subproject Labor Cost Table",
+  "anShiWanChengShuLiang": "Complete quantity on time",
+  "anShiWanChengShuai": "On time completion rate",
+  "baoJiaXiangMu": "Quotation project",
+  "buZuGongShi": "Make up for working hours",
+  "canYuYuanGong": "Participating employees",
+  "dangQianZhuangTai": "current state",
+  "diYu": "lower than",
+  "feiYongBaoXiaoMingXiBiaoXlsx": "Expense Reimbursement Details Table. xlsx",
+  "fenPeiGongShiH": "Allocated working hours (h)",
+  "fenZuShiJiGongShiH": "Group actual working hours (h)",
+  "fenZuYuGuGongShiH": "Group estimated working hours (h)",
+  "fteGongShiDangYueGongShiJiShu": "FTE (Hours/Month Work Base)",
+  "fteGongShiGuDingGongShiJiShu_163125": "FTE (Hours/Fixed Hours Base (163.125))",
+  "fuWuXiangMu": "Service Items",
+  "fuXiangMuBianHao": "Parent Project Number",
+  "fuXiangMuMingCheng": "Parent Project Name",
+  "fuZeBuMen": "Responsible department",
+  "fuZeZuChang": "Responsible team leader",
+  "gaoYu": "higher than",
+  "gongShiHaoYongShuai": "Labor consumption rate",
+  "heJiGongShiChengBen": "Total labor cost",
+  "heJiGongShiH": "Total working hours (h)",
+  "heTongLiRun": "Contract profit",
+  "heTongLiRunShuai": "Contract profit margin",
+  "jiDuXlsx": "Quarterly). xlsx",
+  "jiHuaGongShiCaiWu": "Planned working hours (finance)",
+  "jiHuaGongShiH": "Planned working hours (h)",
+  "jiaBanGongShiH": "Overtime working hours (h)",
+  "qingXuanZeTiXingFenLei": "Please select reminder category",
+  "qingXuanZeYuanGongLeiXing": "Please select employee type",
+  "qingXuanZeZiZhuXiangMuLeiBie": "Please select the category of autonomous projects",
+  "quXiao": "Cancel",
+  "quanBuBuZu": "Make up for it all",
+  "queDing": "determine",
+  "renMing": "name",
+  "renWuZongShuLiang": "Total number of tasks",
+  "riBiaoZhunGongShi": "Daily standard working hours",
+  "sheZhiYuJing": "Set up alerts",
+  "sheZhiZhanBi": "Set proportion:",
+  "shengYuGongShiH": "Remaining working hours (h)",
+  "shiBaoGongShiXiaoShi": "Actual reported working hours (hours)",
+  "shiJiChengBen": "actual cost",
+  "shiJiGongShiChengBen": "Actual labor cost",
+  "shouHouBaoJiaXiangMu": "After sales quotation project",
+  "tYihuikuanlirun": "$t('yiHuiKuanLiRun')",
+  "tiXingFenLei": "Reminder classification:",
+  "wanChengRiQi": "Completion date",
+  "weiFenLei": "Unclassified",
+  "weiWanChengShuLiang": "Unfinished quantity",
+  "weiWanChengShuai": "Unfinished rate",
+  "xiangMuHao": "Project number",
+  "xiangMuJieZhiShiJian": "Project deadline",
+  "xiangMuKaiShiShiJian": "Project start time",
+  "xiangMuRenWu": "Project tasks",
+  "xiaoHaoGongShiH": "Consumed working hours (h)",
+  "xuanZeGuanXi": "Select Relationship:",
+  "yanChiWanChengShuLiang": "Delayed completion quantity",
+  "yanFaXiangMu": "R&D projects",
+  "yiHuiKuanLiRun": "Recovered profits",
+  "yiHuiKuanLiRunShuai": "Recovered profit margin",
+  "yiWanChengShuLiang": "Completed quantity",
+  "yiXiaoHaoGongShiChengBen": "Cost of consumed labor hours (¥)",
+  "yiXiaoHaoGongShiH": "Consumed working hours (h)",
+  "yingBaoGongShi": "Reported working hours",
+  "yingBaoGongShiTianShu": "Number of working hours to be reported",
+  "yingGongShiXiaoShi": "Expected working hours (hours)",
+  "youXiaoGongShiShuai": "Effective working hours rate",
+  "yuGuGongShi": "Estimated working hours",
+  "yuanGong": "staff",
+  "yuanGongLeiXing": "Employee type",
+  "yuanGongRenWuShuJu": "Employee task data",
+  "zaiZhiRenShu": "Number of employees",
+  "zeRenRen": "person liable",
+  "zengBuGongShiH": "Additional working hours (h)",
+  "zhengChangGongShiH": "Normal working hours (h)",
+  "zhongQiShiJian": "Restart time",
+  "zhongQiYuanYin": "Reason for restart",
+  "ziXiangMuChengBen": "Sub project cost",
+  "ziXiangMuGongShi": "Sub project working hours",
+  "ziXiangMuMingCheng": "Sub project name",
+  "keHuLieBiaoXlsx": "Customer List. xlsx",
+  "gongZuoShiChangFenPei": "Allocation of working hours",
+  "jinRiGongZuoShiChang": "Today's working hours:",
+  "kanXiaoShuo": "Read novels",
+  "liaoTian": "chat",
+  "meiGong": "art designer",
+  "qiTaGongZuo": "Other work",
+  "shangWang": "surf the internet",
+  "sheJi": "Design",
+  "shiChangDanWeiH": "Duration (in hours)",
+  "tingYinLe": "Listen to the music",
+  "weiZhi": "unknown",
+  "wenDang": "file",
+  "yanFa": "research and development",
+  "yingShiYuLe": "Film and entertainment",
+  "yunYing": "operate",
+  "jinRiZanWuJieTuDianJiChaKanJinQi": "There are currently no screenshots available today. Click to view recent updates",
+  "keHuDuanXiaZai": "Client Download",
+  "suoYouJieTu": "All screenshots",
+  "yuanGongAnZhuangKeHuDuanLingDaoJiKeChaKanGongZuoZhuoMianYuanChengJianGuan": "(Employees can install the client, and leaders can view remote supervision of the work desktop)",
+  "feiGongZuoQingKuangTongJi": "Non work statistics",
+  "hangWei": "behavior",
+  "tuPian": "picture",
+  "benYeJineheJi": "Total amount on this page",
+  "cunZaiDaiShenHeHuoYiBoHuiDeDanJu": "There are pending or rejected documents",
+  "daYin": "Printing",
+  "daiDiErShenHeRenShenHe": "To be reviewed by the second reviewer",
+  "daiDiYiShenHeRenShenHe": "To be reviewed by the first reviewer",
+  "danJuDaoChu": "Document export",
+  "duiYingChengBenXiang": "Corresponding cost items",
+  "faFang": "grant",
+  "faFangFangShi": "Distribution method",
+  "faFangZhuangTai": "Distribution status",
+  "feiYongBaoXiaoDanJuLieBiao": "List of expense reimbursement documents",
+  "feiYongJinE": "Cost amount",
+  "feiYongJineHanShui": "Cost amount (including tax)",
+  "feiYongLeiXing": "Cost type:",
+  "feiYongLeiXingDaLeiGuanLi": "Cost Category Management",
+  "feiYongZhuLeiXing": "Cost main type",
+  "feiYongZhuLeiXingGuanLi": "Cost Main Type Management",
+  "guanBi": "close",
+  "qingTianXieWanZheng": "Please fill it out completely",
+  "qingTianXieWanZhengFeiYongJinE": "Please fill in the complete fee amount",
+  "qingXuanZeDiErShenHeRen": "Please select the second reviewer",
+  "qingXuanZeDiYiShenHeRen": "Please select the first reviewer",
+  "qingXuanZeWeiFaFangDeDanJu": "Please select documents that have not been issued",
+  "qingXuanZeYiFaFangDeDanJu": "Please select the issued documents",
+  "qingXuanZeZhiFuFangShi": "Please select payment method",
+  "quXiaoFaFang": "Cancel distribution",
+  "shenHeWanCheng": "Review completed",
+  "tianBaoShiJian": "Filling time",
+  "weiFaFang": "unissued",
+  "xiangMuShenHeZhuangTai": "Project (Review Status)",
+  "yiFaFang": "Issued",
+  "zhang": "Zhang",
+  "zhiFuFangShi": "Payment method",
+  "caiWuShenHeTiShi": "Financial audit prompt",
+  "nianYue": "years:",
+  "ninQueDingYaoShenHeTongGuo": "Are you sure you want to pass the review",
+  "riBaoNianYue": "Daily Report Year Month",
+  "shenHeChengGong": "Review successful!",
+  "shenHeZhuangTai": "Review status:",
+  "weiShenHe": "Unaudited",
+  "yiShenHe": "Approved",
+  "yueDeGongShiBaoGaoMa": "Is there a monthly work hour report?"
 }

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

@@ -1533,5 +1533,179 @@
   "que-ding-yao-che-hui-gai-chu-cha-shen-qing-ma": "确定要撤回该出差申请吗",
   "zhi-shao-xuan-ze-yi-ge-bu-men-huo-zhe-ren-yuan-zuo-wei-shen-he-ren": "至少选择一个部门或者人员做为审核人",
   "yi-cun-zai-zhong-fu-bu-men": "已存在重复部门",
-  "yi-cun-zai-zhong-fu-ren-yuan": "已存在重复人员"
+  "yi-cun-zai-zhong-fu-ren-yuan": "已存在重复人员",
+  "qing-shu-ru-guan-jian-ming-cheng": "请输入关键名称",
+  "sou-suo": "搜索",
+  "xia-bi-hui-kuan-ri-qi": "下笔回款日期",
+  "yi-hui-kuan-jin-e": "已回款金额",
+  "yi-hui-kuan-jin-du": "已回款进度",
+  "xia-bi-hui-kuan-jin-e": "下笔回款金额",
+  "hui-kuan-ji-hua": "回款计划",
+  "yi-hui-kuan": "已回款",
+  "shi-fou-yi-hui-kuan": "是否已回款",
+  "hui-kuan-ri-qi": "回款日期",
+  "hui-kuan-jin-e": "回款金额",
+  "wei-hui-kuan": "未回款",
+  "he-tong-lei-xing-zui-duo-zhi-neng-chuang-jian-20-ge": "合同类型最多只能创建20个",
+  "que-ren-shen-he-tong-guo-ma-tong-guo-hou-he-tong-ji-ben-xin-xi-wu-fa-xiu-gai": "确认审核通过吗,通过后合同基本信息无法修改",
+  "hui-kuan-ri-qi-bu-neng-wei-kong": "回款日期不能为空",
+  "hui-kuan-jinebu-neng-wei-0": "回款金额不能为0",
+  "zong-hui-kuan-jinebu-de-da-yu-he-tong-jin-e": "总回款金额不得大于合同金额",
+  "ziXiangMuGongShiChengBenBiao": "子项目工时成本表",
+  "renWuZhongQiBiao": "任务重启表",
+  "fteBaoBiao": "FTE报表",
+  "youXiaoGongShiShuaiBiao": "有效工时率表",
+  "xiangMuFenLeiGongShiZhanBiBiao": "项目分类工时占比表",
+  "fenLeiGongShiMingXiBiao": "分类工时明细表",
+  "yuanGongXiangMuJinDuBiao": "员工项目进度表",
+  "fenZuHaoYongJinDuBiao": "分组耗用进度表",
+  "xiangMuHaoYongJinDuBiao": "项目耗用进度表",
+  "yuanGongRenWuJinDuBiao": "员工任务进度表",
+  "xiangMuYuGuGongShiBiao": "项目预估工时表",
+  "yuanGongRenWuWanChengQingKuangBiao": "员工任务完成情况表",
+  "qingXuanZeZiZhuXiangMuLeiBie": "请选择自主项目类别",
+  "qingXuanZeYuanGongLeiXing": "请选择员工类型",
+  "quanBuBuZu": "全部补足",
+  "sheZhiYuJing": "设置预警",
+  "shiJiChengBen": "实际成本",
+  "fenZuYuGuGongShiH": "分组预估工时(h)",
+  "fenZuShiJiGongShiH": "分组实际工时(h)",
+  "yiHuiKuanLiRun": "已回款利润",
+  "yiHuiKuanLiRunShuai": "已回款利润率",
+  "tYihuikuanlirun": "$t('yiHuiKuanLiRun')",
+  "heTongLiRun": "合同利润",
+  "heTongLiRunShuai": "合同利润率",
+  "buZuGongShi": "补足工时",
+  "fuXiangMuBianHao": "父项目编号",
+  "fuXiangMuMingCheng": "父项目名称",
+  "ziXiangMuMingCheng": "子项目名称",
+  "ziXiangMuGongShi": "子项目工时",
+  "ziXiangMuChengBen": "子项目成本",
+  "zhongQiYuanYin": "重启原因",
+  "zeRenRen": "责任人",
+  "zhongQiShiJian": "重启时间",
+  "renMing": "人名",
+  "fteGongShiDangYueGongShiJiShu": "FTE(工时/当月工时基数)",
+  "fteGongShiGuDingGongShiJiShu_163125": "FTE(工时/固定工时基数(163.125))",
+  "shiBaoGongShiXiaoShi": "实报工时(小时)",
+  "yingGongShiXiaoShi": "应工时(小时)",
+  "zaiZhiRenShu": "在职人数",
+  "yingBaoGongShiTianShu": "应报工时天数",
+  "riBiaoZhunGongShi": "日标准工时",
+  "yingBaoGongShi": "应报工时",
+  "youXiaoGongShiShuai": "有效工时率",
+  "yuanGongLeiXing": "员工类型",
+  "xiangMuHao": "项目号",
+  "shengYuGongShiH": "剩余工时(h)",
+  "fuZeBuMen": "负责部门",
+  "jiHuaGongShiCaiWu": "计划工时(财务)",
+  "shiJiGongShiChengBen": "实际工时成本",
+  "zengBuGongShiH": "增补工时(h)",
+  "zhengChangGongShiH": "正常工时(h)",
+  "jiaBanGongShiH": "加班工时(h)",
+  "heJiGongShiH": "合计工时(h)",
+  "heJiGongShiChengBen": "合计工时成本",
+  "gongShiHaoYongShuai": "工时耗用率",
+  "fenPeiGongShiH": "分配工时(h)",
+  "yiXiaoHaoGongShiH": "已消耗工时(h)",
+  "yiXiaoHaoGongShiChengBen": "已消耗工时成本(¥)",
+  "fuZeZuChang": "负责组长",
+  "canYuYuanGong": "参与员工",
+  "xiangMuRenWu": "项目任务",
+  "jiHuaGongShiH": "计划工时(h)",
+  "xiaoHaoGongShiH": "消耗工时(h)",
+  "xiangMuKaiShiShiJian": "项目开始时间",
+  "xiangMuJieZhiShiJian": "项目截止时间",
+  "yuGuGongShi": "预估工时",
+  "yuanGong": "员工",
+  "renWuZongShuLiang": "任务总数量",
+  "yiWanChengShuLiang": "已完成数量",
+  "weiWanChengShuLiang": "未完成数量",
+  "weiWanChengShuai": "未完成率",
+  "anShiWanChengShuLiang": "按时完成数量",
+  "yanChiWanChengShuLiang": "延迟完成数量",
+  "anShiWanChengShuai": "按时完成率",
+  "tiXingFenLei": "提醒分类:",
+  "qingXuanZeTiXingFenLei": "请选择提醒分类",
+  "xuanZeGuanXi": "选择关系:",
+  "diYu": "低于",
+  "gaoYu": "高于",
+  "sheZhiZhanBi": "设置占比:",
+  "quXiao": "取 消",
+  "queDing": "确 定",
+  "yuanGongRenWuShuJu": "员工任务数据",
+  "dangQianZhuangTai": "当前状态",
+  "wanChengRiQi": "完成日期",
+  "fuWuXiangMu": "服务项目",
+  "feiYongBaoXiaoMingXiBiaoXlsx": "费用报销明细表.xlsx",
+  "jiDuXlsx": "季度).xlsx",
+  "weiFenLei": "未分类",
+  "baoJiaXiangMu": "报价项目",
+  "shouHouBaoJiaXiangMu": "售后报价项目",
+  "yanFaXiangMu": "研发项目",
+  "keHuLieBiaoXlsx": "客户列表.xlsx",
+  "jinRiGongZuoShiChang": "今日工作时长:",
+  "gongZuoShiChangFenPei": "工作时长分配",
+  "yanFa": "研发",
+  "shangWang": "上网",
+  "wenDang": "文档",
+  "sheJi": "设计",
+  "kanXiaoShuo": "看小说",
+  "yingShiYuLe": "影视娱乐",
+  "liaoTian": "聊天",
+  "qiTaGongZuo": "其他工作",
+  "shiChangDanWeiH": "时长(单位:h)",
+  "meiGong": "美工",
+  "yunYing": "运营",
+  "tingYinLe": "听音乐",
+  "weiZhi": "未知",
+  "yuanGongAnZhuangKeHuDuanLingDaoJiKeChaKanGongZuoZhuoMianYuanChengJianGuan": "(员工安装客户端,领导即可查看工作桌面远程监管)",
+  "keHuDuanXiaZai": "客户端下载",
+  "jinRiZanWuJieTuDianJiChaKanJinQi": "今日暂无截图,点击查看近期",
+  "suoYouJieTu": "所有截图",
+  "feiGongZuoQingKuangTongJi": "非工作情况统计",
+  "hangWei": "行为",
+  "tuPian": "图片",
+  "feiYongZhuLeiXingGuanLi": "费用主类型管理",
+  "feiYongZhuLeiXing": "费用主类型",
+  "faFangZhuangTai": "发放状态",
+  "weiFaFang": "未发放",
+  "yiFaFang": "已发放",
+  "danJuDaoChu": "单据导出",
+  "faFang": "发放",
+  "quXiaoFaFang": "取消发放",
+  "daiDiYiShenHeRenShenHe": "待第一审核人审核",
+  "daiDiErShenHeRenShenHe": "待第二审核人审核",
+  "shenHeWanCheng": "审核完成",
+  "zhiFuFangShi": "支付方式",
+  "feiYongLeiXingDaLeiGuanLi": "费用类型大类管理",
+  "duiYingChengBenXiang": "对应成本项",
+  "tianBaoShiJian": "填报时间",
+  "zhang": "张",
+  "feiYongLeiXing": "费用类型:",
+  "xiangMuShenHeZhuangTai": "项目(审核状态)",
+  "feiYongJineHanShui": "费用金额(含税)",
+  "daYin": "打 印",
+  "guanBi": "关 闭",
+  "faFangFangShi": "发放方式",
+  "qingXuanZeZhiFuFangShi": "请选择支付方式",
+  "qingTianXieWanZhengFeiYongJinE": "请填写完整费用金额",
+  "qingXuanZeDiYiShenHeRen": "请选择第一审核人",
+  "qingXuanZeDiErShenHeRen": "请选择第二审核人",
+  "feiYongJinE": "费用金额",
+  "qingTianXieWanZheng": "请填写完整",
+  "benYeJineheJi": "本页金额合计",
+  "feiYongBaoXiaoDanJuLieBiao": "费用报销单据列表",
+  "cunZaiDaiShenHeHuoYiBoHuiDeDanJu": "存在待审核或已驳回的单据",
+  "qingXuanZeWeiFaFangDeDanJu": "请选择未发放的单据",
+  "qingXuanZeYiFaFangDeDanJu": "请选择已发放的单据",
+  "nianYue": "年月:",
+  "shenHeZhuangTai": "审核状态:",
+  "riBaoNianYue": "日报年月",
+  "weiShenHe": "未审核",
+  "yiShenHe": "已审核",
+  "caiWuShenHeTiShi": "财务审核提示",
+  "ninQueDingYaoShenHeTongGuo": "您确定要审核通过",
+  "yueDeGongShiBaoGaoMa": "月的工时报告吗?",
+  "shenHeChengGong": "审核成功!"
 }

+ 4 - 19
fhKeeper/formulahousekeeper/timesheet/src/views/centerManage/centerManage.vue

@@ -1,15 +1,15 @@
 <template>
     <section>
-        <el-select v-model="value" filterable placeholder="请选择" :filter-method="aabbcc()">
+        <el-select v-model="value" filterable :placeholder="$t('defaultText.pleaseChoose')" :filter-method="aabbcc()">
             <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
             </el-option>
         </el-select>
         <el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
             <el-form :inline="true">
                 <el-form-item :label="user.timeType.customDegreeName + $t('guan-li')">
-                    <el-input placeholder="请输入关键名称" v-model.trim="searchNameVal" clearable class="input-with-select"
+                    <el-input :placeholder="$t('qing-shu-ru-guan-jian-ming-cheng')" v-model.trim="searchNameVal" clearable class="input-with-select"
                         style="margin-left: 50px" @keyup.enter.native="searchName()">
-                        <el-button slot="append" @click="searchName()">搜索</el-button>
+                        <el-button slot="append" @click="searchName()">{{ $t('sou-suo') }}</el-button>
                     </el-input>
                 </el-form-item>
 
@@ -121,22 +121,7 @@ export default {
             subProjectList: [],//子项目列表
             subProjectListArr: [], // 备用列表
             searchNameVal: '',
-            options: [{
-                value: '选项1',
-                label: '黄金糕'
-            }, {
-                value: '选项2',
-                label: '双皮奶'
-            }, {
-                value: '选项3',
-                label: '蚵仔煎'
-            }, {
-                value: '选项4',
-                label: '龙须面'
-            }, {
-                value: '选项5',
-                label: '北京烤鸭'
-            }],
+            options: [],
             value: ''
         };
     },

+ 25 - 25
fhKeeper/formulahousekeeper/timesheet/src/views/contract/index.vue

@@ -46,7 +46,7 @@
           ></el-date-picker>
         </el-form-item>
         <el-form-item>
-          <span style="margin-left:5px;margin-right:5px;color:#606266;">下笔回款日期</span>
+          <span style="margin-left:5px;margin-right:5px;color:#606266;">{{ $t('xia-bi-hui-kuan-ri-qi') }}</span>
           <el-date-picker
             style="width:240px;"
             v-model="paymentDate"
@@ -81,30 +81,30 @@
     <el-table :data="contractList" v-loading="listLoading" :height="tableHeight" border highlight-current-row>
       <el-table-column prop="number" :label="$t('contractno')" min-width="190"></el-table-column>
       <el-table-column prop="name" :label="$t('he-tong-ming-cheng')" min-width="190"></el-table-column>
-      <el-table-column prop="amounts" :label="$t('contractamount')" min-width="130" align="right" header-align="center">
+      <el-table-column prop="amounts" :label="$t('contractamount')" min-width="135" align="right" header-align="center">
         <span slot-scope="scope">¥ {{scope.row.amounts ? scope.row.amounts.toFixed(2) : '0.00'}}</span>
       </el-table-column>
-      <el-table-column prop="payment" label="已回款金额" min-width="130" align="right" header-align="center">
+      <el-table-column prop="payment" :label="$t('yi-hui-kuan-jin-e')" min-width="140" align="right" header-align="center">
         <span slot-scope="scope">¥ {{scope.row.payment ? scope.row.payment.toFixed(2) : '0.00'}}</span>
       </el-table-column>
-      <el-table-column prop="payment" label="已回款进度" min-width="130" align="right" header-align="center">
+      <el-table-column prop="payment" :label="$t('yi-hui-kuan-jin-du')" min-width="170" align="right" header-align="center">
         <span slot-scope="scope">{{scope.row.payment ? (100*scope.row.payment/scope.row.amounts).toFixed(1) + '%': '0%'}}</span>
       </el-table-column>
-      <el-table-column prop="nextPaymentDate" label="下笔回款日期" min-width="130" align="right" header-align="center">
+      <el-table-column prop="nextPaymentDate" :label="$t('xia-bi-hui-kuan-ri-qi')" min-width="170" align="right" header-align="center">
         <span slot-scope="scope">{{scope.row.nextPaymentDate ? scope.row.nextPaymentDate : '-'}}</span>
       </el-table-column>
-      <el-table-column prop="nextPaymentAmount" label="下笔回款金额" min-width="130" align="right" header-align="center">
+      <el-table-column prop="nextPaymentAmount" :label="$t('xia-bi-hui-kuan-jin-e')" min-width="120" align="right" header-align="center">
         <span slot-scope="scope">{{scope.row.nextPaymentAmount?'¥'+scope.row.nextPaymentAmount.toFixed(2) : '-'}}</span>
       </el-table-column>
       
       <el-table-column prop="typeName" :label="$t('he-tong-lei-xing')" min-width="140" align="center"></el-table-column>
-      <el-table-column prop="status" :label="$t('state.states')" min-width="100" align="center">
+      <el-table-column prop="status" :label="$t('state.states')" min-width="120" align="center">
         <template slot-scope="scope">
           <span :style="statusList[scope.row.status].color">{{statusList[scope.row.status].label}}</span>
         </template>
       </el-table-column>
-      <el-table-column prop="indate" :label="$t('creationtime')" min-width="100" align="center"></el-table-column>
-      <el-table-column width="300" :label="$t('operation')" align="left" fixed="right">
+      <el-table-column prop="indate" :label="$t('creationtime')" min-width="130" align="center"></el-table-column>
+      <el-table-column width="340" :label="$t('operation')" align="left" fixed="right">
         <template slot-scope="scope">
           <el-button v-if="permissions.contractView || permissions.contractManagement" size="mini" @click="lookover(scope.row)">{{$t('cha-kan')}}</el-button>
           <el-button v-if="permissions.contractManagement" size="mini" @click="editContract(scope.row)" type="primary">{{$t('bian-ji')}}</el-button>
@@ -131,7 +131,7 @@
         <el-form ref="contractForm" :model="contractForm" :rules="rules" label-width="120px" class="contractForm">
           <el-form-item :label="$t('contractno')">
             <el-input v-model="contractForm.number" :disabled="contractForm.status == 0" :maxlength="50" style="width:260px;" show-word-limit :placeholder="$t('peaseenterthe')" clearable @input="searchProject"></el-input>
-            <span style="margin-left:20px;">关联项目</span>
+            <span style="margin-left:20px;">{{ $t('rselatedprojects') }}</span>
             <el-select v-model="contractForm.projectId" filterable clearable style="width:300px;" :disabled="contractForm.status == 0">
               <el-option v-for="item in projectList" :key="item.id" :label="item.projectName  + '\u3000' + (item.projectCode == null?'':item.projectCode)" :value="item.id" >
                     <span style="float: left; color: #8492a6; font-size: 13px;">{{ item.projectCode }}</span>
@@ -176,23 +176,23 @@
           <el-form-item :label="$t('bei-zhu')">
             <el-input v-model="contractForm.remarks" :disabled="contractForm.status == 0" :placeholder="$t('peaseenterthe')" type="textarea" :rows="3" clearable></el-input>
           </el-form-item>
-          <el-form-item label="回款计划">
+          <el-form-item :label="$t('hui-kuan-ji-hua')">
             <el-table :data="contractPaymentList" size="small" :key="Math.random()" :height="'300px'" show-header="false" style="margin-top:10px;">
                   <el-table-column prop="isPayed" >
                       <template slot-scope="scope">
-                          <el-checkbox v-model="scope.row.isPayed" >已回款</el-checkbox>
+                          <el-checkbox v-model="scope.row.isPayed" >{{ $t('yi-hui-kuan') }}</el-checkbox>
                       </template>
                       <template slot="header" >
-                          <span style="font-size:14px;font-weight:normal;">是否已回款</span>
+                          <span style="font-size:14px;font-weight:normal;">{{ $t('shi-fou-yi-hui-kuan') }}</span>
                       </template>
                   </el-table-column>
-                  <el-table-column prop="payDate"  label="回款日期" width="210">
+                  <el-table-column prop="payDate"  :label="$t('hui-kuan-ri-qi')" width="210">
                       <template slot-scope="scope">
                           <div><el-date-picker type="date" v-model="scope.row.payDate" style="width:200px;" :placeholder="$t('optiondate')" value-format="yyyy-MM-dd"></el-date-picker></div>
                       </template>
                   </el-table-column>
                   
-                  <el-table-column prop="amount" label="回款金额">
+                  <el-table-column prop="amount" :label="$t('hui-kuan-jin-e')">
                       <template slot-scope="scope">
                         <el-input v-model="scope.row.amount" :id="'payment_amount'+scope.$index" :placeholder="$t('peaseenterthe')" maxlength="10" clearable>
                           <span slot="prefix">¥</span>
@@ -290,23 +290,23 @@
           <el-form-item style="width:100%" :label="$t('bei-zhu')">
             {{contractForm.remarks}}
           </el-form-item>
-          <el-form-item style="width:100%" label="回款计划">
+          <el-form-item style="width:100%" :label="$t('hui-kuan-ji-hua')">
             <el-table :data="contractPaymentList" size="small" :key="Math.random()" :height="'300px'" show-header="false" style="margin-top:10px;">
                   <el-table-column prop="isPayed" >
                       <template slot-scope="scope">
-                        {{ scope.row.isPayed?'已回款':'未回款' }}
+                        {{ scope.row.isPayed?$t('yi-hui-kuan'):$t('wei-hui-kuan') }}
                       </template>
                       <template slot="header" >
-                          <span style="font-size:14px;font-weight:normal;">是否已回款</span>
+                          <span style="font-size:14px;font-weight:normal;">{{ $t('shi-fou-yi-hui-kuan') }}</span>
                       </template>
                   </el-table-column>
-                  <el-table-column prop="payDate"  label="回款日期" width="210">
+                  <el-table-column prop="payDate"  :label="$t('hui-kuan-ri-qi')" width="210">
                       <template slot-scope="scope">
                           <div>{{ scope.row.payDate }}</div>
                       </template>
                   </el-table-column>
                   
-                  <el-table-column prop="amount" label="回款金额">
+                  <el-table-column prop="amount" :label="$t('hui-kuan-jin-e')">
                       <template slot-scope="scope">
                         <div>{{ scope.row.amount }}</div>
                       </template>
@@ -650,7 +650,7 @@ export default {
     typeItemAdd(){
       if(this.typeList.length == 20){
         this.$message({
-          message: '合同类型最多只能创建20个',
+          message: this.$t('he-tong-lei-xing-zui-duo-zhi-neng-chuang-jian-20-ge'),
           type: 'error'
         })
         return
@@ -823,7 +823,7 @@ export default {
           status: status
         }
       }
-      this.$confirm('确认审核通过吗,通过后合同基本信息无法修改', this.$t('other.prompts'), {
+      this.$confirm(this.$t('que-ren-shen-he-tong-guo-ma-tong-guo-hou-he-tong-ji-ben-xin-xi-wu-fa-xiu-gai'), this.$t('other.prompts'), {
         confirmButtonText: this.$t('btn.determine'),
         cancelButtonText: this.$t('btn.cancel'),
         type: 'warning'
@@ -893,14 +893,14 @@ export default {
           for (var i = 0; i < this.contractPaymentList.length; i++) {
             if (!this.contractPaymentList[i].payDate) {
               this.$message({
-                message: '回款日期不能为空',
+                message: this.$t('hui-kuan-ri-qi-bu-neng-wei-kong'),
                 type: 'error'
               })
               return;
             }
             if (!this.contractPaymentList[i].amount) {
               this.$message({
-                message: '回款金额不能为0',
+                message: this.$t('hui-kuan-jinebu-neng-wei-0'),
                 type: 'error'
               })
               return;
@@ -909,7 +909,7 @@ export default {
           }
           if (totalPayment > parseFloat(this.contractForm.amounts)) {
             this.$message({
-                message: '总回款金额不得大于合同金额',
+                message: this.$t('zong-hui-kuan-jinebu-de-da-yu-he-tong-jin-e'),
                 type: 'error'
               })
               return;

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

@@ -37,18 +37,18 @@
                   <el-menu-item index="1-15" v-if="permissions.reportMonthlyPersonnel || permissions.reportResponsiblePersonnel" @click="ssl(14)"><p>{{ $t('ren-yuan-yue-du-gong-shi-biao') }}</p></el-menu-item>
                   <el-menu-item index="1-16" v-if="permissions.reportAllDepartmentParticipation || permissions.reportResponsibleDepartmentParticipation" @click="ssl(15)"><p>{{ $t('bumenchanyuqingkuang') }}</p></el-menu-item>
                   <el-menu-item index="1-17" v-if="permissions.reportPhaseHours || permissions.reportStageWorkingTime" @click="ssl(16)"><p>{{ $t('xiang-mu-ge-fen-zu-yu-jie-duan-gong-shi-biao') }}</p></el-menu-item>
-                  <el-menu-item index="1-18" v-if="permissions.reportAllManhourCost || permissions.reportResponsibleManhourCost" @click="ssl(17)"><p>子项目工时成本表</p></el-menu-item>
-                  <el-menu-item index="1-19" v-if="user.timeType.restartTaskNeedReason == 1" @click="ssl(18)"><p>任务重启表</p></el-menu-item>
-                  <el-menu-item index="1-20" v-if="permissions.reportFTEAll || permissions.reportFTEPart" @click="ssl(19)"><p>FTE报表</p></el-menu-item>
-                  <el-menu-item index="1-21" v-if="permissions.reportEfficent"  @click="ssl(20)"><p>有效工时率表</p></el-menu-item>
-                  <el-menu-item index="1-22" v-if="permissions.reportSortScaleTable" @click="ssl(21)"><p>项目分类工时占比表</p></el-menu-item>
-                  <el-menu-item index="1-23" v-if="permissions.reportSortDetailTable || permissions.reportSortSectionDetailTable" @click="ssl(22)"><p>分类工时明细表</p></el-menu-item>
-                  <el-menu-item index="1-24" v-if="permissions.reportStaffProject" @click="ssl(23)"><p>员工项目进度表</p></el-menu-item>
-                  <el-menu-item index="1-25" v-if="permissions.reportProjectConsumptionFirst" @click="ssl(24)"><p>分组耗用进度表</p></el-menu-item>
-                  <el-menu-item index="1-26" v-if="permissions.reportProjectConsumptionTwo" @click="ssl(25)"><p>项目耗用进度表</p></el-menu-item>
-                  <el-menu-item index="1-27" v-if="permissions.reportStaffTaskAccomplished" @click="ssl(26)"><p>员工任务进度表</p></el-menu-item>
-                  <el-menu-item index="1-28" v-if="permissions.reportProjectEstimated" @click="ssl(27)"><p>项目预估工时表</p></el-menu-item>
-                  <el-menu-item index="1-29" v-if="permissions.takCompletedStatus" @click="ssl(28)"><p>员工任务完成情况表</p></el-menu-item>
+                  <el-menu-item index="1-18" v-if="permissions.reportAllManhourCost || permissions.reportResponsibleManhourCost" @click="ssl(17)"><p>{{ $t('ziXiangMuGongShiChengBenBiao') }}</p></el-menu-item>
+                  <el-menu-item index="1-19" v-if="user.timeType.restartTaskNeedReason == 1" @click="ssl(18)"><p>{{ $t('renWuZhongQiBiao') }}</p></el-menu-item>
+                  <el-menu-item index="1-20" v-if="permissions.reportFTEAll || permissions.reportFTEPart" @click="ssl(19)"><p>{{ $t('fteBaoBiao') }}</p></el-menu-item>
+                  <el-menu-item index="1-21" v-if="permissions.reportEfficent"  @click="ssl(20)"><p>{{ $t('youXiaoGongShiShuaiBiao') }}</p></el-menu-item>
+                  <el-menu-item index="1-22" v-if="permissions.reportSortScaleTable" @click="ssl(21)"><p>{{ $t('xiangMuFenLeiGongShiZhanBiBiao') }}</p></el-menu-item>
+                  <el-menu-item index="1-23" v-if="permissions.reportSortDetailTable || permissions.reportSortSectionDetailTable" @click="ssl(22)"><p>{{ $t('fenLeiGongShiMingXiBiao') }}</p></el-menu-item>
+                  <el-menu-item index="1-24" v-if="permissions.reportStaffProject" @click="ssl(23)"><p>{{ $t('yuanGongXiangMuJinDuBiao') }}</p></el-menu-item>
+                  <el-menu-item index="1-25" v-if="permissions.reportProjectConsumptionFirst" @click="ssl(24)"><p>{{ $t('fenZuHaoYongJinDuBiao') }}</p></el-menu-item>
+                  <el-menu-item index="1-26" v-if="permissions.reportProjectConsumptionTwo" @click="ssl(25)"><p>{{ $t('xiangMuHaoYongJinDuBiao') }}</p></el-menu-item>
+                  <el-menu-item index="1-27" v-if="permissions.reportStaffTaskAccomplished" @click="ssl(26)"><p>{{ $t('yuanGongRenWuJinDuBiao') }}</p></el-menu-item>
+                  <el-menu-item index="1-28" v-if="permissions.reportProjectEstimated" @click="ssl(27)"><p>{{ $t('xiangMuYuGuGongShiBiao') }}</p></el-menu-item>
+                  <el-menu-item index="1-29" v-if="permissions.takCompletedStatus" @click="ssl(28)"><p>{{ $t('yuanGongRenWuWanChengQingKuangBiao') }}</p></el-menu-item>
                 </el-submenu>
               </el-menu>
           </el-col>
@@ -94,9 +94,9 @@
         <template v-if="ins == 22">
           <span>
             <span class="demonstration" style="color:#999;padding:0 10px">
-              项目分类
+              {{ $t('projectclassification') }} 
             </span>
-            <el-select v-model="projectSortId" placeholder="请选择" @change="picks()" size="small">
+            <el-select v-model="projectSortId" :placeholder="$t('defaultText.pleaseChoose')" @change="picks()" size="small">
               <el-option v-for="item in projectSortList" :key="item.id" :label="item.name" :value="item.id" ></el-option>
             </el-select>
           </span>
@@ -104,9 +104,9 @@
         <template v-if="ins == 25">
           <span>
             <span class="demonstration" style="color:#999;padding:0 10px">
-              项目分类
+              {{ $t('projectclassification') }} 
             </span>
-            <el-select v-model="projectSortIdTwo" placeholder="请选择" @change="picks()" size="small" clearable>
+            <el-select v-model="projectSortIdTwo" :placeholder="$t('defaultText.pleaseChoose')" @change="picks()" size="small" clearable>
               <el-option v-for="item in projectSortListTwo" :key="item.id" :label="item.name" :value="item.id" ></el-option>
             </el-select>
           </span>
@@ -127,15 +127,15 @@
         </el-select>
 
         <!-- 任务分组 -->
-        <el-select v-if="ins == 1 && user.companyId == '3092'" v-model="projectGroupId" :placeholder="'请选择任务分组'" clearable filterable size="small" @change="getList(true)" style="margin-left:10px">
+        <el-select v-if="ins == 1 && user.companyId == '3092'" v-model="projectGroupId" :placeholder="$t('defaultText.pleaseSelectaTaskGroup')" clearable filterable size="small" @change="getList(true)" style="margin-left:10px">
           <el-option v-for="(item) in projectTaskgroupList" :key="item.id" :label="item.name" :value="item.id"></el-option>
         </el-select>
 
-        <el-select v-if="ins==12 && user.companyId==936" v-model="projectCategorySubId" :placeholder="'请选择自主项目类别'" clearable filterable size="small" @change="selcts()" style="margin-left:10px">
+        <el-select v-if="ins==12 && user.companyId==936" v-model="projectCategorySubId" :placeholder="$t('qingXuanZeZiZhuXiangMuLeiBie')" clearable filterable size="small" @change="selcts()" style="margin-left:10px">
           <el-option v-for="(item) in projectCategorySubList" :key="item.value" :label="item.label" :value="item.value"></el-option>
         </el-select>
         <!--项目分组与阶段工时表,需要可选分组-->
-        <el-select v-if="ins == 16" multiple v-model="groupNames" @change="onGroupSelectChange" clearable size="small" filterable collapse-tags placeholder="请选择任务分组" style="margin-left:10px;">
+        <el-select v-if="ins == 16" multiple v-model="groupNames" @change="onGroupSelectChange" clearable size="small" filterable collapse-tags :placeholder="$t('defaultText.pleaseSelectaTaskGroup')" style="margin-left:10px;">
           <el-option v-for="item in taskgroupList" :key="item.name" :label="item.name" :value="item.name"></el-option>
         </el-select>
         <!-- 月份选择 v-if="ins == 14 || ins == 15 || ins == 19" -->
@@ -180,7 +180,7 @@
             <el-option v-for="(item, index) in selUserList" :key="index" :label="item.name" :value="item.id"></el-option>
           </el-select>
           <!-- 人员兹自定义配置 员工类型筛选 只针对优立科技 -->
-          <el-select v-if="user.companyId==4374&&ins == 21" v-model="subUserCustomName" :placeholder="'请选择员工类型'" clearable filterable size="small" @change="selcts()" style="margin-left:10px">
+          <el-select v-if="user.companyId==4374&&ins == 21" v-model="subUserCustomName" :placeholder="$t('qingXuanZeYuanGongLeiXing')" clearable filterable size="small" @change="selcts()" style="margin-left:10px">
             <el-option v-for="(item) in subUserCustom" :key="item.id" :label="item.name" :value="item.name">
             </el-option>
           </el-select>
@@ -201,9 +201,9 @@
       <!-- <p :style="ins == 9 ? 'float: right;margin-right: 25px;width:20%' : 'float: right;margin-right: 25px;width:10%'" > -->
       <p :style="`${ins == 9 || ins == 14 || ins == 21 ? 'width: 20%' : 'width: 10%'}`" class="tableRightBtn">
         <el-button type="primary" @click="exportExcel" size="mini">{{ $t('reporderived') }}</el-button>
-        <el-button type="primary" @click="fillAll" size="mini" v-if="ins == 14">全部补足</el-button>
+        <el-button type="primary" @click="fillAll" size="mini" v-if="ins == 14">{{ $t('quanBuBuZu') }}</el-button>
         <el-button type="primary" @click="exportExcelByQuarter" size="mini" v-if="ins == 9 && user.companyId == 876">{{ $t('an-ji-du-dao-chu') }}</el-button>
-        <el-button type="primary" @click="setWarning" size="mini" v-if="ins == 21">设置预警</el-button>
+        <el-button type="primary" @click="setWarning" size="mini" v-if="ins == 21">{{ $t('sheZhiYuJing') }}</el-button>
       </p>
       
     </div>
@@ -274,7 +274,7 @@
                     <span v-else>{{scope.row.customName}}</span>
                   </template>
                 </el-table-column>
-                <el-table-column v-if="user.companyId==3092" prop="groupName" :label="'任务分组'"  width="300">
+                <el-table-column v-if="user.companyId==3092" prop="groupName" :label="$t('other.taskGroup')"  width="300">
                   <template slot-scope="scope" >
                     {{scope.row.groupName}}
                   </template>
@@ -307,7 +307,7 @@
                         <font :style="'color:'+(scope.row.real_hours > scope.row.plan_hours?'red':'')">{{scope.row.real_hours == null? 0:scope.row.real_hours.toFixed(1)}}</font>
                     </template>
                 </el-table-column>
-                <el-table-column prop="real_cost" label="实际成本"  width="150" v-if="user.companyId == 3092 || user.companyId==7 || user.companyId==10">
+                <el-table-column prop="real_cost" :label="$t('shiJiChengBen')"  width="150" v-if="user.companyId == 3092 || user.companyId==7 || user.companyId==10">
                    <template slot-scope="scope">
                         {{scope.row.real_cost == null? 0:scope.row.real_cost.toFixed(2)}}
                     </template>
@@ -328,12 +328,12 @@
                     </template>
                 </el-table-column>
                 <span v-if="user.companyId == '3092'">
-                  <el-table-column prop="group_plan_hours" :label="'分组预估工时(h)'"  width="150">
+                  <el-table-column prop="group_plan_hours" :label="$t('fenZuYuGuGongShiH')"  width="150">
                       <template slot-scope="scope">
                           {{scope.row.group_plan_hours}}
                       </template>
                   </el-table-column>
-                  <el-table-column prop="group_real_hours" :label="'分组实际工时(h)'"  width="150">
+                  <el-table-column prop="group_real_hours" :label="$t('fenZuShiJiGongShiH')"  width="150">
                       <template slot-scope="scope">
                           {{scope.row.group_real_hours}}
                       </template>
@@ -402,7 +402,7 @@
                     </template>
                 </el-table-column>
                 <!--开通合同管理模块的显示已回款金额-->
-                <el-table-column prop="payment" label="已回款金额" width="100" align="right" v-if="user.company.packageContract==1">
+                <el-table-column prop="payment" :label="$t('yi-hui-kuan-jin-e')" width="100" align="right" v-if="user.company.packageContract==1">
                   <template slot-scope="scope">
                         {{scope.row.payment.toFixed(2)}}
                     </template>
@@ -425,22 +425,22 @@
                         {{(scope.row.budget).toFixed(2)}}
                     </template>
                 </el-table-column>
-                <el-table-column  label="已回款利润"  width="100" align="right" v-if="user.company.packageContract == 1">
+                <el-table-column  :label="$t('yiHuiKuanLiRun')"  width="100" align="right" v-if="user.company.packageContract == 1">
                   <template slot-scope="scope">
                         {{((scope.row.payment==null?0:scope.row.payment) - (scope.row.budget)).toFixed(2)}}
                     </template>
                 </el-table-column>
-                <el-table-column  label="已回款利润率"  width="120" align="right" v-if="user.company.packageContract==1">
+                <el-table-column  :label="$t('yiHuiKuanLiRunShuai')"  width="120" align="right" v-if="user.company.packageContract==1">
                   <template slot-scope="scope">
                         {{(scope.row.payment==null||scope.row.payment==0)?'-':((scope.row.payment - scope.row.budget)*100/scope.row.payment).toFixed(1)+"%"}}
                     </template>
                 </el-table-column>
-                <el-table-column  label="合同利润"  width="100" align="right">
+                <el-table-column  :label="$t('heTongLiRun')"  width="100" align="right">
                   <template slot-scope="scope">
                         {{((scope.row.contractAmount==null?0:scope.row.contractAmount) - scope.row.budget).toFixed(2)}}
                     </template>
                 </el-table-column>
-                <el-table-column  label="合同利润率"  width="100" align="right">
+                <el-table-column  :label="$t('heTongLiRunShuai')"  width="100" align="right">
                   <template slot-scope="scope">
                         {{(scope.row.contractAmount==null||scope.row.contractAmount==0)?'-':((scope.row.contractAmount - scope.row.budget)*100/scope.row.contractAmount).toFixed(1)+"%"}}
                     </template>
@@ -884,7 +884,7 @@
                       type="primary" 
                       v-if="scope.row.whether == 0 && scope.row.workingTime > 0"
                       size="mini"
-                      @click="fillWorkingHours(scope.row)">补足工时</el-button>
+                      @click="fillWorkingHours(scope.row)">{{ $t('buZuGongShi') }}</el-button>
                     </div>
                   </template>
                 </el-table-column>
@@ -932,21 +932,21 @@
 
             <!-- 子项目工时成本表 -->
             <el-table v-if="ins == 17"  key="17" border :data="subprojectArr" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;">
-                <el-table-column align="center" prop="projectCode" label="父项目编号" min-width="150"></el-table-column>
-                <el-table-column align="center" prop="projectName" label="父项目名称" min-width="150"></el-table-column>
-                <el-table-column align="center" prop="subProjectCode" label="子项目编号" min-width="150"></el-table-column>
-                <el-table-column align="center" prop="subProjectName" label="子项目名称" min-width="150"></el-table-column>
-                <el-table-column align="center" prop="workingTime" label="子项目工时" min-width="150"></el-table-column>
-                <el-table-column align="center" prop="cost" label="子项目成本" min-width="150"></el-table-column>
+                <el-table-column align="center" prop="projectCode" :label="$t('fuXiangMuBianHao')" min-width="150"></el-table-column>
+                <el-table-column align="center" prop="projectName" :label="$t('fuXiangMuMingCheng')" min-width="150"></el-table-column>
+                <el-table-column align="center" prop="subProjectCode" :label="$t('subprojectno')" min-width="150"></el-table-column>
+                <el-table-column align="center" prop="subProjectName" :label="$t('ziXiangMuMingCheng')" min-width="150"></el-table-column>
+                <el-table-column align="center" prop="workingTime" :label="$t('ziXiangMuGongShi')" min-width="150"></el-table-column>
+                <el-table-column align="center" prop="cost" :label="$t('ziXiangMuChengBen')" min-width="150"></el-table-column>
             </el-table>
 
             <!-- 任务重启表 -->
             <el-table v-if="ins == 18"  key="18" border :data="taskRestartArr" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;">
-                <el-table-column align="center" prop="projectCode" label="项目编号" min-width="150"></el-table-column>
-                <el-table-column align="center" prop="projectName" label="项目名称" min-width="150"></el-table-column>
-                <el-table-column align="center" prop="taskName" label="任务名称" min-width="150"></el-table-column>
-                <el-table-column align="center" prop="restartReason" label="重启原因" min-width="150"></el-table-column>
-                <el-table-column align="center" prop="workingTime" label="责任人" min-width="150">
+                <el-table-column align="center" prop="projectCode" :label="$t('Itemno')" min-width="150"></el-table-column>
+                <el-table-column align="center" prop="projectName" :label="$t('headerTop.projectName')" min-width="150"></el-table-column>
+                <el-table-column align="center" prop="taskName" :label="$t('nameofthetask')" min-width="150"></el-table-column>
+                <el-table-column align="center" prop="restartReason" :label="$t('zhongQiYuanYin')" min-width="150"></el-table-column>
+                <el-table-column align="center" prop="workingTime" :label="$t('zeRenRen')" min-width="150">
                   <template slot-scope="scope">
                     <div>
                       <span v-for="item, index in scope.row.personLiableNames" :key="index">
@@ -959,15 +959,15 @@
                     </div>
                   </template>
                 </el-table-column>
-                <el-table-column align="center" prop="restartDate" label="重启时间" min-width="150"></el-table-column>
+                <el-table-column align="center" prop="restartDate" :label="$t('zhongQiShiJian')" min-width="150"></el-table-column>
             </el-table>
 
             <!-- FTE报表 -->
             <el-table v-if="ins == 19"  key="19" border :data="fTEDataList" highlight-current-row v-loading="listLoading" :height="+tableHeight - 1" style="width: 100%;" @sort-change="tableSort">
                 <el-table-column align="center" prop="area" :label="customName" min-width="150"></el-table-column>
-                <el-table-column align="center" prop="projectCode" label="项目编号" min-width="150"></el-table-column>
-                <el-table-column align="center" prop="projectName" label="项目名称" min-width="250"></el-table-column>
-                <el-table-column align="center" prop="userName" label="人名" min-width="150" sortable="custom">
+                <el-table-column align="center" prop="projectCode" :label="$t('Itemno')" min-width="150"></el-table-column>
+                <el-table-column align="center" prop="projectName" :label="$t('headerTop.projectName')" min-width="250"></el-table-column>
+                <el-table-column align="center" prop="userName" :label="$t('renMing')" min-width="150" sortable="custom">
                   <template slot-scope="scope">
                     <div>
                       <span v-if="user.userNameNeedTranslate == '1'">
@@ -979,14 +979,14 @@
                     </div>
                   </template>
                 </el-table-column>
-                <el-table-column align="center" prop="workTime" label="工时" min-width="150"></el-table-column>
-                <el-table-column align="center" prop="FTE" label="FTE(工时/当月工时基数)" min-width="250"></el-table-column>
-                <el-table-column v-if="user.companyId==876" align="center" prop="FTERegular" label="FTE(工时/固定工时基数(163.125))" min-width="300"></el-table-column>
+                <el-table-column align="center" prop="workTime" :label="$t('time.workingHours')" min-width="150"></el-table-column>
+                <el-table-column align="center" prop="FTE" :label="$t('fteGongShiDangYueGongShiJiShu')" min-width="250"></el-table-column>
+                <el-table-column v-if="user.companyId==876" align="center" prop="FTERegular" :label="$t('fteGongShiGuDingGongShiJiShu_163125')" min-width="300"></el-table-column>
             </el-table>
 
             <!-- 有效工时率表 -->
             <el-table  v-if="ins == 20" key="20" border :data="efficentList" highlight-current-row v-loading="listLoading" :height="+tableHeight - 1" style="width: 100%;" >
-                <el-table-column align="center" prop="department_name" label="所属部门" min-width="150">
+                <el-table-column align="center" prop="department_name" :label="$t('subordinatedepartments')" min-width="150">
                   <template slot-scope="scope">
                     <div>
                       <span v-if="user.userNameNeedTranslate == '1'">
@@ -998,19 +998,19 @@
                     </div>
                   </template>
                 </el-table-column>
-                <el-table-column align="center" prop="working_time" label="实报工时(小时)" min-width="150"></el-table-column>
-                <el-table-column align="center" label="应工时(小时)" >
-                    <el-table-column align="center" prop="count" label="在职人数" min-width="150"></el-table-column>
-                    <el-table-column align="center" prop="date_count" label="应报工时天数" min-width="150"></el-table-column>
-                    <el-table-column align="center" prop="day_time" label="日标准工时" min-width="150"></el-table-column>
-                    <el-table-column align="center" prop="total_time" label="应报工时" min-width="150"></el-table-column>
+                <el-table-column align="center" prop="working_time" :label="$t('shiBaoGongShiXiaoShi')" min-width="150"></el-table-column>
+                <el-table-column align="center" :label="$t('yingGongShiXiaoShi')" >
+                    <el-table-column align="center" prop="count" :label="$t('zaiZhiRenShu')" min-width="150"></el-table-column>
+                    <el-table-column align="center" prop="date_count" :label="$t('yingBaoGongShiTianShu')" min-width="150"></el-table-column>
+                    <el-table-column align="center" prop="day_time" :label="$t('riBiaoZhunGongShi')" min-width="150"></el-table-column>
+                    <el-table-column align="center" prop="total_time" :label="$t('yingBaoGongShi')" min-width="150"></el-table-column>
                 </el-table-column>
-                <el-table-column align="center" prop="rate" label="有效工时率" min-width="150"></el-table-column>
+                <el-table-column align="center" prop="rate" :label="$t('youXiaoGongShiShuai')" min-width="150"></el-table-column>
             </el-table>
 
             <!-- 项目分类工时占比表 -->
             <el-table  v-if="ins == 21" :key="projectCateRatioListKey" border :data="projectCateRatioList.userList" highlight-current-row v-loading="listLoading" :height="(+tableHeight + 50) - 1" style="width: 100%;" >
-              <el-table-column align="center" prop="name" label="人员" min-width="150" fixed="left">
+              <el-table-column align="center" prop="name" :label="$t('ren-yuan')" min-width="150" fixed="left">
                 <template slot-scope="scope">
                   <div>
                     <span v-if="user.userNameNeedTranslate == '1'">
@@ -1022,14 +1022,14 @@
                   </div>
                 </template>
               </el-table-column>
-              <el-table-column v-if="user.companyId==4374" align="center" prop="name" label="员工类型" min-width="150" fixed="left">
+              <el-table-column v-if="user.companyId==4374" align="center" prop="name" :label="$t('yuanGongLeiXing')" min-width="150" fixed="left">
                 <template slot-scope="scope">
                     <span>
-                      {{findValue('员工类型',scope.row.plateMap)}}
+                      {{findValue($t('yuanGongLeiXing'),scope.row.plateMap)}}
                     </span>
                 </template>
               </el-table-column>
-              <el-table-column align="center" prop="workingTime" label="总工时" min-width="150">
+              <el-table-column align="center" prop="workingTime" :label="$t('other.totalworkinghours')" min-width="150">
                 <template slot-scope="scope">
                   {{ scope.row.workingTime }} h
                 </template>
@@ -1038,12 +1038,12 @@
                 <template slot-scope="scope">
                   <div v-for="v,i in scope.row.cateTimeList || []" :key="i">
                     <div v-if="item.name == v.categoryName && v.categoryName" :style="`color: ${v.warning ? 'red' : ''}`">
-                      <div>工时: {{ v.workingTime }} h </div>
-                      <div>占比: {{ v.percent | schedulePercentage }} % </div>
+                      <div>{{ $t('time.workingHours') }}: {{ v.workingTime }} h </div>
+                      <div>{{ $t('Accountedfor') }} : {{ v.percent | schedulePercentage }} % </div>
                     </div>
                     <div v-if="!v.categoryName && item.name == '未分类'" :style="`color: ${v.warning ? 'red' : ''}`">
-                      <div>工时: {{ v.workingTime }} h </div>
-                      <div>占比: {{ v.percent | schedulePercentage }} % </div>
+                      <div>{{ $t('time.workingHours') }} : {{ v.workingTime }} h </div>
+                      <div>{{ $t('Accountedfor') }} : {{ v.percent | schedulePercentage }} % </div>
                     </div>
                   </div>
                 </template>
@@ -1052,8 +1052,8 @@
 
             <!-- 分类工时明细表 -->
             <el-table  v-if="ins == 22" :key="hoursDetailClassListKey" border :data="hoursDetailClassList.record" highlight-current-row v-loading="listLoading" :height="+tableHeight -1" style="width: 100%;" >
-              <el-table-column align="center" prop="projectCode" :label="`${projectSortName}项目号`" min-width="150"></el-table-column>
-              <el-table-column align="center" prop="userName" label="姓名" min-width="150">
+              <el-table-column align="center" prop="projectCode" :label="`${projectSortName} ${$t('xiangMuHao')}`" min-width="150"></el-table-column>
+              <el-table-column align="center" prop="userName" :label="$t('lable.name')" min-width="150">
                 <template slot-scope="scope">
                   <div>
                     <span v-if="user.userNameNeedTranslate == '1'">
@@ -1065,7 +1065,7 @@
                   </div>
                 </template>
               </el-table-column>
-              <el-table-column align="center" prop="deptName" label="部门" min-width="150">
+              <el-table-column align="center" prop="deptName" :label="$t('lable.department')" min-width="150">
                 <template slot-scope="scope">
                   <div>
                     <span v-if="user.userNameNeedTranslate == '1'">
@@ -1087,8 +1087,8 @@
                 </template>
               </el-table-column>
 
-              <el-table-column align="center" prop="allWorkingTime" label="总工时" min-width="150"></el-table-column>
-              <el-table-column align="center" prop="targetWorkingTime" :label="`${projectSortName}工时`" min-width="150"></el-table-column>
+              <el-table-column align="center" prop="allWorkingTime" :label="$t('other.totalworkinghours')" min-width="150"></el-table-column>
+              <el-table-column align="center" prop="targetWorkingTime" :label="`${projectSortName} ${$t('time.workingHours')}`" min-width="150"></el-table-column>
 
               <!-- 渲染日期 -->
               <el-table-column align="center" :label="item.titleName" min-width="150" v-for="(item, index) in hoursDetailClassList.header" :key="index">
@@ -1105,7 +1105,7 @@
 
             <!-- 员工项目进度表 -->
             <el-table  v-if="ins == 23" :key="23" border :data="isbeCustomReport.projectSchedule" highlight-current-row v-loading="listLoading" :height="(+tableHeight) - 1" style="width: 100%;" :span-method="objectSpanMethod">
-              <el-table-column align="center" prop="departmentName" label="部门" width="150">
+              <el-table-column align="center" prop="departmentName" :label="$t('lable.department')" width="150">
                 <template slot-scope="scope">
                   <div>
                     <span v-if="user.userNameNeedTranslate == '1'">
@@ -1118,7 +1118,7 @@
                   </div>
                 </template>
               </el-table-column>
-              <el-table-column align="center" prop="userName" label="人员" width="150">
+              <el-table-column align="center" prop="userName" :label="$t('ren-yuan')" width="150">
                 <template slot-scope="scope">
                   <div>
                     <span v-if="user.userNameNeedTranslate == '1'">
@@ -1131,15 +1131,15 @@
                   </div>
                 </template>
               </el-table-column>
-              <el-table-column align="center" prop="projectName" label="项目名称"></el-table-column>
-              <el-table-column align="center" prop="projectCode" label="项目编号"></el-table-column>
-              <el-table-column align="center" prop="residueTime" label="剩余工时(h)" width="150"></el-table-column>
+              <el-table-column align="center" prop="projectName" :label="$t('headerTop.projectName')"></el-table-column>
+              <el-table-column align="center" prop="projectCode" :label="$t('Itemno')"></el-table-column>
+              <el-table-column align="center" prop="residueTime" :label="$t('shengYuGongShiH')" width="150"></el-table-column>
             </el-table>
 
             <!-- 分组耗用进度表 -->
             <el-table  v-if="ins == 24" :key="24" border :data="isbeCustomReport.consumptionSchedule" highlight-current-row v-loading="listLoading" :height="(+tableHeight - 0) - 1" style="width: 100%;" :span-method="objectSpanMethod">
-              <el-table-column align="center" prop="projectName" label="项目名称" min-width="200"></el-table-column>
-              <el-table-column align="center" prop="department_name" label="负责部门" min-width="150">
+              <el-table-column align="center" prop="projectName" :label="$t('headerTop.projectName')" min-width="200"></el-table-column>
+              <el-table-column align="center" prop="department_name" :label="$t('fuZeBuMen')" min-width="150">
                 <template slot-scope="scope">
                   <div>
                     <span v-if="user.userNameNeedTranslate == '1'">
@@ -1152,30 +1152,30 @@
                   </div>
                 </template>
               </el-table-column>
-              <el-table-column align="center" prop="groupName" label="任务分组" min-width="150"></el-table-column>
-              <el-table-column align="center" prop="planHour" label="计划工时(财务)" width="120"></el-table-column>
-              <el-table-column align="center" label="实际工时成本">
-                <el-table-column align="center" prop="afterSetPlanHour" label="增补工时(h)" width="120"></el-table-column>
-                <el-table-column align="center" prop="normalHour" label="正常工时(h)" width="100"></el-table-column>
-                <el-table-column align="center" prop="overHour" label="加班工时(h)" width="100"></el-table-column>
-                <el-table-column align="center" prop="realHour" label="合计工时(h)" width="100"></el-table-column>
-                <el-table-column align="center" prop="realCost" label="合计工时成本" width="140"></el-table-column>
+              <el-table-column align="center" prop="groupName" :label="$t('lable.taskGrouping')" min-width="150"></el-table-column>
+              <el-table-column align="center" prop="planHour" :label="$t('jiHuaGongShiCaiWu')" width="120"></el-table-column>
+              <el-table-column align="center" :label="$t('shiJiGongShiChengBen')">
+                <el-table-column align="center" prop="afterSetPlanHour" :label="$t('zengBuGongShiH')" width="120"></el-table-column>
+                <el-table-column align="center" prop="normalHour" :label="$t('zhengChangGongShiH')" width="100"></el-table-column>
+                <el-table-column align="center" prop="overHour" :label="$t('jiaBanGongShiH')" width="100"></el-table-column>
+                <el-table-column align="center" prop="realHour" :label="$t('heJiGongShiH')" width="100"></el-table-column>
+                <el-table-column align="center" prop="realCost" :label="$t('heJiGongShiChengBen')" width="140"></el-table-column>
               </el-table-column>
-              <el-table-column align="center" prop="process" label="工时耗用率" width="150"></el-table-column>
+              <el-table-column align="center" prop="process" :label="$t('gongShiHaoYongShuai')" width="150"></el-table-column>
             </el-table>
 
             <!-- 项目耗用进度表 -->
             <el-table  v-if="ins == 25" :key="25" border :data="isbeCustomReport.consumptionScheduleTwo" highlight-current-row v-loading="listLoading" :height="(+tableHeight) - 1" style="width: 100%;" >
-              <el-table-column align="center" prop="projectName" label="项目名称" min-width="220"></el-table-column>
-              <el-table-column align="center" prop="categoryName" label="项目分类" min-width="150"></el-table-column>
-              <el-table-column align="center" prop="projectCode" label="项目编号" min-width="150"></el-table-column>
-              <el-table-column align="center" prop="planStartDate" label="开始时间" min-width="150"></el-table-column>
-              <el-table-column align="center" prop="planEndDate" label="截止时间" min-width="150"></el-table-column>
-              <el-table-column align="center" prop="planHour" label="分配工时(h)" width="100"></el-table-column>
-              <el-table-column align="center" prop="realHour" label="已消耗工时(h)" width="120"></el-table-column>
-              <el-table-column align="center" prop="realCost" label="已消耗工时成本(¥)" width="150"></el-table-column>
-              <el-table-column align="center" prop="residueHour" label="剩余工时(h)" width="100"></el-table-column>
-              <el-table-column align="center"  label="负责组长" width="100">
+              <el-table-column align="center" prop="projectName" :label="$t('headerTop.projectName')" min-width="220"></el-table-column>
+              <el-table-column align="center" prop="categoryName" :label="$t('projectclassification')" min-width="150"></el-table-column>
+              <el-table-column align="center" prop="projectCode" :label="$t('Itemno')" min-width="150"></el-table-column>
+              <el-table-column align="center" prop="planStartDate" :label="$t('starttimes')" min-width="150"></el-table-column>
+              <el-table-column align="center" prop="planEndDate" :label="$t('deadline')" min-width="150"></el-table-column>
+              <el-table-column align="center" prop="planHour" :label="$t('fenPeiGongShiH')" width="100"></el-table-column>
+              <el-table-column align="center" prop="realHour" :label="$t('yiXiaoHaoGongShiH')" width="120"></el-table-column>
+              <el-table-column align="center" prop="realCost" :label="$t('yiXiaoHaoGongShiChengBen')" width="150"></el-table-column>
+              <el-table-column align="center" prop="residueHour" :label="$t('shengYuGongShiH')" width="100"></el-table-column>
+              <el-table-column align="center"  :label="$t('fuZeZuChang')" width="100">
                 <template slot-scope="scope">
                   <div class="participatingEmployee">
                     <div v-for="(item,index) in scope.row.teamLeader" :key="index">
@@ -1190,7 +1190,7 @@
                   </div>
                 </template>
               </el-table-column>
-              <el-table-column align="center" label="参与员工" min-width="150">
+              <el-table-column align="center" :label="$t('canYuYuanGong')" min-width="150">
                 <template slot-scope="scope">
                   <div class="participatingEmployee">
                     <div v-for="(item,index) in scope.row.userProgress" :key="index">
@@ -1211,7 +1211,7 @@
 
             <!-- 员工任务进度表 -->
             <el-table  v-if="ins == 26" :key="26" border :data="isbeCustomReport.taskCompletionSheet" highlight-current-row v-loading="listLoading" :height="(+tableHeight) - 1" style="width: 100%;" :span-method="objectSpanMethod">
-              <el-table-column align="center" prop="departmentName" label="部门" min-width="150">
+              <el-table-column align="center" prop="departmentName" :label="$t('lable.department')" min-width="150">
                 <template slot-scope="scope">
                   <div>
                     <span v-if="user.userNameNeedTranslate == '1'">
@@ -1224,7 +1224,7 @@
                   </div>
                 </template>
               </el-table-column>
-              <el-table-column align="center" prop="w" label="人员" min-width="150">
+              <el-table-column align="center" prop="w" :label="$t('ren-yuan')" min-width="150">
                 <template slot-scope="scope">
                   <div>
                     <span v-if="user.userNameNeedTranslate == '1'">
@@ -1237,27 +1237,27 @@
                   </div>
                 </template>
               </el-table-column>
-              <el-table-column align="center" prop="projectName" label="项目名称" min-width="150"></el-table-column>
-              <el-table-column align="center" prop="projectCode" label="项目编号" min-width="150"></el-table-column>
-              <el-table-column align="center" prop="taskName" label="项目任务" min-width="150"></el-table-column>
-              <el-table-column align="center" prop="planHour" label="计划工时(h)" min-width="150"></el-table-column>
-              <el-table-column align="center" prop="consumeTime" label="消耗工时(h)" min-width="150"></el-table-column>
-              <el-table-column align="center" prop="residue" label="剩余工时(h)" min-width="150"></el-table-column>
-              <el-table-column align="center" prop="planStartDate" label="项目开始时间" min-width="150"></el-table-column>
-              <el-table-column align="center" prop="planEndDate" label="项目截止时间" min-width="150"></el-table-column>
+              <el-table-column align="center" prop="projectName" :label="$t('headerTop.projectName')" min-width="150"></el-table-column>
+              <el-table-column align="center" prop="projectCode" :label="$t('Itemno')" min-width="150"></el-table-column>
+              <el-table-column align="center" prop="taskName" :label="$t('xiangMuRenWu')" min-width="150"></el-table-column>
+              <el-table-column align="center" prop="planHour" :label="$t('jiHuaGongShiH')" min-width="150"></el-table-column>
+              <el-table-column align="center" prop="consumeTime" :label="$t('xiaoHaoGongShiH')" min-width="150"></el-table-column>
+              <el-table-column align="center" prop="residue" :label="$t('shengYuGongShiH')" min-width="150"></el-table-column>
+              <el-table-column align="center" prop="planStartDate" :label="$t('xiangMuKaiShiShiJian')" min-width="150"></el-table-column>
+              <el-table-column align="center" prop="planEndDate" :label="$t('xiangMuJieZhiShiJian')" min-width="150"></el-table-column>
             </el-table>
 
              <!-- 项目预估工时表 -->
              <el-table  v-if="ins == 27" key="27" border :data="projectEstimatedWorkData" highlight-current-row v-loading="listLoading"  :height="+tableHeight - 1" style="width: 100%;" :span-method="objectSpanMethod">
-              <el-table-column align="center" prop="projectName" label="项目名称" min-width="150"></el-table-column>
-              <el-table-column align="center" prop="groupName" label="分组名称" min-width="150"></el-table-column>
-              <el-table-column align="center" prop="estimatedWorkTime" label="预估工时" min-width="150"></el-table-column>
-              <el-table-column align="center" prop="workTime" label="实际工时" min-width="150"></el-table-column>
+              <el-table-column align="center" prop="projectName" :label="$t('headerTop.projectName')" min-width="150"></el-table-column>
+              <el-table-column align="center" prop="groupName" :label="$t('groupname')" min-width="150"></el-table-column>
+              <el-table-column align="center" prop="estimatedWorkTime" :label="$t('yuGuGongShi')" min-width="150"></el-table-column>
+              <el-table-column align="center" prop="workTime" :label="$t('shi-ji-gong-shi')" min-width="150"></el-table-column>
             </el-table>
 
             <!-- 员工任务完成情况表 -->
             <el-table  v-if="ins == 28" key="28" border :data="taskCompletedData" highlight-current-row v-loading="listLoading"  :height="+tableHeight - 1" style="width: 100%;" :span-method="objectSpanMethod">
-              <el-table-column align="center" prop="userName" label="员工" min-width="150">
+              <el-table-column align="center" prop="userName" :label="$t('yuanGong')" min-width="150">
                 <template slot-scope="scope">
                   <div>
                     <span v-if="user.userNameNeedTranslate == '1'">
@@ -1269,7 +1269,7 @@
                   </div>
                 </template>
               </el-table-column>
-              <el-table-column align="center" prop="deptName" label="部门" min-width="150">
+              <el-table-column align="center" prop="deptName" :label="$t('lable.department')" min-width="150">
                 <template slot-scope="scope">
                   <div>
                     <span v-if="user.userNameNeedTranslate == '1'">
@@ -1281,13 +1281,13 @@
                   </div>
                 </template>
               </el-table-column>
-              <el-table-column align="center" prop="allNum" label="任务总数量" min-width="150"></el-table-column>
-              <el-table-column align="center" prop="completedNum" label="已完成数量" min-width="150"></el-table-column>
-              <el-table-column align="center" prop="noCompletedNum" label="未完成数量" min-width="150"></el-table-column>
-              <el-table-column align="center" prop="noCompletedPercent" label="未完成率" min-width="150"></el-table-column>
-              <el-table-column align="center" prop="onTimeNum" label="按时完成数量" min-width="150"></el-table-column>
-              <el-table-column align="center" prop="noOnTimeNum" label="延迟完成数量" min-width="150"></el-table-column>
-              <el-table-column align="center" prop="onTimePercent" label="按时完成率" min-width="150"></el-table-column>
+              <el-table-column align="center" prop="allNum" :label="$t('renWuZongShuLiang')" min-width="150"></el-table-column>
+              <el-table-column align="center" prop="completedNum" :label="$t('yiWanChengShuLiang')" min-width="150"></el-table-column>
+              <el-table-column align="center" prop="noCompletedNum" :label="$t('weiWanChengShuLiang')" min-width="150"></el-table-column>
+              <el-table-column align="center" prop="noCompletedPercent" :label="$t('weiWanChengShuai')" min-width="150"></el-table-column>
+              <el-table-column align="center" prop="onTimeNum" :label="$t('anShiWanChengShuLiang')" min-width="150"></el-table-column>
+              <el-table-column align="center" prop="noOnTimeNum" :label="$t('yanChiWanChengShuLiang')" min-width="150"></el-table-column>
+              <el-table-column align="center" prop="onTimePercent" :label="$t('anShiWanChengShuai')" min-width="150"></el-table-column>
             </el-table>
         <!--工具条-->
         <el-col :span="24" class="toolbar" v-if="ins != 6 && ins != 20 && ins != 21">
@@ -1372,7 +1372,7 @@
             </div>
         </el-dialog>
         <el-dialog :title="curProject.projectName+'-'+$t('detailsofreimbursementexpenses')" show-summary=true v-if="detailVisible" :summary-method="getSummaries" :visible.sync="detailVisible" :close-on-click-modal="false" customClass="customWidth" width="1000px">
-        <div><el-button size="mini" @click="exportExpenseDetail" style="float:right" type="primary">导出</el-button></div>
+        <div><el-button size="mini" @click="exportExpenseDetail" style="float:right" type="primary">{{ $t('export.export') }}</el-button></div>
         <el-table  :key="ins" border :data="detailList" highlight-current-row v-loading="detailListLoading" :height="500" style="width: 100%;">
                 <el-table-column  prop="username" :label="$t('screening.employeename')"  >
                   <template slot-scope="scope" >
@@ -1424,7 +1424,7 @@
                         {{(scope.row.amount-scope.row.taxValue).toFixed(2)}}
                     </template>
                 </el-table-column>
-                <el-table-column prop="remark" label="备注">
+                <el-table-column prop="remark" :label="$t('bei-zhu')">
                   <template slot-scope="scope">
                     <el-tooltip popper-class="tipclass" :content=scope.row.remark placement="top-start">
                       <div class="cloStyleFour">{{scope.row.remark==null?"":scope.row.remark.length > 6?scope.row.remark.substring(0,5) + "...": scope.row.remark}}</div>
@@ -1506,19 +1506,19 @@
         </el-dialog>
 
         <!-- 设置预警弹窗 -->
-        <el-dialog title="设置预警" :visible.sync="setWarningModal" width="600px" :before-close="handleClose">
+        <el-dialog :title="$t('sheZhiYuJing')" :visible.sync="setWarningModal" width="600px" :before-close="handleClose">
           <div>
             <el-form ref="warningFrom" :model="warningFrom" label-width="120px">
-              <el-form-item label="提醒分类:">
-                <el-select v-model="warningFrom.monitorCategoryId" placeholder="请选择提醒分类">
+              <el-form-item :label="$t('tiXingFenLei')">
+                <el-select v-model="warningFrom.monitorCategoryId" :placeholder="$t('qingXuanZeTiXingFenLei')">
                   <el-option v-for="item in projectCateRatioList.categoryList" :key="item.id" :label="item. name" :value="item.id"></el-option>
                 </el-select>
               </el-form-item>
-              <el-form-item label="选择关系:">
-                <el-radio v-model="warningFrom.moreOrLess" :label="0">低于</el-radio>
-                <el-radio v-model="warningFrom.moreOrLess" :label="1">高于</el-radio>
+              <el-form-item :label="$t('xuanZeGuanXi')">
+                <el-radio v-model="warningFrom.moreOrLess" :label="0">{{ $t('diYu') }}</el-radio>
+                <el-radio v-model="warningFrom.moreOrLess" :label="1">{{ $t('gaoYu') }}</el-radio>
               </el-form-item>
-              <el-form-item label="设置占比:">
+              <el-form-item :label="$t('sheZhiZhanBi')">
                 <div class="sliderSetup">
                   <el-slider v-model="warningFrom.ratio" style="width: 340px"></el-slider>
                   <div class="text">{{ warningFrom.ratio }} %</div>
@@ -1527,13 +1527,13 @@
             </el-form>
           </div>
           <span slot="footer" class="dialog-footer">
-            <el-button @click="setWarningModal = false">取 消</el-button>
-            <el-button type="primary" @click="setForewarning()" :loading="warningTableLoading">确 定</el-button>
+            <el-button @click="setWarningModal = false">{{ $t('quXiao') }}</el-button>
+            <el-button type="primary" @click="setForewarning()" :loading="warningTableLoading">{{ $t('queDing') }}</el-button>
           </span>
         </el-dialog>
         <!-- 员工任务数据弹窗 -->
         <el-dialog
-          title="员工任务数据"
+          :title="$t('yuanGongRenWuShuJu')"
           :visible.sync="showUserTaskDialog"
           width="80%"
           top="8.1vh"
@@ -1541,7 +1541,7 @@
           <div>
             <div class="pagingTable">
               <el-table  border :data="userTaskData" highlight-current-row height="50vh" v-loading="userTasklistLoading" style="width: 100%;" >
-                <el-table-column align="center" prop="executorNames" label="执行人" min-width="150">
+                <el-table-column align="center" prop="executorNames" :label="$t('zhi-hang-ren')" min-width="150">
                   <template slot-scope="scope">
                     <div>
                       <span v-if="user.userNameNeedTranslate == '1'">
@@ -1553,11 +1553,11 @@
                     </div>
                   </template>
                 </el-table-column>
-                <el-table-column align="center" prop="taskName" label="任务名称" min-width="150"></el-table-column>
-                <el-table-column align="center" prop="stateValue" label="当前状态" min-width="150"></el-table-column>
-                <el-table-column align="center" prop="startDate" label="开始日期" min-width="150"></el-table-column>
-                <el-table-column align="center" prop="endDate" label="截止日期" min-width="150"></el-table-column>
-                <el-table-column align="center" prop="finishDate" label="完成日期" min-width="150"></el-table-column>
+                <el-table-column align="center" prop="taskName" :label="$t('nameofthetask')" min-width="150"></el-table-column>
+                <el-table-column align="center" prop="stateValue" :label="$t('dangQianZhuangTai')" min-width="150"></el-table-column>
+                <el-table-column align="center" prop="startDate" :label="$t('time.startDate')" min-width="150"></el-table-column>
+                <el-table-column align="center" prop="endDate" :label="$t('expirationdate')" min-width="150"></el-table-column>
+                <el-table-column align="center" prop="finishDate" :label="$t('wanChengRiQi')" min-width="150"></el-table-column>
               </el-table>
             </div>
         
@@ -1658,15 +1658,15 @@ 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('bumenchanyuqingkuang'), this.$t('ge-fen-zu-yu-jie-duan-gong-shi-biao'), '子项目工时成本表', '任务重启表', 'FTE报表', '有效工时率表', '项目分类工时占比表', '分类工时明细表',
-      '员工项目进度表', '分组耗用进度表', '项目耗用进度表', '员工任务进度表', '项目预估工时表','员工任务完成情况表'],
+      this.$t('ren-yuan-yue-du-gong-shi-biao'), this.$t('bumenchanyuqingkuang'), this.$t('ge-fen-zu-yu-jie-duan-gong-shi-biao'), this.$t('ziXiangMuGongShiChengBenBiao'), this.$t('renWuZhongQiBiao'), this.$t('fteBaoBiao'), this.$t('youXiaoGongShiShuaiBiao'), this.$t('xiangMuFenLeiGongShiZhanBiBiao'), $t('fenLeiGongShiMingXiBiao'),
+      this.$t('yuanGongXiangMuJinDuBiao'), this.$t('fenZuHaoYongJinDuBiao'), this.$t('xiangMuHaoYongJinDuBiao'), this.$t('yuanGongRenWuJinDuBiao'), this.$t('xiangMuYuGuGongShiBiao'),this.$t('yuanGongRenWuWanChengQingKuangBiao')],
 
       shuzArr: [this.$t('projectreport'),this.$t('projectTaskReport'),this.$t('projectcoststatement'),
       this.$t('projectbalancesheet'),this.$t('customerprojectincomestatement'),this.$t('projectphasetimesheet'),
       this.$t('statisticsofovertimework'),this.$t('timecostearlywarningtable'),this.$t('personneltimeallocationtable'),
       this.$t('employeereporttimelinessrate'),this.$t('dailyreporttobereviewedstatistics'),this.$t('statisticsofpersonnelhours'),this.$t('taskgrouptimesheet'),this.$t('projectcostbaselinetable'),
-      this.$t('ren-yuan-yue-du-gong-shi-biao'), this.$t('bumenchanyuqingkuang'), this.$t('ge-fen-zu-yu-jie-duan-gong-shi-biao'), '子项目工时成本表', '任务重启表', 'FTE报表','有效工时率表', '项目分类工时占比表', '分类工时明细表',
-      '员工项目进度表', '分组耗用进度表', '项目耗用进度表', '员工任务进度表', '项目预估工时表','员工任务完成情况表'],
+      this.$t('ren-yuan-yue-du-gong-shi-biao'), this.$t('bumenchanyuqingkuang'), this.$t('ge-fen-zu-yu-jie-duan-gong-shi-biao'), this.$t('ziXiangMuGongShiChengBenBiao'), this.$t('renWuZhongQiBiao'), this.$t('fteBaoBiao'),this.$t('youXiaoGongShiShuaiBiao'), this.$t('xiangMuFenLeiGongShiZhanBiBiao'), this.$t('fenLeiGongShiMingXiBiao'),
+      this.$t('yuanGongXiangMuJinDuBiao'), this.$t('fenZuHaoYongJinDuBiao'), this.$t('xiangMuHaoYongJinDuBiao'), this.$t('yuanGongRenWuJinDuBiao'), this.$t('xiangMuYuGuGongShiBiao'),this.$t('yuanGongRenWuWanChengQingKuangBiao')],
 
       ins: 10000,
       user: JSON.parse(sessionStorage.user),
@@ -1749,19 +1749,19 @@ export default {
       projectCategorySubList:[
           {
               value: 1,
-              label: '纯软件项目'
+              label: this.$t('softwareproject')
           },
           {
               value: 2,
-              label: '纯硬件项目'
+              label: this.$t('hardwareproject')
           },
           {
               value: 3,
-              label: '集成项目'
+              label: this.$t('integrationproject')
           },
           {
               value: 4,
-              label: '服务项目'
+              label: this.$t('fuWuXiangMu')
           }
       ],
       projectCategorySubId:'',
@@ -1973,7 +1973,7 @@ export default {
       res => {
           if (res.code == "ok") {
               this.customName = res.data
-              this.customNameChoose = "请选择" + res.data
+              this.customNameChoose = this.$t('defaultText.pleaseChoose') + res.data
           } else {
               this.$message({
                 message: res.msg,
@@ -2122,7 +2122,7 @@ export default {
             if (res.code == "ok") {
                 var filePath = res.data;
                 const a = document.createElement('a'); // 创建a标签
-                a.setAttribute('download', '费用报销明细表.xlsx');// download属性
+                a.setAttribute('download', this.$t('feiYongBaoXiaoMingXiBiaoXlsx'));// download属性
                 a.setAttribute('href', filePath);// href链接
                 a.click(); //自执行点击事件
                 a.remove();
@@ -2408,30 +2408,30 @@ export default {
           sl.endDate = this.rangeDatas[1]
           sl.projectId = this.proJuctId
         } else if(this.ins == 17) {
-          fName = '子项目工时成本表' + '.xlsx'
+          fName = this.$t('ziXiangMuGongShiChengBenBiao') + '.xlsx'
           url += "/exportSubProjectTimeCost"
           sl.startDate = this.rangeDatas[0]
           sl.endDate = this.rangeDatas[1]
         } else if(this.ins == 18) {
-          fName = '任务重启表' + '.xlsx'
+          fName = this.$t('renWuZhongQiBiao') + '.xlsx'
           url = "/task-restart/exportTaskRestartList"
           sl.startDate = this.rangeDatas[0]
           sl.endDate = this.rangeDatas[1]
           sl.projectId = this.proJuctId
           sl.personLiableId = this.userId
         } else if(this.ins == 19) {
-          fName = 'FTE报表' + '.xlsx'
+          fName = this.$t('fteBaoBiao') + '.xlsx'
           url += "/exportFTEData"
           sl.monthStart= this.monthRange[0]+"-01"
           sl.monthEnd= this.monthRange[1]+"-01"
           sl.area = this.areaName || null
         }else if(this.ins == 20) {
-          fName = '有效工时率表' + '.xlsx'
+          fName = this.$t('youXiaoGongShiShuaiBiao') + '.xlsx'
           url = "/project/exportEffectiveLaborHourRate"
           sl.startDate = this.rangeDatas[0]
           sl.endDate = this.rangeDatas[1]
         }else if(this.ins == 21) {
-          fName = '项目分类工时占比表' + '.xlsx'
+          fName = this.$t('xiangMuFenLeiGongShiZhanBiBiao') + '.xlsx'
           url = "/project/exportMembProjectCateRatio"
           sl.onlyShowWarning=0
           sl.startDate = this.rangeDatas[0]
@@ -2439,26 +2439,26 @@ export default {
           sl.departmentId = this.departmentIdArray.length > 0 ? this.departmentIdArray[this.departmentIdArray.length - 1] : ''
           sl.subUserCustomName = this.subUserCustomName ? this.subUserCustomName: null
         } else if(this.ins == 22) {
-          fName = '分类工时明细表' + '.xlsx'
+          fName = this.$t('fenLeiGongShiMingXiBiao') + '.xlsx'
           url = "/report/exportUserWorkTimeByCategory"
           sl.categoryId = this.projectSortId
           sl.startDate = this.rangeDatas[0]
           sl.endDate = this.rangeDatas[1]
         } else if(this.ins == 23) {
-          fName = '员工项目进度表' + '.xlsx'
+          fName = this.$t('yuanGongXiangMuJinDuBiao') + '.xlsx'
           url = "/project/exportUserProjectProcessList"
           let dept = this.departmentIdArray[this.departmentIdArray.length - 1]
           this.proJuctId ? sl.projectId = this.proJuctId : ''
           this.userId ? sl.userId = this.userId : ''
           dept ? sl.deptId = dept : ''
         } else if(this.ins == 24) {
-          fName = '分组耗用进度表' + '.xlsx'
+          fName = this.$t('fenZuHaoYongJinDuBiao') + '.xlsx'
           url = "/project/exportGroupExpendProcessList"
           this.proJuctId ? sl.projectId = this.proJuctId : ''
           sl.startDate = this.rangeDatas[0]
           sl.endDate = this.rangeDatas[1]
         } else if(this.ins == 25) {
-          fName = '项目耗用进度表' + '.xlsx'
+          fName = this.$t('xiangMuHaoYongJinDuBiao') + '.xlsx'
           url = "/project/exportProjectExpendProcessList"
           sl.startDate = this.rangeDatas[0]
           sl.endDate = this.rangeDatas[1]
@@ -2466,7 +2466,7 @@ export default {
           this.userId ? sl.userId = this.userId : ''
           this.projectSortIdTwo ? sl.categoryId = this.projectSortIdTwo : ''
         } else if(this.ins == 26) {
-          fName = '员工任务进度表' + '.xlsx'
+          fName = this.$t('yuanGongRenWuJinDuBiao') + '.xlsx'
           url = "/project/exportUserTaskProcessList"
           let dept = this.departmentIdArray[this.departmentIdArray.length - 1]
           this.proJuctId ? sl.projectId = this.proJuctId : ''
@@ -2475,11 +2475,11 @@ export default {
           sl.startDate = this.rangeDatas[0]
           sl.endDate = this.rangeDatas[1]
         }else if(this.ins == 27) {
-          fName = '项目预估工时表' + '.xlsx'
+          fName = this.$t('xiangMuYuGuGongShiBiao') + '.xlsx'
           url = "/project/exportProjectEstimatedWorkTime"
           this.proJuctId ? sl.projectId = this.proJuctId : ''
         }else if(this.ins == 28) {
-          fName = '员工任务完成情况表' + '.xlsx'
+          fName = this.$t('yuanGongRenWuWanChengQingKuangBiao') + '.xlsx'
           url = "/task/exportUserTaskCompleteDetail"
           let dept = this.departmentIdArray[this.departmentIdArray.length - 1]
           this.userId ? sl.userId = this.userId : ''
@@ -2519,7 +2519,7 @@ export default {
             res => {
                 if (res.code == "ok") {
                     var filePath = res.data;
-                    var fName = this.$t('personnelfillingtimelyratestatistics') + '(' + this.quarterParameter.year + this.$t('di') + this.quarterParameter.quarter  + '季度).xlsx'
+                    var fName = this.$t('personnelfillingtimelyratestatistics') + '(' + this.quarterParameter.year + this.$t('di') + this.quarterParameter.quarter  + this.$t('jiDuXlsx')
                     const a = document.createElement('a'); // 创建a标签
                     a.setAttribute('download', fName);// download属性
                     a.setAttribute('href', filePath);// href链接
@@ -2601,7 +2601,7 @@ export default {
     },
     // 获取人员自定义 员工类型下的下拉数据
     getSubUserCustom() {
-      this.http.post('/sub-user-custom/listWithName',{userCustomName:'员工类型'},
+      this.http.post('/sub-user-custom/listWithName',{userCustomName:this.$t('yuanGongLeiXing')},
       res => {
           if (res.code == "ok") {
               this.subUserCustom=res.data
@@ -2689,7 +2689,7 @@ export default {
         const sums = [];
         columns.forEach((column, index) => {
           if (index === 0) {
-            sums[index] = '总工时';
+            sums[index] = this.$t('other.totalworkinghours');
             return;
           }
           const values = data.map(item => Number(item[column.property]));
@@ -3886,7 +3886,7 @@ export default {
       let { categoryList, userList } = data
       categoryList.push({
         id: 999999,
-        name: '未分类'
+        name: this.$t('weiFenLei')
       })
       this.listLoading = false
       this.projectCateRatioList = {
@@ -3961,9 +3961,9 @@ export default {
     async getProjectSort() {
       let { data } = await this.postData('/project-category/list', {})
       let dataList = data || []
-      dataList.push({id: 0, name: '未分类'})
+      dataList.push({id: 0, name: this.$t('weiFenLei')})
       this.projectSortList = dataList
-      this.projectSortListTwo = dataList.filter((item) => item.name != '报价项目' &&  item.name != '售后报价项目' && item.name != '研发项目' && item.name != '未分类')
+      this.projectSortListTwo = dataList.filter((item) => item.name != this.$t('baoJiaXiangMu') &&  item.name != this.$t('shouHouBaoJiaXiangMu') && item.name != this.$t('yanFaXiangMu') && item.name != this.$t('weiFenLei'))
       this.projectSortId = dataList[0].id
       this.projectSortName = dataList[0].name
     },

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

@@ -16,7 +16,7 @@
                 <el-form-item style="float:right;">
                     <el-link type="primary" :underline="false" @click="handleAdd(-1,null)">{{ $t('newcustomer') }}</el-link>
                     <el-link type="primary" :underline="false" @click="intocustomerRatio">{{ $t('importingCustomersinBatches') }}</el-link>
-                    <el-link type="primary" :underline="false" @click="exportData()">{{'导出'}}</el-link>
+                    <el-link type="primary" :underline="false" @click="exportData()">{{ $t('export.export') }}</el-link>
                 </el-form-item>
             </el-form>
         </el-col>
@@ -582,7 +582,7 @@
                     if (res.code == "ok") {
                         var filePath = res.data;
                         const a = document.createElement('a'); // 创建a标签
-                        a.setAttribute('download', '客户列表.xlsx');// download属性
+                        a.setAttribute('download', this.$t('keHuLieBiaoXlsx'));// download属性
                         a.setAttribute('href', filePath);// href链接
                         a.click(); //自执行点击事件
                         a.remove();

+ 32 - 32
fhKeeper/formulahousekeeper/timesheet/src/views/desktop/detail.vue

@@ -4,14 +4,14 @@
     <el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
       <el-form :inline="true">
         <el-form-item>
-          <el-button type="text" @click="backToList" icon="el-icon-back" class="back">返回</el-button>
+          <el-button type="text" @click="backToList" icon="el-icon-back" class="back">{{ $t('fan-hui') }}</el-button>
         </el-form-item>
         <el-form-item class="divLine"></el-form-item>
         <el-form-item>
           <span class="workName">{{uName}} / {{date}}</span>
         </el-form-item>
         <el-form-item style="float:right;">
-          今日工作时长:
+          {{ $t('jinRiGongZuoShiChang') }} 
           <span class="workHours">{{uHours}}h</span>
         </el-form-item>
       </el-form>
@@ -139,7 +139,7 @@ export default {
       this.myChart = myChart;
       var option = {
         title: {
-          text: "工作时长分配",
+          text: this.$t('gongZuoShiChangFenPei'),
           left: "left"
         },
         tooltip: {
@@ -153,17 +153,17 @@ export default {
           top: 30,
           bottom: 20,
           data: [
-            "研发",
-            "上网",
-            "文档",
-            "设计",
+            this.$t('yanFa'),
+            this.$t('shangWang'),
+            this.$t('wenDang'),
+            this.$t('sheJi'),
             // "美工",
             // "运营",
-            "看小说",
-            "影视娱乐",
+            this.$t('kanXiaoShuo'),
+            this.$t('yingShiYuLe'),
             // "听音乐",
-            "聊天",
-            "其他工作"
+            this.$t('liaoTian'),
+            this.$t('qiTaGongZuo')
           ]
         },
         toolbox: {
@@ -181,19 +181,19 @@ export default {
         },
         series: [
           {
-            name: "时长(单位:h)",
+            name: this.$t('shiChangDanWeiH'),
             type: "pie",
             radius: [30, 110],
             roseType: "area",
             data: [
-              { value: (this.timeList[1] / 3600).toFixed(2), name: "研发" },
-              { value: (this.timeList[2] / 3600).toFixed(2), name: "上网" },
-              { value: (this.timeList[3] / 3600).toFixed(2), name: "文档" },
-              { value: (this.timeList[4] / 3600).toFixed(2), name: "设计" },
-              { value: (this.timeList[7] / 3600).toFixed(2), name: "看小说" },
-              { value: (this.timeList[8] / 3600).toFixed(2), name: "影视娱乐" },
-              { value: (this.timeList[10] / 3600).toFixed(2), name: "聊天" },
-              { value: (this.timeList[0] / 3600).toFixed(2), name: "其他工作" }
+              { value: (this.timeList[1] / 3600).toFixed(2), name: this.$t('yanFa') },
+              { value: (this.timeList[2] / 3600).toFixed(2), name: this.$t('shangWang') },
+              { value: (this.timeList[3] / 3600).toFixed(2), name: this.$t('wenDang') },
+              { value: (this.timeList[4] / 3600).toFixed(2), name: this.$t('sheJi') },
+              { value: (this.timeList[7] / 3600).toFixed(2), name: this.$t('kanXiaoShuo') },
+              { value: (this.timeList[8] / 3600).toFixed(2), name: this.$t('yingShiYuLe') },
+              { value: (this.timeList[10] / 3600).toFixed(2), name: this.$t('liaoTian') },
+              { value: (this.timeList[0] / 3600).toFixed(2), name: this.$t('qiTaGongZuo') }
             ]
           }
         ]
@@ -209,29 +209,29 @@ export default {
     converType(type) {
       switch (type) {
         case 0:
-          return "其他工作";
+          return this.$t('qiTaGongZuo');
         case 1:
-          return "研发";
+          return this.$t('yanFa');
         case 2:
-          return "上网";
+          return this.$t('shangWang');
         case 3:
-          return "文档";
+          return this.$t('wenDang');
         case 4:
-          return "设计";
+          return this.$t('sheJi');
         case 5:
-          return "美工";
+          return this.$t('meiGong');
         case 6:
-          return "运营";
+          return this.$t('yunYing');
         case 7:
-          return "看小说";
+          return this.$t('kanXiaoShuo');
         case 8:
-          return "影视娱乐";
+          return this.$t('yingShiYuLe');
         case 9:
-          return "听音乐";
+          return this.$t('tingYinLe');
         case 10:
-          return "聊天";
+          return this.$t('liaoTian');
         default:
-          return "未知";
+          return this.$t('weiZhi');
       }
     }
   },

+ 17 - 17
fhKeeper/formulahousekeeper/timesheet/src/views/desktop/index.vue

@@ -16,12 +16,12 @@
                         @change="getDesktopList"
                         :clearable="false"
                         type="date"
-                        placeholder="选择日期"
+                        :placeholder="this.$t('optiondate')"
                     ></el-date-picker>
                 </el-form-item>
                 <el-form-item style="float:right;">
-                    <span style="color:#aaa;font-size:12px;">(员工安装客户端,领导即可查看工作桌面远程监管)</span>
-                    <el-link type="primary" :underline="false" href="http://gsgj.ttkuaiban.com/download.html" target="_blank">客户端下载</el-link>
+                    <span style="color:#aaa;font-size:12px;">{{ $t('yuanGongAnZhuangKeHuDuanLingDaoJiKeChaKanGongZuoZhuoMianYuanChengJianGuan') }}</span>
+                    <el-link type="primary" :underline="false" href="http://gsgj.ttkuaiban.com/download.html" target="_blank">{{ $t('keHuDuanXiaZai') }}</el-link>
                 </el-form-item>
             </el-form>
         </el-col>
@@ -29,7 +29,7 @@
         <!-- 卡片列表 -->
         <div>
             <el-col :span="24" v-if="desktopList.length == 0" style="padding: 200px 0;text-align:center;cursor:pointer">
-                <el-link :underline="false" type="primary" @click="getHavePic">今日暂无截图,点击查看近期</el-link>
+                <el-link :underline="false" type="primary" @click="getHavePic">{{ $t('jinRiZanWuJieTuDianJiChaKanJinQi') }}</el-link>
             </el-col>
             <el-col :span="6" v-for="(item, index) in desktopList" :key="index" class="one_div">
                 <el-card :body-style="{ padding: '0px' }" shadow="hover" class="one_card">
@@ -41,7 +41,7 @@
                     </el-image>
                     <div :id="'over'+index" class="over">
                     <el-button type="primary" plain @click.native="jumpTo(item.id)">
-                        <i class="fa fa-link"></i> 所有截图
+                        <i class="fa fa-link"></i> {{ $t('suoYouJieTu') }}
                     </el-button>
                     </div>
                 </div>
@@ -149,29 +149,29 @@
             converType(type) {
                 switch (type) {
                     case 0:
-                    return "其他工作";
+                    return this.$t('qiTaGongZuo');
                     case 1:
-                    return "研发";
+                    return this.$t('yanFa');
                     case 2:
-                    return "上网";
+                    return this.$t('shangWang');
                     case 3:
-                    return "文档";
+                    return this.$t('wenDang');
                     case 4:
-                    return "设计";
+                    return this.$t('sheJi');
                     case 5:
-                    return "美工";
+                    return this.$t('meiGong');
                     case 6:
-                    return "运营";
+                    return this.$t('yunYing');
                     case 7:
-                    return "看小说";
+                    return this.$t('kanXiaoShuo');
                     case 8:
-                    return "影视娱乐";
+                    return this.$t('yingShiYuLe');
                     case 9:
-                    return "听音乐";
+                    return this.$t('tingYinLe');
                     case 10:
-                    return "聊天";
+                    return this.$t('liaoTian');
                     default:
-                    return "未知";
+                    return this.$t('weiZhi');
                 }
             }
         },

+ 17 - 17
fhKeeper/formulahousekeeper/timesheet/src/views/desktop/unusual.vue

@@ -2,7 +2,7 @@
   <section>
     <!--工具条-->
     <el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
-      <div class="nowTime">非工作情况统计</div>
+      <div class="nowTime">{{ $t('feiGongZuoQingKuangTongJi') }}</div>
     </el-col>
 
     <!--列表-->
@@ -14,11 +14,11 @@
       style="width: 100%;"
     >
         <el-table-column type="index" width="60"></el-table-column>
-        <el-table-column prop="name" label="姓名" width="140" sortable></el-table-column>
-        <el-table-column label="行为">
+        <el-table-column prop="name" :label="$t('lable.name')" width="140" sortable></el-table-column>
+        <el-table-column :label="$t('hangWei')">
             <template slot-scope="scope">{{converType(scope.row.type+1)}}</template>
         </el-table-column>
-        <el-table-column label="图片" width="200">
+        <el-table-column :label="$t('tuPian')" width="200">
             <template slot-scope="scope">
                 <el-image :src="scope.row.picUrl" :preview-src-list="getSrcList(index)">
                     <div slot="error" class="image-slot">
@@ -27,8 +27,8 @@
                 </el-image>
             </template>
         </el-table-column>
-        <el-table-column prop="time" label="时间" width="140" sortable></el-table-column>
-        <el-table-column prop="date" label="日期" width="140" sortable></el-table-column>
+        <el-table-column prop="time" :label="$t('time.times')" width="140" sortable></el-table-column>
+        <el-table-column prop="date" :label="$t('weekDay.date')" width="140" sortable></el-table-column>
     </el-table>
 
     <!--工具条-->
@@ -109,27 +109,27 @@ export default {
     converType(type) {
       switch (type) {
         case 0:
-          return "其他工作";
+          return this.$t('qiTaGongZuo');
         case 1:
-          return "研发";
+          return this.$t('yanFa');
         case 2:
-          return "上网";
+          return this.$t('shangWang');
         case 3:
-          return "文档";
+          return this.$t('wenDang');
         case 4:
-          return "设计";
+          return this.$t('sheJi');
         case 5:
-          return "美工";
+          return this.$t('meiGong');
         case 6:
-          return "运营";
+          return this.$t('yunYing');
         case 7:
-          return "看小说";
+          return this.$t('kanXiaoShuo');
         case 8:
-          return "影视娱乐";
+          return this.$t('yingShiYuLe');
         case 9:
-          return "听音乐";
+          return this.$t('tingYinLe');
         default:
-          return "未知";
+          return this.$t('weiZhi');
       }
     },
     getSrcList(index) {

+ 83 - 83
fhKeeper/formulahousekeeper/timesheet/src/views/expense/expense.vue

@@ -50,7 +50,7 @@
     <div class="contents">
       <div v-if="!displayTable" class="headine" ref="headine">
         <!-- <h3 ref="headHe" style="padding-left: 220px">{{shuz[ins]}}</h3> -->
-        <h3 ref="headHe" style="padding-left: 220px">费用填报</h3>
+        <h3 ref="headHe" style="padding-left: 220px">{{ $t('expenses') }}</h3>
         <p style="float: right;margin-right: 25px;"><el-button type="primary" @click="submits" size="mini">{{
           $t('btn.submit') }}</el-button></p>
         <p style="float: right;margin-right: 25px;"><el-button type="primary" @click="submitUpload" size="mini">{{
@@ -58,7 +58,7 @@
         <p style="float: right;margin-right: 25px;"><el-button type="primary" @click="customTypeOp" size="mini"
             v-if="permissions.costAll">{{ $t('expensetypemanagement') }}</el-button></p>
         <p style="float: right;margin-right: 25px;"><el-button type="primary" @click="expenseTypeOp" size="mini"
-            v-if="permissions.costAll">费用主类型管理</el-button></p>
+            v-if="permissions.costAll">{{ $t('feiYongZhuLeiXingGuanLi') }}</el-button></p>
       </div>
       <!-- 上面部分 -->
       <div ref="staff" style="margin: 20px 20px 0 220px; width: 81.5%">
@@ -95,16 +95,16 @@
                 <el-input v-model="addForm.ticketNum" style="width: 150px"></el-input>
               </el-form-item>
               <!-- 费用主类型 -->
-              <el-form-item :label="'费用主类型'">
+              <el-form-item :label="$t('feiYongZhuLeiXing')">
                 <el-select v-model="expenseMainTypeValue" style="width: 150px" @change="this.getExpList">
                   <el-option v-for="item in expenseMainTypes" :key="item.id" :label="item.name"
                     :value="item.id"></el-option>
                 </el-select>
               </el-form-item>
               <!-- 第一审核人 -->
-              <el-form-item label="第一审核人" v-if="auditTypeItem.auditType == 2">
+              <el-form-item :label="$t('di-yi-shen-he-ren')" v-if="auditTypeItem.auditType == 2">
                 <el-select v-if="user.userNameNeedTranslate != '1'" v-model="addForm.firstCheckerId"
-                  :placeholder="'请选择审核人'" style="width: 150px"
+                  :placeholder="$t('message.Pleaseselectareviewer')" style="width: 150px"
                   filterable="true">
                   <span v-for="(item, index) in usersNoInfo" :key="index">
                     <el-option :label="item.name" :value="item.id"></el-option>
@@ -116,9 +116,9 @@
                   @selectCal="selectCal"></selectCat>
               </el-form-item>
               <!-- 第一审核人 -->
-              <el-form-item label="第二审核人" v-if="auditTypeItem.auditType == 2">
+              <el-form-item :label="$t('di-er-shen-he-ren')" v-if="auditTypeItem.auditType == 2">
                 <el-select v-if="user.userNameNeedTranslate != '1'" v-model="addForm.secondCheckerId"
-                  :placeholder="'请选择审核人'" style="width: 150px"
+                  :placeholder="$t('message.Pleaseselectareviewer')" style="width: 150px"
                   filterable="true">
                   <span v-for="(item, index) in usersNoInfo" :key="index">
                     <el-option :label="item.name" :value="item.id"></el-option>
@@ -229,10 +229,10 @@
                 -->
                   <div>
                     <div v-if="scope.row.pic && scope.row.pic.length > 0">
-                      <el-button size="small" @click="viewDetailsImage(scope.$index)">查看详情</el-button>
+                      <el-button size="small" @click="viewDetailsImage(scope.$index)">{{ $t('Checkthedetails') }}</el-button>
                     </div>
                     <div v-else>
-                      <el-button type="primary" size="small" @click="performCustomization(scope.$index)" :loading="listLoading">点击上传</el-button>
+                      <el-button type="primary" size="small" @click="performCustomization(scope.$index)" :loading="listLoading">{{ $t('clickupload') }}</el-button>
                     </div>
                   </div>
                 </template>
@@ -252,7 +252,7 @@
     </div>
 
     <!-- 多张图片查看详情 -->
-    <el-dialog title="查看详情" :visible.sync="dialogVisibleImage" width="745px" :before-close="handleClose">
+    <el-dialog :title="$t('Checkthedetails')" :visible.sync="dialogVisibleImage" width="745px" :before-close="handleClose">
       <div class="dayImge">
         <div class="dayImgeItem" v-if="dialogVisibleImageList">
           <viewer :images="dialogVisibleImageList" v-viewer="viewerOptions" class="dayImgeItem">
@@ -304,8 +304,8 @@
                   style="width: 120px"></el-input>
               </el-form-item>
               <!-- 费用主类型 -->
-              <el-form-item :label="'费用主类型'">
-                <el-select size="small" v-model="queryExpenseMainType" style="width: 150px" clearable placeholder="全部类型">
+              <el-form-item :label="$t('feiYongZhuLeiXing')">
+                <el-select size="small" v-model="queryExpenseMainType" style="width: 150px" clearable :placeholder="$t('typesof')">
                   <el-option v-for="item in expenseMainTypes" :key="item.id" :label="item.name"
                     :value="item.id"></el-option>
                   <!-- <el-option :label="$t('yi-ban')" :value="0"></el-option>
@@ -313,16 +313,16 @@
                 <el-option :label="$t('wai-bao')" :value="2"></el-option> -->
                 </el-select>
               </el-form-item>
-              <el-form-item :label="'发放状态'" v-if="permissions.costExpenseRelease">
+              <el-form-item :label="$t('faFangZhuangTai')" v-if="permissions.costExpenseRelease">
                 <el-select v-model="sendState" size="small" style="width: 150px"
                   clearable>
-                  <el-option :label="'未发放'" :value="0"></el-option>
-                  <el-option :label="'已发放'" :value="1"></el-option>
+                  <el-option :label="$t('weiFaFang')" :value="0"></el-option>
+                  <el-option :label="$t('yiFaFang')" :value="1"></el-option>
                 </el-select>
               </el-form-item>
               <!-- 填报日期 -->
               <div style="display: inline-block;">
-                <el-form-item :label="'项目'">
+                <el-form-item :label="$t('other.project')">
                   <el-select v-model="selectProject" size="small" style="width: 162px" clearable filterable>
                     <el-option v-for="item in projectList" :label="item.projectName" :value="item.id" :key="item.id">
                       <span style="float: left">{{ item.projectName }}</span>
@@ -340,13 +340,13 @@
                   <el-button @click="getList" size="small">{{ $t('find') }}</el-button>
                 </el-form-item>
                 <el-form-item v-if="currentClick == '2-1'">
-                  <el-button @click="exportDocument()" size="small">单据导出</el-button>
+                  <el-button @click="exportDocument()" size="small">{{ $t('danJuDaoChu') }}</el-button>
                 </el-form-item>
                 <el-form-item v-if="currentClick == '2-1' && permissions.costExpenseRelease">
-                  <el-button @click="documentIssuance(1)" size="small">发放</el-button>
+                  <el-button @click="documentIssuance(1)" size="small">{{ $t('faFang') }}</el-button>
                 </el-form-item>
                 <el-form-item v-if="currentClick == '2-1' && permissions.costExpenseRelease">
-                  <el-button @click="documentIssuance(0)" size="small">取消发放</el-button>
+                  <el-button @click="documentIssuance(0)" size="small">{{ $t('quXiaoFaFang') }}</el-button>
                 </el-form-item>
                 <!-- <span>审核模式:{{ auditTypeItem.auditType }}</span> -->
               </div>
@@ -397,11 +397,11 @@
                 <span v-if="scope.row.status == 0 || scope.row.status == 3">{{ statusTxt[scope.row.status] }}</span>
               </template>
             </el-table-column>
-            <el-table-column prop="reviewProcess" :label="'审核流程'" width="180" v-if="auditTypeItem.auditType == 2">
+            <el-table-column prop="reviewProcess" :label="{{ $t('title.reviewProcess') }}" width="180" v-if="auditTypeItem.auditType == 2">
               <template slot-scope="scope">
-                <span v-if="scope.row.reviewProcess == 0">待第一审核人审核</span>
-                <span v-if="scope.row.reviewProcess == 1">待第二审核人审核</span>
-                <span v-if="scope.row.reviewProcess == 2">审核完成</span>
+                <span v-if="scope.row.reviewProcess == 0">{{ $t('daiDiYiShenHeRenShenHe') }}</span>
+                <span v-if="scope.row.reviewProcess == 1">{{ $t('daiDiErShenHeRenShenHe') }}</span>
+                <span v-if="scope.row.reviewProcess == 2">{{ $t('shenHeWanCheng') }}</span>
               </template>
             </el-table-column>
             <!-- <el-table-column prop="denyReason" :label="$t('dismissreason')" width="180">
@@ -409,13 +409,13 @@
                   <span style="font-size:12px;">{{scope.row.denyReason}}</span>
                 </template>
               </el-table-column> -->
-            <el-table-column prop="sendState" label="发放状态" width="80" v-if="permissions.costExpenseRelease">
+            <el-table-column prop="sendState" :label="$t('faFangZhuangTai')" width="80" v-if="permissions.costExpenseRelease">
               <template slot-scope="scope">
-                <span :style="`color: ${scope.row.sendState == 0 ? '#FFA500' : ''}`">{{ scope.row.sendState == 1 ? '已发放' :
+                <span :style="`color: ${scope.row.sendState == 0 ? '#FFA500' : ''}`">{{ scope.row.sendState == 1 ? $t('yiFaFang') :
                   '未发放' }}</span>
               </template>
             </el-table-column>
-            <el-table-column prop="payWayName" label="支付方式" width="80" v-if="permissions.costExpenseRelease">
+            <el-table-column prop="payWayName" :label="$t('zhiFuFangShi')" width="80" v-if="permissions.costExpenseRelease">
             </el-table-column>
             <el-table-column fixed="right" :label="$t('operation')" :width="isAuditList ? 220 : 160">
               <template slot-scope="scope">
@@ -438,7 +438,7 @@
                       $t('btn.rejected') }}</el-button>
                   </div>
                   <div v-if="auditTypeItem.auditType == 1">
-                    <el-button size="mini" @click.stop.native="approve(scope.row)">审核</el-button>
+                    <el-button size="mini" @click.stop.native="approve(scope.row)">{{ $t('other.audit') }}</el-button>
                   </div>
                 </div>
               </template>
@@ -455,7 +455,7 @@
       </div>
     </div>
     <!-- 我的单据报销展示 -->
-    <el-dialog title="报销凭证详情" :visible.sync="dialog" width="1000px">
+    <el-dialog :title="$t('detailsofReimbursementvoucher')" :visible.sync="dialog" width="1000px">
       <!-- 内容主体 -->
       <div class="informant"><!--  报销人 -->
         <el-form :model="ParticularsList" label-width="100px">
@@ -477,9 +477,9 @@
 
           </el-form-item>
           <!-- 第一审核人 -->
-          <el-form-item label="第一审核人" v-if="auditTypeItem.auditType == 2">
+          <el-form-item :label="$t('di-yi-shen-he-ren')" v-if="auditTypeItem.auditType == 2">
             <el-select v-if="user.userNameNeedTranslate != '1'" v-model="ParticularsList.firstCheckerId"
-              :placeholder="'请选择审核人'" style="width: 150px" :disabled="ParticularsList.reviewProcess > 0"
+              :placeholder="$t('message.Pleaseselectareviewer')" style="width: 150px" :disabled="ParticularsList.reviewProcess > 0"
               filterable="true">
               <span v-for="(item, index) in users" :key="index">
                 <el-option :label="item.name" :value="item.id"></el-option>
@@ -491,9 +491,9 @@
               @selectCal="selectCal"></selectCat>
           </el-form-item>
           <!-- 第二审核人 -->
-          <el-form-item label="第二审核人" v-if="auditTypeItem.auditType == 2">
+          <el-form-item :label="$t('di-er-shen-he-ren')" v-if="auditTypeItem.auditType == 2">
             <el-select v-if="user.userNameNeedTranslate != '1'" v-model="ParticularsList.secondCheckerId"
-              :placeholder="'请选择审核人'" style="width: 150px" :disabled="ParticularsList.reviewProcess > 1"
+              :placeholder="$t('message.Pleaseselectareviewer')" style="width: 150px" :disabled="ParticularsList.reviewProcess > 1"
               filterable="true">
               <span v-for="(item, index) in users" :key="index">
                 <el-option :label="item.name" :value="item.id"></el-option>
@@ -530,14 +530,14 @@
           }}</span>
         </div>
         <el-table :data="ParticularsList.invoiceList" border style="width: 100%">
-          <el-table-column prop="status" label="审核状态" width="172" v-if="auditTypeItem.auditType == 1">
+          <el-table-column prop="status" :label="$t('other.approvalStatus')" width="172" v-if="auditTypeItem.auditType == 1">
             <template slot-scope="scope">
               <span v-if="scope.row.status == 1" class="waiting">{{ statusTxt[scope.row.status] }}</span>
               <span v-if="scope.row.status == 2" class="rejected">{{ statusTxt[scope.row.status] }}</span>
               <span v-if="scope.row.status == 0 || scope.row.status == 3">{{ statusTxt[scope.row.status] }}</span>
             </template>
           </el-table-column>
-          <el-table-column v-if="auditTypeItem.auditType == 1" width="172" label="审核人">
+          <el-table-column v-if="auditTypeItem.auditType == 1" width="172" :label="$t('other.reviewer')">
             <template slot-scope="scope">
               <span v-if="user.userNameNeedTranslate == 1">
                 <TranslationOpenDataText type='userName' :openid='scope.row.projectManagerName'></TranslationOpenDataText>
@@ -648,10 +648,10 @@
               </div> -->
               <div>
                 <div v-if="scope.row.pic && scope.row.pic.length > 0">
-                  <el-button size="small" @click="viewDetailsImage(scope.$index, 'ParticularsList', 'invoiceList')">查看详情</el-button>
+                  <el-button size="small" @click="viewDetailsImage(scope.$index, 'ParticularsList', 'invoiceList')">{{ $t('Checkthedetails') }}</el-button>
                 </div>
                 <div v-else>
-                  <el-button type="primary" size="small" @click="performCustomization(scope.$index, 2)" :loading="listLoading">点击上传</el-button>
+                  <el-button type="primary" size="small" @click="performCustomization(scope.$index, 2)" :loading="listLoading">{{ $t('clickupload') }}</el-button>
                 </div>
               </div>
             </template>
@@ -663,12 +663,12 @@
                 @click="delec(scope.$index)">{{ $t('btn.delete') }}</el-button>
             </template>
           </el-table-column>
-          <el-table-column prop="status" label="审核" width="172" v-if="auditTypeItem.auditType == 1 && showSingleAudit"
+          <el-table-column prop="status" :label="$t('other.audit')" width="172" v-if="auditTypeItem.auditType == 1 && showSingleAudit"
             fixed="right">
             <template slot-scope="scope">
               <el-button v-if="scope.row.isIncharger && scope.row.status == 1"
-                @click="approveSingle(scope.row)">通过</el-button><el-button
-                v-if="scope.row.isIncharger && scope.row.status == 1" @click="denySingle(scope.row)">驳回</el-button>
+                @click="approveSingle(scope.row)">{{ $t('btn.through') }}</el-button><el-button
+                v-if="scope.row.isIncharger && scope.row.status == 1" @click="denySingle(scope.row)">{{ $t('btn.rejected') }}</el-button>
             </template>
           </el-table-column>
         </el-table>
@@ -711,15 +711,15 @@
 
 
     <!-- 主费用类型自定义 -->
-    <el-dialog title="费用类型大类管理" v-if="expenseTypeDialog" :visible.sync="expenseTypeDialog" customClass="customWidth"
+    <el-dialog :title="$t('feiYongLeiXingDaLeiGuanLi')" v-if="expenseTypeDialog" :visible.sync="expenseTypeDialog" customClass="customWidth"
       width="600px">
       <el-table :data="expenseMainTypes" style="width:100%" height="400" :loading="expenseTypeListLoading">
-        <el-table-column :label="'类型名称'" min-width="150">
+        <el-table-column :label="$t('typename ')" min-width="150">
           <template slot-scope="scope">
             <span>{{ scope.row.name }}</span>
           </template>
         </el-table-column>
-        <el-table-column :label="'对应成本项'" min-width="150">
+        <el-table-column :label="$t('duiYingChengBenXiang')" min-width="150">
           <template slot-scope="scope">
             <span>{{ scope.row.basecostSettingName }}</span>
           </template>
@@ -747,7 +747,7 @@
               :placeholder="$t('customizethfeetypename')" style="width:90%"
               @keyup.native="editExpenseTypeDataInput('editExpenseTypeDataInput')"></el-input>
           </el-form-item>
-          <el-form-item label="对应成本项" style="margin:30px 0" prop="basecostSettingId">
+          <el-form-item :label="$t('duiYingChengBenXiang')" style="margin:30px 0" prop="basecostSettingId">
             <el-select v-model="editExpenseTypeData.basecostSettingId" size="medium" style="width:90%" clearable>
               <el-option v-for="item in basecostSettingList" :key="item.id" :label="item.name" :value="item.id"
                 :disabled="item.alarmType == 1"></el-option>
@@ -819,11 +819,11 @@
     </el-dialog>
 
     <!-- 详情查看弹出框 -->
-    <el-dialog title="报销凭证详情" :visible.sync="detailDialog" width="1100px" :before-close="handleClose">
+    <el-dialog :title="$t('detailsofReimbursementvoucher')" :visible.sync="detailDialog" width="1100px" :before-close="handleClose">
       <div ref="printContent" class="printContent">
         <div class="printContent-detail">
           <div class="detail-item">
-            <span class="detail-item-title"> <span class="printBox">报销人</span> </span>
+            <span class="detail-item-title"> <span class="printBox">{{ $t('peopleconcerned') }}</span> </span>
             <span class="detail-item-content">
               <span v-if="user.userNameNeedTranslate == 1">
                 <TranslationOpenDataText type='userName' :openid='ParticularsList.ownerName'></TranslationOpenDataText>
@@ -832,23 +832,23 @@
             </span>
           </div>
           <div class="detail-item">
-            <span class="detail-item-title"><span class="printBox">填报时间</span></span>
+            <span class="detail-item-title"><span class="printBox">{{ $t('tianBaoShiJian') }}</span></span>
             <span class="detail-item-content">{{ ParticularsList.createDate }}</span>
           </div>
           <div class="detail-item">
-            <span class="detail-item-title"><span class="printBox">发票张数</span></span>
-            <span class="detail-item-content">{{ ParticularsList.ticketNum }} </span>
+            <span class="detail-item-title"><span class="printBox">{{ $t('invoicenumber') }}</span></span>
+            <span class="detail-item-content">{{ ParticularsList.ticketNum }} {{ $t('zhang') }}</span>
           </div>
           <div class="detail-item">
-            <span class="detail-item-title"><span class="printBox">费用类型:</span></span>
+            <span class="detail-item-title"><span class="printBox">{{ $t('feiYongLeiXing') }}</span></span>
             <span class="detail-item-content">{{ detaExpenseMainTypeName }}</span>
           </div>
           <div class="detail-item">
-            <span class="detail-item-title"><span class="printBox">总费用</span></span>
+            <span class="detail-item-title"><span class="printBox">{{ $t('totalcostos') }}</span></span>
             <span class="detail-item-content">¥ {{ ParticularsList.totalAmount | numberToCurrency }}</span>
           </div>
           <div class="detail-item" style="width: 100%">
-            <span class="detail-item-title"><span class="printBox">备注</span></span>
+            <span class="detail-item-title"><span class="printBox">{{ $t('bei-zhu') }}</span></span>
             <span class="detail-item-content">{{ ParticularsList.remark }}</span>
           </div>
         </div>
@@ -978,7 +978,7 @@
         <div class="conter-box">
           <div class="conter-border" v-for="item, index in ParticularsList.invoiceList" :key="index">
             <div class="detail-item" v-if="auditTypeItem.auditType != 1">
-              <span class="detail-item-title"> <span class="printBox">项目</span> </span>
+              <span class="detail-item-title"> <span class="printBox">{{ $t('other.project') }}</span> </span>
               <span class="detail-item-content">
                 {{ item.projectName }}
                 <!-- <el-select size="small" v-if="!flg" v-model="item.projectId" :placeholder="$t('other.project')"
@@ -997,7 +997,7 @@
               </span>
             </div>
             <div class="detail-item" v-if="auditTypeItem.auditType == 1">
-              <span class="detail-item-title"> <span class="printBox">项目(审核状态)</span> </span>
+              <span class="detail-item-title"> <span class="printBox">{{ $t('xiangMuShenHeZhuangTai') }}</span> </span>
               <span class="detail-item-content">
                 <span v-if="item.status == 1" class="waiting">{{ statusTxt[item.status] }}</span>
                 <span v-if="item.status == 2" class="rejected">{{ statusTxt[item.status] }}</span>
@@ -1005,39 +1005,39 @@
               </span>
             </div>
             <div class="detail-item">
-              <span class="detail-item-title"> <span class="printBox">费用日期</span> </span>
+              <span class="detail-item-title"> <span class="printBox">{{ $t('forthedate') }}</span> </span>
               <span class="detail-item-content">{{ item.happenDate }}</span>
             </div>
             <div class="detail-item">
-              <span class="detail-item-title"> <span class="printBox">发票种类</span> </span>
+              <span class="detail-item-title"> <span class="printBox">{{ $t('invoices') }}</span> </span>
               <span class="detail-item-content">{{ typeInvoic[item.invoiceType] }}</span>
             </div>
             <div class="detail-item">
-              <span class="detail-item-title"> <span class="printBox">费用类型</span> </span>
+              <span class="detail-item-title"> <span class="printBox">{{ $t('costtype') }}</span> </span>
               <span class="detail-item-content">{{ item.expenseType }}</span>
             </div>
             <div class="detail-item">
-              <span class="detail-item-title single"> <span class="printBox">费用金额(含税)</span> </span>
+              <span class="detail-item-title single"> <span class="printBox">{{ $t('feiYongJineHanShui') }}</span> </span>
               <span class="detail-item-content">{{ item.amount }}</span>
             </div>
             <div class="detail-item">
-              <span class="detail-item-title"> <span class="printBox">发票号</span> </span>
+              <span class="detail-item-title"> <span class="printBox">{{ $t('invoiceno') }}</span> </span>
               <span class="detail-item-content">{{ item.invoiceNo }}</span>
             </div>
             <div class="detail-item">
-              <span class="detail-item-title"> <span class="printBox">税率%</span> </span>
+              <span class="detail-item-title"> <span class="printBox">{{ $t('shui-shuai') }}</span> </span>
               <span class="detail-item-content">{{ item.taxValue }}</span>
             </div>
             <div class="detail-item">
-              <span class="detail-item-title"> <span class="printBox">税额</span> </span>
+              <span class="detail-item-title"> <span class="printBox">{{ $t('taxs') }}</span> </span>
               <span class="detail-item-content">{{ item.taxValue ? `¥${item.taxValue}` : '' }}</span>
             </div>
             <div class="detail-item">
-              <span class="detail-item-title"> <span class="printBox">备注</span> </span>
+              <span class="detail-item-title"> <span class="printBox">{{ $t('bei-zhu') }}</span> </span>
               <span class="detail-item-content">{{ item.remark }}</span>
             </div>
             <div class="detail-item" style="display: flex">
-              <span class="detail-item-title"> <span class="printBox">报销凭证</span> </span>
+              <span class="detail-item-title"> <span class="printBox">{{ $t('expensereimbursementvoucher') }}</span> </span>
               <div class="detail-item-content">
                 <div v-if="item.pic" style="display: inline-block;">
                   <div class="tups">
@@ -1058,8 +1058,8 @@
         </div>
       </div>
       <span slot="footer" class="dialog-footer">
-        <el-button @click="print()">打 印</el-button>
-        <el-button @click="detailDialog = false">关 闭</el-button>
+        <el-button @click="print()">{{ $t('daYin') }}</el-button>
+        <el-button @click="detailDialog = false">{{ $t('guanBi') }}</el-button>
       </span>
     </el-dialog>
 
@@ -1069,15 +1069,15 @@
     </div>
 
     <!-- 发放支付方式 -->
-    <el-dialog title="发放方式" :visible.sync="dialogVisibleRelease" width="400px" :before-close="handleClose">
+    <el-dialog :title="$t('faFangFangShi')" :visible.sync="dialogVisibleRelease" width="400px" :before-close="handleClose">
       <div>
-        <el-select v-model="releaseData.id" placeholder="请选择支付方式" style="width: 100%" clearable>
+        <el-select v-model="releaseData.id" :placeholder="$t('qingXuanZeZhiFuFangShi')" style="width: 100%" clearable>
           <el-option v-for="item in sendStateList" :key="item.id" :label="item.name" :value="item.id"></el-option>
         </el-select>
       </div>
       <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisibleRelease = false">取 消</el-button>
-        <el-button type="primary" @click="callingInterface(1, releaseData.data)">确 定</el-button>
+        <el-button @click="dialogVisibleRelease = false">{{ $t('quXiao') }}</el-button>
+        <el-button type="primary" @click="callingInterface(1, releaseData.data)">{{ $t('queDing') }}</el-button>
       </span>
     </el-dialog>
   </section>
@@ -1737,7 +1737,7 @@ export default {
       let noAmount = paramData.invoiceList.filter(item => !item.amount)
       if(noAmount.length > 0) {
         this.$message({
-          message: '请填写完整费用金额',
+          message: this.$t('qingTianXieWanZhengFeiYongJinE'),
           type: "error"
         });
         return;
@@ -1812,7 +1812,7 @@ export default {
         if (valid) {
           if(this.auditTypeItem.auditType == 2 && (!this.addForm.firstCheckerId || !this.addForm.secondCheckerId)) {
             this.$message({
-              message: !this.addForm.firstCheckerId ? '请选择第一审核人' : '请选择第二审核人',
+              message: !this.addForm.firstCheckerId ? this.$t('qingXuanZeDiYiShenHeRen') : this.$t('qingXuanZeDiErShenHeRen'),
               type: "error"
             });
             return;
@@ -1834,7 +1834,7 @@ export default {
           }
           for (var i in this.invoiceList) {
             if (!this.invoiceList[i].projectId) {
-              strObj.project = '所属项目'
+              strObj.project = this.$t('subordinatetotheproject')
               strObj.flg = true
             }
             // if(!this.invoiceList[i].invoiceType || this.invoiceList[i].invoiceType == '') {
@@ -1842,21 +1842,21 @@ export default {
             //   strObj.flg = true
             // }
             if (!this.invoiceList[i].expenseType || this.invoiceList[i].expenseType == '') {
-              strObj.fyType = '费用类型'
+              strObj.fyType = this.$t('costtype')
               strObj.flg = true
             }
             if (!this.invoiceList[i].happenDate || this.invoiceList[i].happenDate == '') {
-              strObj.datas = '费用日期'
+              strObj.datas = this.$t('forthedate')
               strObj.flg = true
             }
             if (!this.invoiceList[i].amount || this.invoiceList[i].amount == '') {
-              strObj.rmb = '费用金额'
+              strObj.rmb = this.$t('feiYongJinE')
               strObj.flg = true
             }
           }
           if (strObj.flg) {
             this.$message({
-              message: `${strObj.project} ${strObj.fptype} ${strObj.fyType} ${strObj.datas} ${strObj.rmb} 请填写完整`,
+              message: `${strObj.project} ${strObj.fptype} ${strObj.fyType} ${strObj.datas} ${strObj.rmb} ${this.$t('qingTianXieWanZheng')}`,
               type: "error"
             });
             return;
@@ -2075,7 +2075,7 @@ export default {
                     name: item,
                     url: `/upload/${item}`,
                     // url: `http://47.101.180.183/upload/${item}`,
-                    title: '报销凭证'
+                    title: this.$t('expensereimbursementvoucher')
                   }
                 })
               }
@@ -2336,7 +2336,7 @@ export default {
       const sums = [];
       columns.forEach((column, index) => {
         if (index === 1) {
-          sums[index] = '本页金额合计';//this.$t('other.totals');
+          sums[index] = this.$t('benYeJineheJi');//this.$t('other.totals');
           return;
         }
         if (index === 2) {
@@ -2407,7 +2407,7 @@ export default {
           if (res.code == "ok") {
             var filePath = res.data;
             const a = document.createElement('a'); // 创建a标签
-            a.setAttribute('download', '费用报销单据列表');// download属性
+            a.setAttribute('download', this.$t('feiYongBaoXiaoDanJuLieBiao'));// download属性
             a.setAttribute('href', filePath);// href链接
             a.click(); //自执行点击事件
             a.remove();
@@ -2439,17 +2439,17 @@ export default {
       };
 
       if (newList.length > 0) {
-        showMessage('存在待审核或已驳回的单据', 'warning');
+        showMessage(this.$t('cunZaiDaiShenHeHuoYiBoHuiDeDanJu'), 'warning');
         return;
       }
 
       if (type == 1 && unissueds.length == 0) {
-        showMessage('请选择未发放的单据', 'warning');
+        showMessage(this.$t('qingXuanZeWeiFaFangDeDanJu'), 'warning');
         return;
       }
 
       if (type == 0 && Issueds.length == 0) {
-        showMessage('请选择已发放的单据', 'warning');
+        showMessage(this.$t('qingXuanZeYiFaFangDeDanJu'), 'warning');
         return;
       }
 
@@ -2473,7 +2473,7 @@ export default {
           this.dialogVisibleRelease = false
           if (res.code == "ok") {
             this.$message({
-              message: '操作成功',
+              message: this.$t('operationissuccessful'),
               type: "success"
             });
             this.getList()
@@ -2552,7 +2552,7 @@ export default {
                 name: item,
                 url: '/upload/' + item,
                 // url: `http://47.101.180.183/upload/${item}`,
-                title: '报销凭证'
+                title: this.$t('expensereimbursementvoucher')
               }
             })
             if(this.imgLoadType == 1) {

+ 20 - 20
fhKeeper/formulahousekeeper/timesheet/src/views/financeAudit/financeAudit.vue

@@ -2,17 +2,17 @@
     <div class='financeAudit'>
         <div class="fAd_hrader">
             <div class="items">
-                <div class="label">年月:</div>
+                <div class="label">{{ $t('nianYue') }}</div>
                 <div class="value">
-                    <el-date-picker v-model="tableForm.dates" type="monthrange" range-separator="至" start-placeholder="开始日期"
-                        @change="getFinanceAuditTableData()" size="small" value-format="yyyy-MM" end-placeholder="结束日期" :clearable="false">
+                    <el-date-picker v-model="tableForm.dates" type="monthrange" :range-separator="$t('other.to')" :start-placeholder="$t('time.startDate')"
+                        @change="getFinanceAuditTableData()" size="small" value-format="yyyy-MM" :end-placeholder="$t('time.endDate')" :clearable="false">
                     </el-date-picker>
                 </div>
             </div>
             <div class="items">
-                <div class="label">审核状态:</div>
+                <div class="label">{{ $t('shenHeZhuangTai') }}</div>
                 <div class="value">
-                    <el-select v-model="tableForm.status" placeholder="请选择" size="small"
+                    <el-select v-model="tableForm.status" :placeholder="$t('defaultText.pleaseChoose')" size="small"
                         @change="getFinanceAuditTableData()">
                         <el-option v-for="item in statusOptions" :key="item.value" :label="item.label" :value="item.value">
                         </el-option>
@@ -23,22 +23,22 @@
         <div class="fAd_content">
             <el-table :data="financeAuditTableData" border style="width: 100%;height: 100%;"
                 v-loading="allLoading.tableLoading">
-                <el-table-column prop="reportYrmnth" label="日报年月" align="center">
+                <el-table-column prop="reportYrmnth" :label="$t('riBaoNianYue')" align="center">
                     <template slot-scope="scope">
                         <el-button type="text" @click="toDetail(scope.row)">{{ scope.row.reportYrmnth }}</el-button>
                     </template>
                 </el-table-column>
-                <el-table-column prop="reviewerName" label="审核人" align="center"></el-table-column>
-                <el-table-column prop="reviewTime" label="审核时间" align="center"></el-table-column>
-                <el-table-column prop="reviewStatus" label="状态" align="center">
+                <el-table-column prop="reviewerName" :label="$t('other.reviewer')" align="center"></el-table-column>
+                <el-table-column prop="reviewTime" :label="$t('AuditTime')" align="center"></el-table-column>
+                <el-table-column prop="reviewStatus" :label="$t('state.states')" align="center">
                     <template slot-scope="scope">
-                        {{ scope.row.reviewStatus == 1 ? '未审核' : '已审核' }}
+                        {{ scope.row.reviewStatus == 1 ? $t('weiShenHe') : $t('yiShenHe') }}
                     </template>
                 </el-table-column>
-                <el-table-column label="操作" align="center" fixed="right">
+                <el-table-column :label="$t('operation')" align="center" fixed="right">
                     <template slot-scope="scope">
-                        <el-button @click="audit(scope.row)" type="text" v-if="scope.row.reviewStatus == 1">审核</el-button>
-                        <el-button type="text" @click="toDetail(scope.row)">查看详情</el-button>
+                        <el-button @click="audit(scope.row)" type="text" v-if="scope.row.reviewStatus == 1">{{ $t('other.audit') }}</el-button>
+                        <el-button type="text" @click="toDetail(scope.row)">{{ $t('Checkthedetails') }}</el-button>
                     </template>
                 </el-table-column>
             </el-table>
@@ -65,9 +65,9 @@ export default {
             },
             financeAuditTableData: [],
             statusOptions: [
-                { value: 0, label: '全部' },
-                { value: 1, label: '未审核' },
-                { value: 2, label: '已审核' },
+                { value: 0, label: this.$t('all') },
+                { value: 1, label: this.$t('weiShenHe') },
+                { value: 2, label: this.$t('yiShenHe') },
             ],
             paging: {
                 pageSize: 50,
@@ -100,15 +100,15 @@ export default {
             })
         },
         audit(item) {
-            this.$confirm(`您确定要审核通过${item.reportYrmnth}月的工时报告吗?`, '财务审核提示', {
-                confirmButtonText: '确定',
-                cancelButtonText: '取消',
+            this.$confirm(`${this.$t('ninQueDingYaoShenHeTongGuo')}${item.reportYrmnth} ${this.$t('yueDeGongShiBaoGaoMa')}`, this.$t('caiWuShenHeTiShi'), {
+                confirmButtonText: this.$t('btn.determine'),
+                cancelButtonText: this.$t('btn.cancel'),
                 type: 'warning'
             }).then(() => {
                 this.postData('/financial-audit/audit', { id: item.id }).then(res => {
                     this.$message({
                         type: 'success',
-                        message: '审核成功!'
+                        message: this.$t('shenHeChengGong')
                     });
                     this.getFinanceAuditTableData();
                 });

+ 28 - 9
fhKeeper/formulahousekeeper/timesheet/src/views/project/cost.vue

@@ -70,6 +70,10 @@
                         <el-radio-button label="1">项目名称</el-radio-button>
                         <el-radio-button label="2">项目编号</el-radio-button>
                     </el-radio-group>
+                    <el-radio-group v-model="departmentadio" size="small" @change="departmentPersonnelSwitch" v-if="radio == '部门' && this.parentDeptId">
+                        <el-radio-button label="1">部门</el-radio-button>
+                        <el-radio-button label="2">人员</el-radio-button>
+                    </el-radio-group>
                 </div>
                 <el-pagination
                 @size-change="echartsSizeChange"
@@ -249,10 +253,21 @@
                 radioLoading: false,
                 proJuctId:'',
                 possWidth: 300,
-                possradio: '1'
+                possradio: '1',
+                departmentadio: '1'
             };
         },
         methods: {
+            // 部门详情的部门和人员切换显示
+            departmentPersonnelSwitch() {
+                const typeIndex = this.departmentadio
+                console.log('点击切换', typeIndex, this.parentDeptId)
+                if(typeIndex == '1') {
+                    this.jieliu()
+                } else {
+                    this.getUserCostList(this.parentDeptId)
+                }
+            },
             echartsCurrentChange(val){
                 this.page = val
                 if(this.radio == this.$t('ren-yuan')){
@@ -521,22 +536,22 @@
                 }
             },
             //获取人员成本统计列表
-            getUserCostList() {
-                // console.log(this.port.project.userCost, '获取人员成本统计列表')
-                // console.log(this.user.timeType.fixMonthcost)
-                // console.log(Boolean(this.dateRange))
+            getUserCostList(departmentId) {
                 let startDateNum = ''
                 let endDateNum = ''
                 if(this.dateRange) {
                     startDateNum = this.user.timeType.fixMonthcost==0?this.dateRange[0]:this.dateRange
                     endDateNum = this.user.timeType.fixMonthcost==0?this.dateRange[1]:this.dateRange
                 } 
-                // return 
-                this.http.post(this.port.project.userCost, {
-                    // startDate:this.user.timeType.fixMonthcost==0?this.dateRange[0]:this.dateRange, 
-                    // endDate: this.user.timeType.fixMonthcost==0?this.dateRange[1]:this.dateRange
+                let params = {
                     startDate: startDateNum,
                     endDate: endDateNum
+                }
+                if(departmentId) {
+                    params.departmentId = departmentId
+                }
+                this.http.post(this.port.project.userCost, {
+                    ...params
                 },
                 res => {
                     this.radioLoading = false
@@ -911,6 +926,7 @@
                 } else if (this.radio==this.$t('lable.department')) {
                     url = this.port.project.depCost;
                     param.parentDeptId = this.parentDeptId;
+                    this.departmentadio = '1'
                 } else if (this.radio==this.$t('ren-yuan')) {
                     this.getUserCostList();
                     return;
@@ -1323,6 +1339,9 @@
                                             }
                                             // _this.jieliu();
                                         } else {
+                                            if(this.departmentadio == '2') {
+                                                return
+                                            }
                                             if (_this.dateRange != null) {
                                                 _this.$router.push("/costDep/" + _this.params[0].data.id + "/" + _this.params[0].name
                                                     +"?startDate="+_this.dateRange[0]+"&endDate="+_this.dateRange[1]);