Explorar o código

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

ggooalice %!s(int64=2) %!d(string=hai) anos
pai
achega
68e2422f4d

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

@@ -1402,5 +1402,24 @@
   "biao-zhun-gong-shi": "Standard working hours",
   "qing-jia-gong-shi": "Off hours",
   "shi-fou-man-zu-gong-shi": "Whether the working hours are met",
-  "fu-wu-xiang-mu": "service project"
+  "fu-wu-xiang-mu": "service project",
+  "zhang-hao-shou-ji-hao": "Account number/mobile number",
+  "mi-ma": "password",
+  "login": "login",
+  "lian-xi-ke-fu": "Contact customer service",
+  "qi-ye-zhu-ce": "Enterprise registration",
+  "sao-ma-jia-ke-fu-wei-xin": "Scan the code to add customer service wechat",
+  "shi-yong-shuo-ming": "instructions",
+  "qing-lian-xi-guan-li-yuan-wei": "Contact the administrator for",
+  "di-yi-shen-he-ren": "Adjudicator of first instance",
+  "di-er-shen-he-ren": "The second auditor",
+  "di-san-shen-he-ren": "Third Auditor",
+  "chao-song-ren": "carbon copy",
+  "wu-kao-qin-ji-lu-bu-ke-tian-bao": "No attendance record is allowed",
+  "di-yi": "The first",
+  "qing-zhi-ding": "Please specify",
+  "shen-pi-ceng-ji-she-zhi": "Approval level Setting",
+  "onelayer": "1 layer",
+  "threelayer": "3 layer",
+  "twolayer": "2 layer"
 }

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

@@ -1402,5 +1402,24 @@
   "biao-zhun-gong-shi": "标准工时",
   "qing-jia-gong-shi": "请假工时",
   "shi-fou-man-zu-gong-shi": "是否满足工时",
-  "fu-wu-xiang-mu": "服务项目"
+  "fu-wu-xiang-mu": "服务项目",
+  "zhang-hao-shou-ji-hao": "账号/手机号",
+  "mi-ma": "密码",
+  "login": "登录",
+  "lian-xi-ke-fu": "联系客服",
+  "sao-ma-jia-ke-fu-wei-xin": "扫码加客服微信",
+  "shi-yong-shuo-ming": "使用说明",
+  "qi-ye-zhu-ce": "企业注册",
+  "qing-lian-xi-guan-li-yuan-wei": "请联系管理员为",
+  "di-yi-shen-he-ren": "第一审核人",
+  "di-er-shen-he-ren": "第二审核人",
+  "di-san-shen-he-ren": "第三审核人",
+  "chao-song-ren": "抄送人",
+  "wu-kao-qin-ji-lu-bu-ke-tian-bao": "无考勤记录不可填报",
+  "di-yi": "第一、",
+  "qing-zhi-ding": "请指定",
+  "shen-pi-ceng-ji-she-zhi": "审批层级设置",
+  "onelayer": "1层",
+  "twolayer": "2层",
+  "threelayer": "3层"
 }

+ 13 - 14
fhKeeper/formulahousekeeper/timesheet/src/views/Login.vue

@@ -5,32 +5,31 @@
                 <div class="login-logo">
                     <img src="../assets/image/login_logo.png" style="width:80px;height:80px;"/>
                 </div>
-                <h3 class="title">工时管家</h3>
+                <h3 class="title">{{ $t('workingHoursHousekeeper') }}</h3>
                 <el-form-item class="login-input" prop="username">
-                    <el-input type="text" v-model="ruleForm.username" autocomplete="off" placeholder="账号/手机号" clearable prefix-icon="el-icon-user-solid"></el-input>
+                    <el-input type="text" v-model="ruleForm.username" autocomplete="off" :placeholder="$t('zhang-hao-shou-ji-hao')" clearable prefix-icon="el-icon-user-solid"></el-input>
                 </el-form-item>
                 <el-form-item class="login-input" prop="password">
-                    <el-input type="password" v-model="ruleForm.password" @keyup.enter.native="handleSubmit" autocomplete="off" placeholder="密码" show-password prefix-icon="el-icon-lock"></el-input>
+                    <el-input type="password" v-model="ruleForm.password" @keyup.enter.native="handleSubmit" autocomplete="off" :placeholder="$t('mi-ma')" show-password prefix-icon="el-icon-lock"></el-input>
                 </el-form-item>
                 <el-form-item class="login-button" style="width:100%;">
-                    <el-button type="primary" style="width:100%;" @click.native.prevent="handleSubmit" :loading="logining">登录</el-button>
+                    <el-button type="primary" style="width:100%;" @click.native.prevent="handleSubmit" :loading="logining">{{ $t('login') }}</el-button>
                 </el-form-item>
                 <div class="toRegister">
-                    <el-link type="primary" class="btn" style="float:left;" :underline="false">联系客服
+                    <el-link type="primary" class="btn" style="float:left;" :underline="false">{{ $t('lian-xi-ke-fu') }}
                         <div class="service">
