瀏覽代碼

导入工时相关修改

seyason 1 年之前
父節點
當前提交
33747cb18c

+ 13 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportImportLogController.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.management.platform.entity.Project;
 import com.management.platform.entity.Project;
 import com.management.platform.entity.ReportImportLog;
 import com.management.platform.entity.ReportImportLog;
+import com.management.platform.entity.User;
 import com.management.platform.mapper.ReportImportLogMapper;
 import com.management.platform.mapper.ReportImportLogMapper;
 import com.management.platform.mapper.UserMapper;
 import com.management.platform.mapper.UserMapper;
 import com.management.platform.util.HttpRespMsg;
 import com.management.platform.util.HttpRespMsg;
@@ -16,6 +17,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RestController;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.time.format.DateTimeFormatter;
 import java.util.HashMap;
 import java.util.HashMap;
@@ -38,12 +40,22 @@ public class ReportImportLogController {
     private ReportImportLogMapper reportImportLogMapper;
     private ReportImportLogMapper reportImportLogMapper;
     @Resource
     @Resource
     private UserMapper userMapper;
     private UserMapper userMapper;
+    @Resource
+    private HttpServletRequest request;
 
 
     @RequestMapping("/getList")
     @RequestMapping("/getList")
     public HttpRespMsg getList(Integer companyId, @RequestParam Integer pageIndex, @RequestParam Integer pageSize) {
     public HttpRespMsg getList(Integer companyId, @RequestParam Integer pageIndex, @RequestParam Integer pageSize) {
         HttpRespMsg msg = new HttpRespMsg();
         HttpRespMsg msg = new HttpRespMsg();
         QueryWrapper<ReportImportLog> queryWrapper = new QueryWrapper<>();
         QueryWrapper<ReportImportLog> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("company_id", companyId).orderByDesc("indate");
+        //先硬编码,后面再改;针对角色是管理员的写死可见全部,其他人只能看到自己上传的记录
+        String token = request.getHeader("TOKEN");
+        User user = userMapper.selectById(token);
+        if (user.getRoleName().contains("管理员")) {
+            queryWrapper.eq("company_id", companyId).orderByDesc("indate");
+        } else {
+            queryWrapper.eq("user_id", token).eq("company_id", companyId).orderByDesc("indate");
+        }
+
         IPage<ReportImportLog> iPage = reportImportLogMapper.selectPage(new Page<>(pageIndex, pageSize),
         IPage<ReportImportLog> iPage = reportImportLogMapper.selectPage(new Page<>(pageIndex, pageSize),
                 queryWrapper);
                 queryWrapper);
         List<ReportImportLog> list = iPage.getRecords();
         List<ReportImportLog> list = iPage.getRecords();

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

@@ -202,9 +202,9 @@ public class UserController {
                                   @RequestParam Integer roleId, Double monthCost, Double cost,
                                   @RequestParam Integer roleId, Double monthCost, Double cost,
                                   Integer departmentId, Integer salaryType, String costApplyDate,
                                   Integer departmentId, Integer salaryType, String costApplyDate,
                                     String position, String certJson,String inductionDate,String superiorId,
                                     String position, String certJson,String inductionDate,String superiorId,
-                                    String plate1,String plate2,String plate3,String plate4,String plate5, String jobNumber) {
+                                    String plate1,String plate2,String plate3,String plate4,String plate5, String jobNumber, String inactiveDate) {
         return userService.insertUser(id, name, phone, roleId, monthCost, cost, departmentId, salaryType, costApplyDate,
         return userService.insertUser(id, name, phone, roleId, monthCost, cost, departmentId, salaryType, costApplyDate,
-                    position, certJson, request,inductionDate,superiorId,plate1, plate2, plate3,plate4,plate5, jobNumber);
+                    position, certJson, request,inductionDate,superiorId,plate1, plate2, plate3,plate4,plate5, jobNumber, inactiveDate);
     }
     }
 
 
     /**
     /**

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/UserService.java

@@ -38,7 +38,7 @@ public interface UserService extends IService<User> {
     HttpRespMsg insertUser(String id, String name, String phone, Integer roleId, Double monthCost, Double cost, Integer departmentId,
     HttpRespMsg insertUser(String id, String name, String phone, Integer roleId, Double monthCost, Double cost, Integer departmentId,
                            Integer salaryType, String costApplyDate, String position, String certJson,
                            Integer salaryType, String costApplyDate, String position, String certJson,
                            HttpServletRequest request,String inductionDate, String superiorId,String plate1,
                            HttpServletRequest request,String inductionDate, String superiorId,String plate1,
-                           String plate2,String plate3,String plate4,String plate5, String jobNumber);
+                           String plate2,String plate3,String plate4,String plate5, String jobNumber, String inactiveDate);
 
 
     HttpRespMsg importUser(MultipartFile multipartFile, HttpServletRequest request);
     HttpRespMsg importUser(MultipartFile multipartFile, HttpServletRequest request);
 
 

+ 0 - 71
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -669,23 +669,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     } else {
                     } else {
                         if (projectBaseCostData != null) {
                         if (projectBaseCostData != null) {
                             updateProjectBaseCostData(projectBaseCostData, project.getId());
                             updateProjectBaseCostData(projectBaseCostData, project.getId());
-
-                            //创建项目涉及到基线成本数据,要填写到快照表中
-//                            EarningSnapshot snapshot = new EarningSnapshot();
-//                            snapshot.setProjectId(project.getId());
-//                            snapshot.setContractAmount(project.getContractAmount());
-//                            snapshot.setCostData(projectBaseCostData);
-//                            snapshot.setCreatorId(user.getId());
-//                            snapshot.setCreatorName(user.getName());
-//                            snapshot.setCostTotal(budget);
-
-//                            if (project.getContractAmount() == null || project.getContractAmount() == 0 ) {
-//                                //无需处理
-//                            } else {
-//                                snapshot.setProfit(project.getContractAmount() - budget);
-//                                snapshot.setProfitPercent(100.0*(project.getContractAmount() - budget)/project.getContractAmount());
-//                                earningSnapshotMapper.insert(snapshot);
-//                            }
                         }
                         }
                         if (projectKeyNodesData != null) {
                         if (projectKeyNodesData != null) {
                             updateProjectKeyNodesData(projectKeyNodesData, project.getId());
                             updateProjectKeyNodesData(projectKeyNodesData, project.getId());
@@ -844,7 +827,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     //httpRespMsg.setError("操作失败");
                     //httpRespMsg.setError("操作失败");
                     httpRespMsg.setError(MessageUtils.message("other.operationFail"));
                     httpRespMsg.setError(MessageUtils.message("other.operationFail"));
                 } else {
                 } else {
-
                     if (customerId == null) {
                     if (customerId == null) {
                         //去掉客户
                         //去掉客户
                         projectMapper.removeProjectCustomer(id);
                         projectMapper.removeProjectCustomer(id);
@@ -859,58 +841,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         if(costList==null){
                         if(costList==null){
                             return respMsg;
                             return respMsg;
                         }
                         }
-
-                        //如果不存在基线成本快照,则生成
-//                        List<EarningSnapshot> earningSnapshots = earningSnapshotMapper.selectList(new QueryWrapper<EarningSnapshot>().eq("project_id", p.getId()).orderByDesc("id").last("limit 1"));
-//                        boolean shouldAdd = false;
-//                        if (earningSnapshots.size() == 0) {
-//                            shouldAdd = true;
-//                        } else {
-//                            //检查是否发生变化
-//                            String data = earningSnapshots.get(0).getCostData();
-//                            if (data == null) {
-//                                shouldAdd = true;
-//                            } else {
-//                                JSONArray oldArray = JSONArray.parseArray(data);
-//                                if (oldArray.size() != costList.size()) {
-//                                    //条目数量有变化,需要新增
-//                                    shouldAdd = true;
-//                                } else {
-//                                    for (int i=0; i<oldArray.size(); i++) {
-//                                        JSONObject jsonObject = oldArray.getJSONObject(i);
-//                                        ProjectBasecost projectBasecost = JSONObject.toJavaObject(jsonObject, ProjectBasecost.class);
-//                                        Optional<ProjectBasecost> first = costList.stream().filter(cost -> cost.getBaseId().equals(projectBasecost.getBaseId())).findFirst();
-//                                        if (first.isPresent()) {
-//                                            if (!first.get().getBaseAmount().equals(projectBasecost.getBaseAmount())) {
-//                                                shouldAdd = true;
-//                                                break;
-//                                            }
-//                                        } else {
-//                                            //有新增的条目,需要增加
-//                                            shouldAdd = true;
-//                                            break;
-//                                        }
-//                                    }
-//                                }
-//
-//                            }
-//                        }
-
-//                        if (shouldAdd) {
-//                            EarningSnapshot record = new EarningSnapshot();
-//                            record.setProjectId(p.getId());
-//                            record.setCreatorId(user.getId());
-//                            record.setCreatorName(user.getName());
-//                            record.setContractAmount(p.getContractAmount());
-//                            record.setCostData(projectBaseCostData);
-//                            record.setCostTotal(p.getBudget());
-//                            record.setProfit(p.getContractAmount() - p.getBudget());
-//                            if (p.getContractAmount() > 0) {
-//                                record.setProfitPercent(100.0*(p.getContractAmount() - p.getBudget())/p.getContractAmount());
-//                                earningSnapshotMapper.insert(record);
-//                            }
-//
-//                        }
                     }
                     }
                     if (projectKeyNodesData != null) {
                     if (projectKeyNodesData != null) {
                         updateProjectKeyNodesData(projectKeyNodesData, p.getId());
                         updateProjectKeyNodesData(projectKeyNodesData, p.getId());
@@ -922,7 +852,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     financeProjectsMapper.update(fp, new QueryWrapper<FinanceProjects>().eq("project_id", p.getId()));
                     financeProjectsMapper.update(fp, new QueryWrapper<FinanceProjects>().eq("project_id", p.getId()));
                 }
                 }
                 Project newProject = projectMapper.selectById(id);
                 Project newProject = projectMapper.selectById(id);
-                String path = Project.class.getClassLoader().getResource("/").getPath();
                 BeanChangeUtil<Project> beanChangeUtil=new BeanChangeUtil();
                 BeanChangeUtil<Project> beanChangeUtil=new BeanChangeUtil();
                 String content = beanChangeUtil.contrastObj(oldProject, newProject);
                 String content = beanChangeUtil.contrastObj(oldProject, newProject);
                 OperationRecord operationRecord =new OperationRecord();
                 OperationRecord operationRecord =new OperationRecord();

+ 3 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserServiceImpl.java

@@ -1280,7 +1280,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
     @Override
     @Override
     public HttpRespMsg insertUser(String targetId, String name, String phone, Integer roleId, Double monthCost, Double cost,
     public HttpRespMsg insertUser(String targetId, String name, String phone, Integer roleId, Double monthCost, Double cost,
                                   Integer departmentId, Integer salaryType, String costApplyDate, String position, String certJson, HttpServletRequest request,String inductionDate,
                                   Integer departmentId, Integer salaryType, String costApplyDate, String position, String certJson, HttpServletRequest request,String inductionDate,
-                                  String superiorId,   String plate1,String plate2,String plate3,String plate4,String plate5, String jobNumber) {
+                                  String superiorId,   String plate1,String plate2,String plate3,String plate4,String plate5, String jobNumber, String inactiveDate) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         try {
         try {
@@ -1385,7 +1385,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                 }
                 }
 
 
                 String oldCostApplyDate = oldUser.getCostApplyDate();
                 String oldCostApplyDate = oldUser.getCostApplyDate();
-                if(inductionDate!=null&&inductionDate!=""){
+                if(!StringUtils.isEmpty(inductionDate)){
                     oldUser.setInductionDate(LocalDate.parse(inductionDate,dtf));
                     oldUser.setInductionDate(LocalDate.parse(inductionDate,dtf));
                 }
                 }
                 //检查直属审核人是否发生变化
                 //检查直属审核人是否发生变化
@@ -1404,6 +1404,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                         .setCost(costValue)
                         .setCost(costValue)
                         .setPosition(position)
                         .setPosition(position)
                         .setCostApplyDate(costApplyDate)
                         .setCostApplyDate(costApplyDate)
+                        .setInactiveDate(StringUtils.isEmpty(inactiveDate) ? null : LocalDate.parse(inactiveDate, dtf))
                         .setSalaryType(salaryType)
                         .setSalaryType(salaryType)
                         .setDepartmentId(departmentId == null ? 0 : departmentId)
                         .setDepartmentId(departmentId == null ? 0 : departmentId)
                         .setDepartmentCascade(departmentId == null ?
                         .setDepartmentCascade(departmentId == null ?

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/UserCorpwxTimeMapper.xml

@@ -54,7 +54,7 @@
             </foreach> GROUP BY r.`creator_id` ) report_time
             </foreach> GROUP BY r.`creator_id` ) report_time
         ON report_time.creator_id = user.id
         ON report_time.creator_id = user.id
         WHERE user.company_id=#{companyId}
         WHERE user.company_id=#{companyId}
-        and  ((user.`is_active` = 1 AND (user.`induction_date` IS NULL OR DATE_FORMAT(user.`induction_date`, '%Y%m') &lt;= #{ymonth} )) OR (user.`is_active` = 0 AND DATE_FORMAT(user.`inactive_date`, '%Y%m') &gt;= #{ymonth}))
+        and  ((user.`is_active` = 1 AND (user.`induction_date` IS NULL OR DATE_FORMAT(user.`induction_date`, '%Y%m') &lt;= #{ymonth} )) OR (user.`is_active` = 0 AND DATE_FORMAT(user.`inactive_date`, '%Y%m%d') &gt; CONCAT(#{ymonth}, '01')))
         <if test="deptIds != null">
         <if test="deptIds != null">
             AND user.`department_id` in
             AND user.`department_id` in
             <foreach collection="deptIds" item="deptId" open="(" separator="," close=")">
             <foreach collection="deptIds" item="deptId" open="(" separator="," close=")">

+ 0 - 6
fhKeeper/formulahousekeeper/timesheet/src/views/project/cost.vue

@@ -697,12 +697,6 @@
                                 restore:{
                                 restore:{
                                     show:true
                                     show:true
                                 },
                                 },
-                                // dataView:{
-                                //     show:true
-                                // },
-                                // dataZoom:{
-                                //     show:true
-                                // },
                                 magicType:{
                                 magicType:{
                                     type:['line','bar']
                                     type:['line','bar']
                                 }
                                 }

+ 1 - 7
fhKeeper/formulahousekeeper/timesheet/src/views/project/detail.vue

@@ -173,17 +173,11 @@
                         show: true,
                         show: true,
                         feature:{
                         feature:{
                             saveAsImage:{
                             saveAsImage:{
-                                show:true
+                                show: this.user.userNameNeedTranslate == 1 ? false : true
                             },
                             },
                             restore:{
                             restore:{
                                 show:true
                                 show:true
                             },
                             },
-                            dataView:{
-                                show:true
-                            },
-                            dataZoom:{
-                                show:true
-                            },
                             magicType:{
                             magicType:{
                                 type:['line','bar']
                                 type:['line','bar']
                             }
                             }

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

@@ -417,11 +417,12 @@
                 <el-button size="small" type="primary" v-if="user.roleName='超级管理员'" @click="batchDelete()" :loading="isDeleting">批量删除</el-button>
                 <el-button size="small" type="primary" v-if="user.roleName='超级管理员'" @click="batchDelete()" :loading="isDeleting">批量删除</el-button>
             </template>
             </template>
             
             
-            <el-pagination
+            <el-pagination :key="projectListPageComponentKey"
                 @size-change="handleSizeChange"
                 @size-change="handleSizeChange"
                 @current-change="handleCurrentChange"
                 @current-change="handleCurrentChange"
                 :page-sizes="[20 , 50 , 80 , 100]"
                 :page-sizes="[20 , 50 , 80 , 100]"
                 :page-size="size"
                 :page-size="size"
+                :current-page.sync="page"
                 layout="total, sizes, prev, pager, next"
                 layout="total, sizes, prev, pager, next"
                 :total="total"
                 :total="total"
                 style="float:right;"
                 style="float:right;"
@@ -1418,6 +1419,7 @@ a {
         },
         },
         data() {
         data() {
             return {
             return {
+                projectListPageComponentKey: 1,
                 isDeleting: false,
                 isDeleting: false,
                 forSubProjectlist:[],
                 forSubProjectlist:[],
                 copySubPListVisible: false,
                 copySubPListVisible: false,
@@ -3820,6 +3822,7 @@ a {
 
 
             //获取项目列表
             //获取项目列表
             getList() {
             getList() {
+                localStorage.projectPageIndex = this.page;
                 this.listLoading = true;
                 this.listLoading = true;
                 let parameter = {
                 let parameter = {
                     pageIndex: this.page,
                     pageIndex: this.page,
@@ -3891,7 +3894,7 @@ a {
                         // this.$nextTick(()=>{
                         // this.$nextTick(()=>{
                         //     this.$refs.projectlistOfWudulist.doLayout();
                         //     this.$refs.projectlistOfWudulist.doLayout();
                         // })
                         // })
-                        this.listHeader = res.data.nameList
+                        this.listHeader = res.data.nameList;
                     } else {
                     } else {
                         this.$message({
                         this.$message({
                         message: res.msg,
                         message: res.msg,
@@ -4770,6 +4773,12 @@ a {
             this.userssHu()
             this.userssHu()
             this.getDepartment();
             this.getDepartment();
             this.getDepartment2();
             this.getDepartment2();
+            this.projectListPageComponentKey++;
+            //localStorage中为string类型,需转化为int类型才会发生渲染
+            if (localStorage.projectPageIndex) {
+                this.page = parseInt(localStorage.projectPageIndex);
+            }
+            
             this.getList();
             this.getList();
             this.getUsers();
             this.getUsers();
             this.getCustomerList();
             this.getCustomerList();

+ 11 - 3
fhKeeper/formulahousekeeper/timesheet/src/views/team/index.vue

@@ -220,10 +220,10 @@
                 <el-table-column :label="$t('jiao-se')" width="100">
                 <el-table-column :label="$t('jiao-se')" width="100">
                     <template slot-scope="scope">{{scope.row.roleName}}</template>
                     <template slot-scope="scope">{{scope.row.roleName}}</template>
                 </el-table-column>
                 </el-table-column>
-                <el-table-column prop="monthCost" :label="$t('monthcost')"  v-if="permissions.structurePersonnel">
-                    <template slot-scope="scope">{{user.timeType.isSecretSalary==0?(scope.row.monthCost==null?0:scope.row.monthCost):'*'}} {{ $t('yuan') }}</template>
+                <el-table-column prop="monthCost" :label="$t('monthcost')" align="right" v-if="permissions.structurePersonnel" width="140">
+                    <template slot-scope="scope">{{user.timeType.isSecretSalary==0?(scope.row.monthCost==null?0:scope.row.monthCost.toFixed(2)):'*'}} {{ $t('yuan') }}</template>
                 </el-table-column>
                 </el-table-column>
-                <el-table-column prop="cost" :label="$t('hourlywage')"  v-if="permissions.structurePersonnel" width="150">
+                <el-table-column prop="cost" :label="$t('hourlywage')"  v-if="permissions.structurePersonnel" width="150" align="right">
                     <template slot-scope="scope">{{user.timeType.isSecretSalary==0?(scope.row.cost==null?0:scope.row.cost):'*'}} {{ $t('yuan') }}
                     <template slot-scope="scope">{{user.timeType.isSecretSalary==0?(scope.row.cost==null?0:scope.row.cost):'*'}} {{ $t('yuan') }}
                         <el-link v-if="user.timeType.isSecretSalary==0" @click.native="showSalaryList(scope.row)"><i class="iconfont firerock-iconrecord"></i></el-link>
                         <el-link v-if="user.timeType.isSecretSalary==0" @click.native="showSalaryList(scope.row)"><i class="iconfont firerock-iconrecord"></i></el-link>
                     </template>
                     </template>
@@ -448,6 +448,9 @@
                   <el-form-item :label="$t('entrytime')" prop="phone">
                   <el-form-item :label="$t('entrytime')" prop="phone">
                       <el-date-picker v-model="insertForm.inductionDate" value-format="yyyy-MM-dd"></el-date-picker>
                       <el-date-picker v-model="insertForm.inductionDate" value-format="yyyy-MM-dd"></el-date-picker>
                   </el-form-item>
                   </el-form-item>
+                  <el-form-item label="离职日期" prop="inactiveDate" v-if="insertForm.isActive == 0">
+                      <el-date-picker v-model="insertForm.inactiveDate" value-format="yyyy-MM-dd"></el-date-picker>
+                  </el-form-item>
                   <el-form-item :label="$t('postrank')" prop="phone">
                   <el-form-item :label="$t('postrank')" prop="phone">
                       <el-input v-model="insertForm.position" :placeholder="$t('joblevel')" clearable></el-input>
                       <el-input v-model="insertForm.position" :placeholder="$t('joblevel')" clearable></el-input>
                   </el-form-item>
                   </el-form-item>
@@ -2638,6 +2641,8 @@ export default {
                 salaryType: res.data.salaryType,
                 salaryType: res.data.salaryType,
                 costApplyDate: res.data.costApplyDate,
                 costApplyDate: res.data.costApplyDate,
                 // inductionDate: res.data.inductionDate,
                 // inductionDate: res.data.inductionDate,
+                inactiveDate: res.data.inactiveDate,
+                isActive: res.data.isActive,
                 position: res.data.position,
                 position: res.data.position,
                 certJson: res.data.certList,
                 certJson: res.data.certList,
                 plateMap: {},
                 plateMap: {},
@@ -2750,6 +2755,9 @@ export default {
             plate5: this.insertForm.plate5,
             plate5: this.insertForm.plate5,
             jobNumber: this.insertForm.jobNumber,
             jobNumber: this.insertForm.jobNumber,
           };
           };
+          if (this.insertForm.isActive == 0) {
+            form.inactiveDate = this.insertForm.inactiveDate;
+          }
 
 
           // for(let i=0;i<5;i++) {
           // for(let i=0;i<5;i++) {
           //     if(this.insertFormPlates[i]){
           //     if(this.insertFormPlates[i]){

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

@@ -1636,7 +1636,7 @@
                 <span style="font-size:16px;">{{$t('other.Batchimportofworkinghours')}}</span>
                 <span style="font-size:16px;">{{$t('other.Batchimportofworkinghours')}}</span>
                 <el-link v-if="active==0"  style="float:right;margin-right:100px;" type="primary" @click="toView()">{{$t('other.viewLaborImportRecords')}}</el-link>
                 <el-link v-if="active==0"  style="float:right;margin-right:100px;" type="primary" @click="toView()">{{$t('other.viewLaborImportRecords')}}</el-link>
                 <el-link v-if="active==0"  style="float:right;margin-right:100px;" type="primary" @click="downloadProjectRatio">下载填报工时占比表</el-link>
                 <el-link v-if="active==0"  style="float:right;margin-right:100px;" type="primary" @click="downloadProjectRatio">下载填报工时占比表</el-link>
-                <el-link v-if="active==0 && user.companyId == 469"  style="float:right;margin-right:100px;" type="primary" @click="importCardTimeVisi = true">导入考勤时长</el-link>
+                <el-link v-if="active==0 && user.companyId == 469 && user.roleName.indexOf('管理员') > 0"  style="float:right;margin-right:100px;" type="primary" @click="importCardTimeVisi = true">导入考勤时长</el-link>
                 <el-link v-if="active==0 && user.companyId == 469 && user.roleName == '超级管理员'"  style="float:right;margin-right:50px;" type="primary" @click="showBatchDeleteReport = true; startDeleting = false;">批量删除日报</el-link>
                 <el-link v-if="active==0 && user.companyId == 469 && user.roleName == '超级管理员'"  style="float:right;margin-right:50px;" type="primary" @click="showBatchDeleteReport = true; startDeleting = false;">批量删除日报</el-link>
                 <el-link v-if="active==0 && user.companyId == 469 && user.roleName == '超级管理员'"  style="float:right;margin-right:50px;" type="primary" @click="showBatchSimpleApproveReport = true; startDeleting = false;">批量审核日报</el-link>
                 <el-link v-if="active==0 && user.companyId == 469 && user.roleName == '超级管理员'"  style="float:right;margin-right:50px;" type="primary" @click="showBatchSimpleApproveReport = true; startDeleting = false;">批量审核日报</el-link>
             </div>
             </div>