-                            <p style="color: #333">扫码加客服微信</p>
+                            <p style="color: #333">{{ $t('sao-ma-jia-ke-fu-wei-xin') }}</p>
                             <img src="../assets/image/code.jpg">
                             <p><span style="color: #333">QQ:</span><span id="QQ">3052894409</span></p>
                         </div>
                     </el-link>
                     <el-link type="primary" style="margin-right:5px;" @click="dialogVisible=true" :underline="false">
-                        使用说明
-                    </el-link>
-                    <el-link type="primary" v-if="!isCorpWX" @click="jumpTo" :underline="false">企业注册</el-link>
+                        {{ $t('shi-yong-shuo-ming') }} </el-link>
+                    <el-link type="primary" v-if="!isCorpWX" @click="jumpTo" :underline="false">{{ $t('qi-ye-zhu-ce') }}</el-link>
                 </div>
             </el-form>
         </div>
-        <el-dialog title="使用说明" :visible.sync="dialogVisible" width="500px">
+        <el-dialog :title="$t('shi-yong-shuo-ming')" :visible.sync="dialogVisible" width="500px">
             <p><a style="color:#409EFF;text-decoration:none" href="upload/工时管家使用说明_基础版.docx" download="工时管家使用说明_基础版.docx" 
                         target="_blank">工时管家使用说明_基础版.docx</a></p>
             <p><a style="color:#409EFF;text-decoration:none" href="upload/工时管家使用说明_项目管理专业版.docx" download="工时管家使用说明_项目管理专业版.docx" 
@@ -61,8 +60,8 @@
                     password: ''
                 },
                 rules: {
-                    username: [{ required: true, message: '请输入账号/手机号', trigger: 'blur' },],
-                    password: [{ required: true, message: '请输入密码', trigger: 'blur' },]
+                    username: [{ required: true, message: this.$t('peaseenterthe'), trigger: 'blur' },],
+                    password: [{ required: true, message: this.$t('peaseenterthe'), trigger: 'blur' },]
                 }
             };
         },
@@ -273,7 +272,7 @@
                                 console.log('执行')
                                 if(res.data.moduleList.length == 0){
                                     this.$message({
-                                        message: '请联系管理员为\u3000' + res.data.roleName + '\u3000分配权限',
+                                        message: this.$t('qing-lian-xi-guan-li-yuan-wei')+'\u3000' + res.data.roleName + '\u3000'+this.$t('assignpermissions'),
                                         type: 'error'
                                     })
                                     return
@@ -318,7 +317,7 @@
                     if (res.code == "ok") {
                         if(res.data.moduleList.length == 0){
                             this.$message({
-                                message: '请联系管理员为\u3000' + res.data.roleName + '\u3000分配权限',
+                                message: this.$t('qing-lian-xi-guan-li-yuan-wei')+'\u3000' + res.data.roleName + '\u3000'+this.$t('assignpermissions'),
                                 type: 'error'
                             })
                             return

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

@@ -86,7 +86,7 @@
           </el-option>
         </el-select>
         <!-- 月份选择 -->
-        <el-date-picker v-if="ins == 14" value-format="yyyy-MM" v-model="monthPersonnel" type="month" placeholder="选择月份" @change="selcts()" size="small"></el-date-picker>
+        <el-date-picker v-if="ins == 14" value-format="yyyy-MM" v-model="monthPersonnel" type="month" :placeholder="$t('Selectmonth')" @change="selcts()" size="small"></el-date-picker>
           
           <!-- 部门筛选 -->
           <el-cascader v-if="((ins == 9 && permissions.reportAllTimely) || (ins == 8 && permissions.reportAllTimeDivide) || (ins == 6 && permissions.reportAllOvertime) || (ins == 11 && permissions.reportPersonnel) || (ins == 14)) && user.userNameNeedTranslate != 1" v-model="departmentIdArray" :options="departmentList" :placeholder="$t('qing-xuan-ze-bu-men')"
@@ -103,6 +103,12 @@
             </el-option>
           </el-select>
 
+          <!-- 是否满足工时 -->
+          <el-select v-if="ins == 14" v-model="whether" :placeholder="$t('shi-fou-man-zu-gong-shi')" @change="selcts()" clearable filterable size="small" style="margin-left:10px;width:150px">
+            <el-option :label="$t('state.no')" value="0"></el-option>
+            <el-option :label="$t('state.yes')" value="1"></el-option>
+          </el-select>
+
           <!-- 人员筛选 -->
           <el-select v-if="(ins == 6 || ins == 8 || ins == 9 || ins == 10 || ins == 11 || ins == 14)  && user.userNameNeedTranslate != '1'" v-model="userId" :placeholder="$t('pleaseselectpersonnel')" @change="selcts()" clearable filterable size="small" style="margin-left:10px;width:150px">
             <el-option v-for="(item, index) in selUserList" :key="index" :label="item.name" :value="item.id"></el-option>
@@ -1058,7 +1064,7 @@ export default {
             rs = s.length;  
             s += '.';  
         }  
-        while (s.length <= rs + 2) {  
+        while (s.length <= rs + 1) {  
             s += '0';  
         }  
         return s;  
@@ -1399,7 +1405,8 @@ export default {
           url += "/exportEmpMonthHours"
           sl.userId= this.userId,
           sl.departmentId = this.departmentIdArray.length > 0 ? this.departmentIdArray[this.departmentIdArray.length - 1] : '',
-          sl.month = this.monthPersonnel + '-01'
+          sl.month = this.monthPersonnel + '-01',
+          sl.whether = this.whether
         }
           this.http.post(url, sl,
             res => {
@@ -1578,7 +1585,8 @@ export default {
         userId: this.userId,
         departmentId: this.departmentIdArray.length > 0 ? this.departmentIdArray[this.departmentIdArray.length - 1] : '',
         // departmentId: '',
-        month: this.monthPersonnel + '-01'
+        month: this.monthPersonnel + '-01',
+        whether: this.whether
       }
       this.listLoading = true
       this.http.post('/project/getEmpMonthHours',parameter,
@@ -2149,6 +2157,7 @@ export default {
         return  _this.gettime
     },
     selcts(e) {
+      this.page = 1
       if(this.ins == 12){
         this.groupWorktimeList.right = []
         this.getGroupWorktimeList()

+ 45 - 45
fhKeeper/formulahousekeeper/timesheet/src/views/project/custom_data.vue

@@ -10,36 +10,36 @@
             format="yyyy-MM-dd" value-format="yyyy-MM-dd" 
             @change="getEchart" 
             :clearable="true" 
-            range-separator="至"
+            :range-separator="$t('other.to')"
             type="daterange" 
-            start-placeholder="开始日期"
-            end-placeholder="结束日期"
+            :start-placeholder="$t('time.startDate')"
+            :end-placeholder="$t('time.endDate')"
             ></el-date-picker>
 
             <el-radio-group v-model="radio" @change="getEchart" style="margin-left:10px;"  size="small">
-                <el-radio-button label="项目" v-if="permissions.customDataAll"></el-radio-button>
-                <!-- <el-radio-button label="部门"></el-radio-button> -->
-                <el-radio-button label="人员"></el-radio-button>
-                <el-radio-button label="部门"></el-radio-button>
+                <el-radio-button :label="$t('other.project')" v-if="permissions.customDataAll"></el-radio-button>
+                <!-- <el-radio-button :label="部门"></el-radio-button> -->
+                <el-radio-button :label="$t('ren-yuan')"></el-radio-button>
+                <el-radio-button :label="$t('lable.department')"></el-radio-button>
                 <!-- <el-radio-button :label="namess" v-if="jichu.customDegreeActive == 1"></el-radio-button> -->
             </el-radio-group>
         </el-col>
         <el-col :span="6">
-            <el-button @click="showExportDialog"  size="small">报表导出</el-button>
+            <el-button @click="showExportDialog"  size="small">{{ $t('reporderived') }}</el-button>
         </el-col>
         </el-row>
         <div :style="'width:'+widthHtval+'px;position: relative; height:'+containerHeight+'px;'">
              <div id="container" :style="'height:'+containerHeight+'px;width:100%'"></div>
         </div>
-        <div style="position:fixed;top:170px;left:600px;" v-show="radio=='部门' && parentDeptId != null">
-            <el-button @click="backToParentDept"  size="small">返回上级</el-button>
+        <div style="position:fixed;top:170px;left:600px;" v-show="radio==$t('lable.department') && parentDeptId != null">
+            <el-button @click="backToParentDept"  size="small">{{ $t('returnsuperior') }}</el-button>
         </div>
 
         <!--导出报表条件选择 -->
-        <el-dialog title="数据导出" v-if="exportDialog" :visible.sync="exportDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
+        <el-dialog :title="$t('Exportdata')" v-if="exportDialog" :visible.sync="exportDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
             <el-form ref="form3" :model="exportParam" >
-                <el-form-item prop="projectId" label="选择项目" v-if="permissions.customDataAll">
-                    <el-select v-model="exportParam.projectId" placeholder="全部项目"  clearable style="width:350px;" filterable="true">
+                <el-form-item prop="projectId" :label="$t('defaultText.selectProject')" v-if="permissions.customDataAll">
+                    <el-select v-model="exportParam.projectId" :placeholder="$t('other.allProject')"  clearable style="width:350px;" filterable="true">
                         <el-option v-for="item in projectList"  :key="item.id" :label="item.projectName + item.projectCode" :value="item.id">
                             <span style="float: left;color: #8492a6; font-size: 13px">{{ item.projectCode }}</span>
                             <span style="float: right;margin-left: 20px">{{ item.projectName }}</span>
@@ -52,15 +52,15 @@
                     </el-select>
                 </el-form-item> -->
 
-                <el-form-item prop="projectId" :label="user.timeType.fixMonthcost==0?'日期范围':'选择月份'">
+                <el-form-item prop="projectId" :label="user.timeType.fixMonthcost==0?$t('time.dateRange'):$t('Selectmonth')">
                     <el-date-picker v-show="user.timeType.fixMonthcost==0"
                         v-model="exportParam.dateRange" :editable="false" 
                         format="yyyy-MM-dd" value-format="yyyy-MM-dd" 
                         :clearable="false" 
-                        range-separator="至"
+                        :range-separator="$t('other.to')"
                         type="daterange" 
-                        start-placeholder="开始日期"
-                        end-placeholder="结束日期"
+                        :start-placeholder="$t('time.startDate')"
+                        :end-placeholder="$t('time.endDate')"
                     ></el-date-picker>
                 </el-form-item>
                 
@@ -73,7 +73,7 @@
                 </el-form-item> -->
             </el-form>
             <div slot="footer" class="dialog-footer">
-                <el-button type="primary" @click="exportProjectData" style="width:100%;" >导出</el-button>
+                <el-button type="primary" @click="exportProjectData" style="width:100%;" >{{ $t('export.export') }}</el-button>
             </div>
         </el-dialog>
     </section>
@@ -94,7 +94,7 @@
                 dateRange:[],
                 user: JSON.parse(sessionStorage.getItem("user")),
                 permissions: JSON.parse(sessionStorage.getItem("permissions")),
-                radio: sessionStorage.radio!=null?sessionStorage.radio:'项目',
+                radio: sessionStorage.radio!=null?sessionStorage.radio:this.$t('other.project'),
                 containerHeight: 0,    
                 myChart: null,
                 params: null,
@@ -194,7 +194,7 @@
                     param = {startDate:this.exportParam.dateRange[0], endDate: this.exportParam.dateRange[1]};
                  }
                  var url = "/project/exportCustomDataSum";
-                 var fileName = this.user.timeType.customDataName + '统计.xls';
+                 var fileName = this.user.timeType.customDataName + this.$t('statistical')+'.xls';
                 //  if (this.radio == '人员' ) {
                 //      console.log(this.exportParam.userIds);
                 //      fileName = '人员工时成本统计.xls';
@@ -238,7 +238,7 @@
             //获取人员成本统计列表
             getUserCostList() {
                 this.listLoading = true;
-                let url = this.radio == '人员' ? '/department/getUserCustomDataStatistic' : '/department/getDeptCustomDataStatistic'
+                let url = this.radio == this.$t('ren-yuan') ? '/department/getUserCustomDataStatistic' : '/department/getDeptCustomDataStatistic'
                 this.http.post(url, {
                     startDate:this.user.timeType.fixMonthcost==0?this.dateRange[0]:this.dateRange, 
                     endDate: this.user.timeType.fixMonthcost==0?this.dateRange[1]:this.dateRange
@@ -248,11 +248,11 @@
                     var _this = this;
                     this.hasReportUserList = [];
                     if (res.code == "ok") {
-                        if(this.user.userNameNeedTranslate == 1 && (this.radio == '人员' || this.radio == '部门')) {
+                        if(this.user.userNameNeedTranslate == 1 && (this.radio == this.$t('ren-yuan') || this.radio == this.$t('lable.department'))) {
                             let arr = []
                             for(var i in res.data.list) {
                                 let obj = {}
-                                if(this.radio == '人员') {
+                                if(this.radio == this.$t('ren-yuan')) {
                                     obj.type = 'userName'
                                 } else {
                                     obj.type = 'departmentName'
@@ -307,7 +307,7 @@
                     // this.hasReportUserList = this.radio == '人员' ? res.data.userList : res.data.department;
                     // var xList = [] , yList = [] , list = res.data.list, array = [] , series = [];
 
-                    this.hasReportUserList = this.radio == '人员' ? data.data.userList : data.data.department;
+                    this.hasReportUserList = this.radio == this.$t('ren-yuan') ? data.data.userList : data.data.department;
                     var xList = [] , yList = [] , list = data.data.list, array = [] , series = [];
 
                     var totalHours = 0.0;
@@ -369,7 +369,7 @@
                     var option = {
                         //总成本
                         title: {
-                            text: _this.user.timeType.customDataName + '总计' + totalHours,
+                            text: _this.user.timeType.customDataName + this.$t('zong-ji') + totalHours,
                             left:'left',
                         },
                         
@@ -412,18 +412,18 @@
                                 var res = "";
                                 for(var i in params) {
                                     if (params[i].data.value > 0) {
-                                        res += "<div style='margin-top:3px;font-size:12px;'><font color='#ddd'>项目名称:" + params[i].seriesName 
+                                        res += "<div style='margin-top:3px;font-size:12px;'><font color='#ddd'>"+_this.$t('headerTop.projectName')+":" + params[i].seriesName 
                                             + "</font><br/>"+_this.user.timeType.customDataName+" : " + params[i].data.cost+"</div>";
                                         totalTime += Number(params[i].data.cost);
                                     }
                                 }
                                 if(_this.user.userNameNeedTranslate != 1) {
-                                    res = res +'<br/>'+ params[0].name+ '<br/>总计: ' + totalTime.toFixed(1);
+                                    res = res +'<br/>'+ params[0].name+ '<br/>'+_this.$t('zong-ji')+': ' + totalTime.toFixed(1);
                                 } else {
-                                    if(_this.radio == '人员' || _this.radio == '部门') {
-                                        res = res +'<br/>'+ '' + '<br/>总计: ' + totalTime.toFixed(1);
+                                    if(_this.radio == _this.$t('ren-yuan') || _this.radio == _this.$t('lable.department')) {
+                                        res = res +'<br/>'+ '' + '<br/>'+_this.$t('zong-ji')+': ' + totalTime.toFixed(1);
                                     } else {
-                                        res = res +'<br/>'+ params[0].name+ '<br/>总计: ' + totalTime.toFixed(1);
+                                        res = res +'<br/>'+ params[0].name+ '<br/>'+_this.$t('zong-ji')+': ' + totalTime.toFixed(1);
                                     }
                                 }
                                 return res;
@@ -458,7 +458,7 @@
                 // this.jieliu()
             },
             backToParentDept() {
-                if (this.radio == '部门') {
+                if (this.radio == this.$t('lable.department')) {
                     if (this.parentDeptStack.length > 0) {
                         this.parentDeptStack.pop();
                         if (this.parentDeptStack.length > 0) {
@@ -481,11 +481,11 @@
                     // console.log(param);
                 }
                 var url = '';
-                if (this.radio=='项目') {
+                if (this.radio==this.$t('other.project')) {
                     url = '/project/getCustomDataSum';
                 // } else if (this.radio=='部门') {
                 //     url = '/department/getDeptCustomDataStatistic';
-                } else if (this.radio=='人员' || this.radio == '部门') {
+                } else if (this.radio==this.$t('ren-yuan') || this.radio == this.$t('lable.department')) {
                     this.getUserCostList();
                     return;
                 } else if (this.radio == this.namess) {
@@ -509,12 +509,12 @@
                         var list
                         var totalMoneyCost;
                         var totalHours = 0.0;
-                        if(this.radio == '项目' || this.radio=='部门') {
+                        if(this.radio == this.$t('other.project') || this.radio==this.$t('lable.department')) {
                             list = res.data.costList
-                            totalMoneyCost = ((this.radio=='项目')?res.data.totalMoneyCost:res.data.totalCostMoney);
+                            totalMoneyCost = ((this.radio==this.$t('other.project'))?res.data.totalMoneyCost:res.data.totalCostMoney);
                             for(var i in list) {
-                                if(this.radio=='项目') {
-                                    xList.push(this.radio=='项目'?list[i].project:list[i].name);
+                                if(this.radio==this.$t('other.project')) {
+                                    xList.push(this.radio==this.$t('other.project')?list[i].project:list[i].name);
                                     yList.push({
                                         "value": list[i].cost.toFixed(1),
                                         "id": list[i].id || i,
@@ -560,10 +560,10 @@
                         if(totalMoneyCost) {
                             this.zhishin = totalMoneyCost.toFixed(2)
                         } 
-                        if(this.radio == '项目' || this.radio == '人员' || this.radio=='部门') {
+                        if(this.radio == this.$t('other.project') || this.radio == this.$t('ren-yuan') || this.radio==this.$t('lable.department')) {
                             var option = {
                                 title: {
-                                    text: _this.user.timeType.customDataName+'总计:' + totalHours,
+                                    text: _this.user.timeType.customDataName+_this.$t('zong-ji')+':' + totalHours,
                                     left:'left',
                                 },
                                 // 工具箱
@@ -603,7 +603,7 @@
                         } else {
                             var option = {
                                 title: {
-                                    text: '工时成本总计' + _this.zhishin + '元, 时长'+totalHours+'小时',
+                                    text: _this.$t('otalhourscost') + _this.zhishin + _this.$t('yuan')+','+_this.$t('time.duration')+totalHours+_this.$t('time.hour'),
                                     left:'left',
                                 },
                                 // 工具箱
@@ -616,8 +616,8 @@
                                 tooltip:{
                                     trigger:'axis',
                                     formatter: function (params,ticket,callback) {
-                                        var res = params[0].name + "<br/>工作成本"+" : " + params[0].data.money 
-                                        + "元 <br/>工作时长"+" : " + params[0].data.cost + "小时";
+                                        var res = params[0].name + "<br/>"+_this.$t('workcost')+" : " + params[0].data.money 
+                                        + _this.$t('yuan')+"<br/>"+_this.$t('screening.workTime')+" : " + params[0].data.cost + _this.$t('time.hour');
                                         _this.params = params;
                                         return res;
                                     }
@@ -631,11 +631,11 @@
                                 yAxis: [{
                                     type : 'value',
                                     axisLabel: {
-                                        formatter:this.yAxisValue==0?'{value} (元)':'{value}小时'
+                                        formatter:this.yAxisValue==0?'{value} ('+this.$t('yuan')+')':'{value}'+this.$t('time.hour')
                                     }
                                 }],
                                 series: [{
-                                    name: this.yAxisValue==0?'工作成本(元)':'工作时长(小时)',
+                                    name: this.yAxisValue==0?this.$t('workcost')+'('+this.$t('yuan')+')':this.$t('screening.workTime')+'('+this.$t('time.hour')+')',
                                     type: 'bar',
                                     barMaxWidth: 30,
                                     data: yList,
@@ -723,7 +723,7 @@
                 }
                 this.exportParam.dateRange = this.dateRange;
             }
-            this.radio = this.permissions.customDataAll?'项目':'人员';
+            this.radio = this.permissions.customDataAll?this.$t('other.project'):this.$t('ren-yuan');
             this.getEchart();
             var _this = this;
             window.addEventListener("resize", function() {

+ 4 - 4
fhKeeper/formulahousekeeper/timesheet/src/views/settings/timetype.vue

@@ -165,13 +165,13 @@
         </el-row>
 
         <template v-if="timeType.reportAuditType == 3">
-        <p style="margin-left:10px;color:#666;">审批层级设置</p>
+        <p style="margin-left:10px;color:#666;">{{ $t('shen-pi-ceng-ji-she-zhi') }}</p>
         <el-row :gutter="20" style="padding-top:10px;width:100%;margin:0 auto;padding-left:10px;padding-right:10px;">
             <el-col :span="24">
                 <el-select v-model="timeType.auditLevel">
-                    <el-option :value="1" label="1层"></el-option>
-                    <el-option :value="2" label="2层"></el-option>
-                    <el-option :value="3" label="3层"></el-option>
+                    <el-option :value="1" :label="$t('onelayer')"></el-option>
+                    <el-option :value="2" :label="$t('twolayer')"></el-option>
+                    <el-option :value="3" :label="$t('threelayer')"></el-option>
                 </el-select>
             </el-col>
         </el-row>

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

@@ -7,7 +7,7 @@
                     <div class="jjk" style="display:inline-block;position:absolute;top:15px;background:#fff;left:0px;z-index: 10;margin-top: -10px;padding-top: 10px;height: 42px;">
                             <el-date-picker size="small" v-model="date" :editable="false" format="yyyy-MM" value-format="yyyy-MM"
                             style="width:190px;"
-                            @change="changeMonthOut" :clearable="false" type="month" placeholder="选择月份" :picker-options="getPickerOptions"></el-date-picker>
+                            @change="changeMonthOut" :clearable="false" type="month" :placeholder="$t('Selectmonth')" :picker-options="getPickerOptions"></el-date-picker>
                             <el-button style="margin-left:10px;" icon="iconfont firerock-icongongshitongji" size="mini"  @click="showWorkTime"></el-button>
                         </div>
                     <div slot="header" class="clearfix" id="clearfix" style="padding-left: 255px;">
@@ -31,7 +31,7 @@
                             
                             </div> -->
                             <div style="width: 100%;box-sizing: border-box;padding-right: 10px;">
-                                <el-input placeholder="请输入姓名" v-if="user.userNameNeedTranslate != 1" size="small" v-model="seluserText" style="width:100%;margin-bottom:10px" clearable>
+                                <el-input :placeholder="$t('defaultText.PleaseEnterYourName')" v-if="user.userNameNeedTranslate != 1" size="small" v-model="seluserText" style="width:100%;margin-bottom:10px" clearable>
                                     <el-button slot="append" icon="el-icon-search" @click="seluserforText()"></el-button>
                                 </el-input>
                                 <el-select v-model="selectState" size="small" @change="stateChange" style="width:100%">
@@ -287,7 +287,7 @@
                                                     <p>{{$t('other.matters')}}:<span v-html="item2.content"></span></p>
                                                     </div>
                                                     <div v-if="item2.multiWorktime==1" >
-                                                        <p>{{$t('other.projectDuration')}}:{{item2.time.toFixed(1)}}h  <el-tag type="danger" size="mini" style="margin-left: 65px" v-if="item2.isOvertime === 1">加班<span v-if="item2.overtimeHours">{{item2.overtimeHours.toFixed(1)}}h</span></el-tag></p>
+                                                        <p>{{$t('other.projectDuration')}}:{{item2.time.toFixed(1)}}h  <el-tag type="danger" size="mini" style="margin-left: 65px" v-if="item2.isOvertime === 1">{{ $t('other.WorkOvertime') }}<span v-if="item2.overtimeHours">{{item2.overtimeHours.toFixed(1)}}h</span></el-tag></p>
                                                         <div v-for="(timeItem, tIndex) in item2.worktimeList" :key="tIndex"
                                                             style="border: 0.5px #ddd solid;margin-bottom:5px;padding:5px;">
                                                             <p style="display: inline-block;">{{$t('time.duration')}}:
@@ -486,25 +486,25 @@
                     </el-form-item>
                     <!-- 111111 -->
                     <el-form-item :label="$t('other.reviewer')" v-if="user.timeType.reportAuditType == 3">
-                        <el-select v-model="domain.auditorFirst" placeholder="第一审核人" :disabled="!domain.canEdit" style="width:200px;">
+                        <el-select v-model="domain.auditorFirst" :placeholder="$t('di-yi-shen-he-ren')" :disabled="!domain.canEdit" style="width:200px;">
                             <el-option v-for="item in allUsersList" :key="item.id" :label="item.name" :value="item.id"></el-option>
                         </el-select>
 
                         <template v-if="user.timeType.auditLevel > 1">
                             <i class="el-icon-right"></i>
-                            <el-select v-model="domain.auditorSec" placeholder="第二审核人" :disabled="!domain.canEdit" style="width:200px;">
+                            <el-select v-model="domain.auditorSec" :placeholder="$t('di-er-shen-he-ren')" :disabled="!domain.canEdit" style="width:200px;">
                                 <el-option v-for="item in allUsersList" :key="item.id" :label="item.name" :value="item.id"></el-option>
                             </el-select>
                         </template>
 
                         <template v-if="user.timeType.auditLevel > 2">
                             <i class="el-icon-right"></i>
-                            <el-select v-model="domain.auditorThird" placeholder="第三审核人" :disabled="!domain.canEdit" style="width:200px;">
+                            <el-select v-model="domain.auditorThird" :placeholder="$t('di-san-shen-he-ren')" :disabled="!domain.canEdit" style="width:200px;">
                                 <el-option v-for="item in allUsersList" :key="item.id" :label="item.name" :value="item.id"></el-option>
                             </el-select>
                         </template>
                     </el-form-item>
-                    <el-form-item label="抄送人" v-if="user.timeType.reportAuditType == 3">
+                    <el-form-item :label="$t('chao-song-ren')" v-if="user.timeType.reportAuditType == 3">
                         <el-select v-model="domain.ccUserid" clearable :disabled="!domain.canEdit" style="width:200px;">
                             <el-option v-for="item in allUsersList" :key="item.id" :label="item.name" :value="item.id"></el-option>
                         </el-select>
@@ -880,26 +880,26 @@
 
                 <template v-if="user.timeType.reportAuditType == 3">
                     <div class="zhoFel">
-                        <p>第一审核人</p>
-                        <el-select v-model="zhoBao.auditorFirst" placeholder="第一审核人" style="width: 355px">
+                        <p>{{ $t('di-yi-shen-he-ren') }}</p>
+                        <el-select v-model="zhoBao.auditorFirst" :placeholder="$t('di-yi-shen-he-ren')" style="width: 355px">
                             <el-option v-for="item in allUsersList" :key="item.id" :label="item.name" :value="item.id"></el-option>
                         </el-select>
                     </div>
                     <div class="zhoFel">
-                        <p>第二审核人</p>
-                        <el-select v-model="zhoBao.auditorSec" placeholder="第二审核人" style="width: 355px">
+                        <p>{{ $t('di-er-shen-he-ren') }}</p>
+                        <el-select v-model="zhoBao.auditorSec" :placeholder="$t('di-er-shen-he-ren')" style="width: 355px">
                             <el-option v-for="item in allUsersList" :key="item.id" :label="item.name" :value="item.id"></el-option>
                         </el-select>
                     </div>
                     <div class="zhoFel">
-                        <p>第三审核人</p>
-                        <el-select v-model="zhoBao.auditorThird" placeholder="第三审核人" style="width: 355px">
+                        <p>{{ $t('di-san-shen-he-ren') }}</p>
+                        <el-select v-model="zhoBao.auditorThird" :placeholder="$t('di-san-shen-he-ren')" style="width: 355px">
                             <el-option v-for="item in allUsersList" :key="item.id" :label="item.name" :value="item.id"></el-option>
                         </el-select>
                     </div>
 
                     <div class="zhoFel">
-                        <p>抄送人</p>
+                        <p>{{ $t('chao-song-ren') }}</p>
                         <el-select v-model="zhoBao.ccUserid" :placeholder="$t('defaultText.pleaseChoose')" clearable="true" style="width: 355px">
                             <el-option v-for="item in allUsersList" :key="item.id" :label="item.name" :value="item.id"></el-option>
                         </el-select>
@@ -1921,6 +1921,29 @@
             },
             
         },
+        mounted() {
+            var now = new Date();
+            var t = util.formatDate.format(now, 'yyyy-MM-dd');
+            var startStr = util.formatDate.format(new Date(), 'yyyy-MM') + "-01";
+            this.exportParam.dateRange = [startStr,t];
+            this.getAllDate(1);
+            this.getReportList();
+            this.getProjectList();
+            this.getFillProjectList();
+            this.getTimeType();
+            this.getDepartment();
+            this.scrollFunction()
+            this.userssHu();
+            if(this.user.timeType.reportAuditType == 3){
+                this.getAllUsersList()
+            }
+            if (this.user.company.packageProject == 1) {
+                this.getBasecostItemList();
+            }
+            if(this.user.timeType.lockWorktime){
+                this.timeRange = this.timeRange.filter(item => {return item <= this.user.timeType.allday})
+            }
+        },
         methods: {
             test(){
                 // console.log('test',this.depData,this.data[0].membCount,this.reportList.length);
@@ -4444,14 +4467,14 @@
                     if(this.zhoData[i].corpTime){
                         if(this.zhoData[i].corpTime.workHours == 0){
                             this.$message({
-                                message: '无考勤记录不可填报',
+                                message: this.$t('wu-kao-qin-ji-lu-bu-ke-tian-bao'),
                                 type: 'error'
                             })
                             return
                         }
                     }else{
                         this.$message({
-                            message: '无考勤记录不可填报',
+                            message: this.$t('wu-kao-qin-ji-lu-bu-ke-tian-bao'),
                             type: 'error'
                         })
                         return
@@ -4532,13 +4555,13 @@
                 }
                 if(this.user.timeType.reportAuditType == 3){
                     let auditTips = ''
-                    if(!this.zhoBao.auditorFirst){ auditTips += '第一、' }
+                    if(!this.zhoBao.auditorFirst){ auditTips += this.$t('di-yi') }
                     // if(!this.zhoBao.auditorSec && this.user.timeType.auditLevel > 1){ auditTips += '第二、' }
                     // if(!this.zhoBao.auditorThird && this.user.timeType.auditLevel > 2){ auditTips += '第三、' }
                     if(auditTips){
                         auditTips = auditTips.substring(0,auditTips.length - 1)
                         this.$message({
-                            message: '请选择' + auditTips + '审核人',
+                            message: this.$t('defaultText.pleaseChoose') + auditTips + this.$t('other.reviewer'),
                             type: 'warning'
                         })
                         return
@@ -5664,14 +5687,14 @@
                             if (this.workForm.time){
                                 if (this.workForm.time.workHours == 0){
                                     this.$message({
-                                        message: '无考勤记录不可填报',
+                                        message: this.$t('wu-kao-qin-ji-lu-bu-ke-tian-bao'),
                                         type: 'error'
                                     })
                                     return
                                 }
                             }else{
                                 this.$message({
-                                    message: '无考勤记录不可填报',
+                                    message: this.$t('wu-kao-qin-ji-lu-bu-ke-tian-bao'),
                                     type: 'error'
                                 })
                                 return
@@ -5695,7 +5718,7 @@
                                     audItem.reportId = this.workForm.domains[i].id
                                 }
                                 if(this.user.timeType.auditLevel > 0){
-                                    if(!this.workForm.domains[i].auditorFirst){ auditRule += '第一、' }
+                                    if(!this.workForm.domains[i].auditorFirst){ auditRule += this.$t('di-yi') }
                                     audItem.auditorFirst = this.workForm.domains[i].auditorFirst
                                 }
                                 if(this.user.timeType.auditLevel > 1){
@@ -5712,7 +5735,7 @@
                                 if(auditRule){
                                     auditRule = auditRule.substring(0,auditRule.length - 1)
                                     this.$message({
-                                        message: '请指定' + auditRule + '审核人',
+                                        message: this.$t('qing-zhi-ding') + auditRule + this.$t('other.reviewer'),
                                         type: 'error'
                                     })
                                     return
@@ -6058,7 +6081,7 @@
                     this.logining = false;
                     if (res.code == "ok") {
                         this.$message({
-                            message: this.denyForm.i==0?"驳回成功":"撤销成功",
+                            message: this.denyForm.i==0?this.$t('message.rejectedsuccessfully'):this.$t('Revocationofsuccess'),
                             type: "success"
                         });
                         this.getReportList();
@@ -6191,29 +6214,6 @@
             },
             ]);
         },
-        mounted() {
-            var now = new Date();
-            var t = util.formatDate.format(now, 'yyyy-MM-dd');
-            var startStr = util.formatDate.format(new Date(), 'yyyy-MM') + "-01";
-            this.exportParam.dateRange = [startStr,t];
-            this.getAllDate(1);
-            this.getReportList();
-            this.getProjectList();
-            this.getFillProjectList();
-            this.getTimeType();
-            this.getDepartment();
-            this.scrollFunction()
-            this.userssHu();
-            if(this.user.timeType.reportAuditType == 3){
-                this.getAllUsersList()
-            }
-            if (this.user.company.packageProject == 1) {
-                this.getBasecostItemList();
-            }
-            if(this.user.timeType.lockWorktime){
-                this.timeRange = this.timeRange.filter(item => {return item <= this.user.timeType.allday})
-            }
-        }
     };
 </script>