yusm 3 settimane fa
parent
commit
2e4bca440f

+ 11 - 21
fhKeeper/formulahousekeeper/collectdata/src/main/java/com/management/collectdata/controller/DataCollectController.java

@@ -12,10 +12,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
+import java.sql.*;
 import java.text.SimpleDateFormat;
 import java.time.Duration;
 import java.time.LocalDate;
@@ -703,13 +700,10 @@ public class DataCollectController {
         //获取销售主表单信息数据
 //        String sqlQueryMain = "select id,cSOCode,iStatus ,dverifysystime,dcreatesystime,dverifydate,iverifystate,dDate   " +
 //                "from  SO_SOMAIN ssm  where ssm.dverifydate >= DATEADD(day, -30, GETDATE()) order by ID OFFSET ? ROWS FETCH NEXT ? ROWS ONLY ";
-        String sqlQueryMain = "select id,cSOCode,iStatus ,dverifysystime,dcreatesystime,dverifydate,iverifystate,dDate   " +
-                "from  SO_SOMAIN ssm  where ssm.iStatus = 1  ssm.cdefine1 = '设备' and  cstcode = 10 and ssm.dverifydate >= DATEADD(day, -30, GETDATE()) order by ID";
+        String sqlQueryMain = "select id,cSOCode,iStatus ,FORMAT(dverifysystime,'yyyy-MM-dd HH:mm:ss') as dverifysystime,FORMAT(dverifydate,'yyyy-MM-dd') as dverifydate,iverifystate,FORMAT(dDate,'yyyy-MM-dd') as dDate   " +
+                "from  SO_SOMAIN ssm  where ssm.iStatus = 1  and  ssm.cdefine1 = '设备' and  cstcode = 10 and ssm.dverifydate >= DATEADD(day, -30, GETDATE()) order by ID";
         //获取销售主表单信息数据
-        String sqlQueryDetail = "select id,autoId,cSOCode,cItemCode ,cItemName from SO_SODetails ssd where ssd.cSOCode in (?)";
-
-        String sqlQueryProdMain="select moId,moCode,createTime,createDate,modifyDate from mom_order";
-        String sqlQueryProdDetail="select relsTime, CostItemName ,Define24 ,OrderDId ,CostItemCode ,MoDId ,moid ,relsDate from mom_orderdetail";
+        String sqlQueryDetail = "select id,autoId,cSOCode,cItemCode ,cItemName from SO_SODetails ssd where ssd.id in (%s)";
 
         SimpleDateFormat sdfYmd = new SimpleDateFormat("yyyy-MM-dd");
         DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
@@ -726,7 +720,6 @@ public class DataCollectController {
                     SaleOrderMain saleOrderMain = new SaleOrderMain();
                     saleOrderMain.setId(resultSet.getString("id"));
                     saleOrderMain.setOrderApproveDateTime(LocalDateTime.parse(resultSet.getString("dverifysystime"),df));
-                    saleOrderMain.setOrderCreateDateTime(LocalDateTime.parse(resultSet.getString("dcreatesystime "),df));
                     saleOrderMain.setOrderApproveDate(LocalDate.parse(resultSet.getString("dverifydate"),df1));
                     saleOrderMain.setOrderNo(resultSet.getString("cSOCode"));
                     saleOrderMain.setOrderStatus(resultSet.getInt("iStatus"));
@@ -734,10 +727,9 @@ public class DataCollectController {
                     resList.add(saleOrderMain);
                 }
             }
-            List<String> mainIds = resList.stream().map(i -> i.getId()).distinct().collect(Collectors.toList());
+            String mainIds = resList.stream().map(i -> "'" + i.getId() + "'").collect(Collectors.joining(","));
+            sqlQueryDetail= String.format(sqlQueryDetail, mainIds);
             PreparedStatement queryDetail = connection.prepareStatement(sqlQueryDetail);
-            String join = String.join(",", mainIds);
-            queryMain.setString(1, join);
             List<SaleOrderDetail> saleOrderDetails=new ArrayList<>();
             try (ResultSet resultSet = queryDetail.executeQuery()) {
                 while (resultSet.next()) {
@@ -764,9 +756,9 @@ public class DataCollectController {
 
     @RequestMapping("/getProdOrderData")
     public List<ProdOrderMain> getProdOrderData(@RequestBody PageBO pageBO) {
-        String sqlQueryMain = "select moId,moCode,createTime,createDate,modifyDate from mom_order where  mom.createDate >= DATEADD(day, -30, GETDATE()) order by ID";
+        String sqlQueryMain = "select moId,moCode,FORMAT(createDate,'yyyy-MM-dd') AS createDate ,FORMAT(modifyDate,'yyyy-MM-dd') AS modifyDate from mom_order mom where  mom.createDate >= DATEADD(day, -30, GETDATE()) order by moId";
         //获取销售主表单信息数据
-        String sqlQueryDetail = "select relsTime, CostItemName ,Define24 ,OrderDId ,CostItemCode ,MoDId ,moid ,relsDate,Status  from mom_orderdetail momd where momd.moid in (?)";
+        String sqlQueryDetail = "select FORMAT(relsTime, 'yyyy-MM-dd HH:mm:ss') AS relsTime, CostItemName ,Define24 ,OrderDId ,CostItemCode ,MoDId ,moid ,FORMAT(relsDate, 'yyyy-MM-dd') AS relsDate,Status  from mom_orderdetail momd where momd.relsDate is not null and momd.moid in (%s)";
 
         SimpleDateFormat sdfYmd = new SimpleDateFormat("yyyy-MM-dd");
         DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
@@ -783,15 +775,13 @@ public class DataCollectController {
                     ProdOrderMain prodOrderMain = new ProdOrderMain();
                     prodOrderMain.setId(resultSet.getString("moId"));
                     prodOrderMain.setCreateDate(LocalDate.parse(resultSet.getString("createDate"),df1));
-                    prodOrderMain.setCreateTime(LocalDateTime.parse(resultSet.getString("createTime "),df));
                     prodOrderMain.setCode(resultSet.getString("moCode"));
                     resList.add(prodOrderMain);
                 }
             }
-            List<String> mainIds = resList.stream().map(i -> i.getId()).distinct().collect(Collectors.toList());
+            String mainIds = resList.stream().map(i -> "'" + i.getId() + "'").collect(Collectors.joining(","));
+            sqlQueryDetail= String.format(sqlQueryDetail, mainIds);
             PreparedStatement queryDetail = connection.prepareStatement(sqlQueryDetail);
-            String join = String.join(",", mainIds);
-            queryMain.setString(1, join);
             List<ProdOrderDetail> prodOrderDetails=new ArrayList<>();
             try (ResultSet resultSet = queryDetail.executeQuery()) {
                 while (resultSet.next()) {
@@ -800,7 +790,7 @@ public class DataCollectController {
                     prodOrderDetail.setMainId(resultSet.getString("moid"));
                     prodOrderDetail.setProjectCode(resultSet.getString("Define24"));
                     prodOrderDetail.setRelsDate(LocalDate.parse(resultSet.getString("relsDate"),df1));
-                    prodOrderDetail.setRelsTime(LocalDateTime.parse(resultSet.getString("relsDate"),df));
+                    prodOrderDetail.setRelsTime(LocalDateTime.parse(resultSet.getString("relsTime"),df));
                     prodOrderDetail.setStatus(resultSet.getInt("Status"));
                     prodOrderDetails.add(prodOrderDetail);
                 }

+ 58 - 9
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskGroupController.java

@@ -2,7 +2,6 @@ package com.management.platform.controller;
 
 
 import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.management.platform.entity.*;
@@ -14,7 +13,6 @@ import com.management.platform.util.ListUtil;
 import com.management.platform.util.MessageUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.util.StringUtils;
-import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
@@ -22,9 +20,10 @@ import org.springframework.web.bind.annotation.RestController;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 /**
  * <p>
@@ -71,6 +70,14 @@ public class TaskGroupController {
     private GroupParticipatorService groupParticipatorService;
     @Resource
     private ParticipationService participationService;
+    @Resource
+    private SaleOrderMainMapper saleOrderMainMapper;
+    @Resource
+    private SaleOrderDetailMapper saleOrderDetailMapper;
+    @Resource
+    private ProdOrderDetailMapper prodOrderDetailMapper;
+    @Resource
+    private ProdOrderMainMapper prodOrderMainMapper;
     /**
      * 保存任务分组
      */
@@ -427,16 +434,18 @@ public class TaskGroupController {
      * @return
      */
     @RequestMapping("/listMyJoinGroup")
-    public HttpRespMsg listMyJoinGroup(TaskGroup item, @RequestParam(required = false, defaultValue = "0") Integer isSubstitude) {
+    public HttpRespMsg listMyJoinGroup(TaskGroup item, @RequestParam(required = false, defaultValue = "0") Integer isSubstitude,@RequestParam String workDate) {
         HttpRespMsg msg = new HttpRespMsg();
         String token = request.getHeader("TOKEN");
+        User user = userMapper.selectById(token);
         Integer projectId = item.getProjectId();
         Project project = projectMapper.selectById(projectId);
         QueryWrapper<TaskGroup> queryWrapper = new QueryWrapper<TaskGroup>();
         queryWrapper.eq("project_id", projectId);
         TimeType timeType = timeTypeMapper.selectById(project.getCompanyId());
+        List<TaskGroup> taskGroups=new ArrayList<>();
         if (isSubstitude == 1) {
-            msg.data = taskGroupService.list(queryWrapper);
+            taskGroups = taskGroupService.list(queryWrapper);
         } else {
             if (timeType.getReportAuditType() == 1 || timeType.getReportAuditType() == 2 || timeType.getReportAuditType() == 9) {
                 List<GroupParticipator> groupParticipatorList = groupParticipatorMapper.selectList(new QueryWrapper<GroupParticipator>().eq("user_id", token));
@@ -446,15 +455,55 @@ public class TaskGroupController {
                     queryWrapper1.and(wrapper->wrapper.in("id", groupIds).or().eq("incharger_id", token));
 
                     List<TaskGroup> list = taskGroupService.list(queryWrapper1);
-                    msg.data = list;
+                    taskGroups = list;
                 } else {
-                    msg.data = new ArrayList<>();
+                    taskGroups = new ArrayList<>();
                 }
             } else {
-                msg.data = taskGroupService.list(queryWrapper);
+                taskGroups = taskGroupService.list(queryWrapper);
             }
         }
-
+        //针对泓浒 需要特殊处理分组
+        if(user.getCompanyId()==7536){
+            //检查生产订单和销售订单
+            DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd");
+            String projectCode = project.getProjectCode();
+            LocalDate workDateValue = LocalDate.parse(workDate, df);
+            //直接查询明细 绑定项目编号
+            List<ProdOrderDetail> prodOrderDetails = prodOrderDetailMapper.selectList(new LambdaQueryWrapper<ProdOrderDetail>().eq(ProdOrderDetail::getProjectCode, projectCode).orderByAsc(ProdOrderDetail::getRelsDate));
+            List<SaleOrderDetail> saleOrderDetails = saleOrderDetailMapper.selectList(new LambdaQueryWrapper<SaleOrderDetail>().eq(SaleOrderDetail::getProjectCode, projectCode));
+            //存在销售订单数据 检查销售订单主数据订单审批时间与填报日期
+            if(saleOrderDetails!=null&&saleOrderDetails.size()>0){
+                //需要处理 是否存在生产订单审批日期在前的情况 存在销售订单 但是生产订单在前 销售订单在后的情况
+                List<String> mainIdList = saleOrderDetails.stream().map(i -> i.getMainId()).distinct().collect(Collectors.toList());
+                List<SaleOrderMain> orderMains = saleOrderMainMapper.selectList(new LambdaQueryWrapper<SaleOrderMain>().in(SaleOrderMain::getId, mainIdList).orderByAsc(SaleOrderMain::getOrderApproveDate));
+                //校验最早审批通过时间
+                SaleOrderMain saleOrderMain = orderMains.get(0);
+                ProdOrderDetail prodOrderDetail = prodOrderDetails.get(0);
+                LocalDate orderApproveDate = saleOrderMain.getOrderApproveDate();
+                LocalDate relsDate = prodOrderDetail.getRelsDate();
+                if(relsDate.isBefore(orderApproveDate)){
+                    if(relsDate.isAfter(workDateValue)){
+                        taskGroups=taskGroups.stream().filter(i->i.getName().equals("售前工时")).collect(Collectors.toList());
+                    }
+                }else {
+                    if(orderApproveDate.isAfter(workDateValue)){
+                        taskGroups=taskGroups.stream().filter(i->i.getName().equals("售前工时")).collect(Collectors.toList());
+                    }
+                }
+            }else if(prodOrderDetails!=null && prodOrderDetails.size()>0){
+              //不存在销售订单 但是存在生产订单的情况
+                //校验最早审批通过时间
+                ProdOrderDetail prodOrderDetail = prodOrderDetails.get(0);
+                LocalDate relsDate = prodOrderDetail.getRelsDate();
+                if(relsDate.isAfter(workDateValue)){
+                    taskGroups=taskGroups.stream().filter(i->i.getName().equals("售前工时")).collect(Collectors.toList());
+                }
+            } else {
+                taskGroups=taskGroups.stream().filter(i->i.getName().equals("售前工时")).collect(Collectors.toList());
+            }
+        }
+        msg.data=taskGroups;
         return msg;
     }
 

+ 10 - 5
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ProdOrderMain.java

@@ -1,15 +1,17 @@
 package com.management.platform.entity;
 
-import com.baomidou.mybatisplus.extension.activerecord.Model;
-import java.time.LocalDate;
-import com.baomidou.mybatisplus.annotation.TableId;
-import java.time.LocalDateTime;
 import com.baomidou.mybatisplus.annotation.TableField;
-import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+
 /**
  * <p>
  * 生产订单主表
@@ -49,6 +51,9 @@ public class ProdOrderMain extends Model<ProdOrderMain> {
     @TableField("create_date")
     private LocalDate createDate;
 
+    @TableField(exist = false)
+    private List<ProdOrderDetail> prodOrderDetails;
+
 
     @Override
     protected Serializable pkVal() {

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/SaleOrderMain.java

@@ -67,7 +67,7 @@ public class SaleOrderMain extends Model<SaleOrderMain> {
      * 订单审批日期
      */
     @TableField("order_approve_date")
-    private LocalDateTime orderApproveDate;
+    private LocalDate orderApproveDate;
 
     /**
      * 同步时间戳

+ 63 - 11
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/DataCollectTask.java

@@ -1,9 +1,7 @@
 package com.management.platform.task;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.management.platform.entity.FinanceMonthlyWorktime;
-import com.management.platform.entity.SaleOrderDetail;
-import com.management.platform.entity.SaleOrderMain;
+import com.management.platform.entity.*;
 import com.management.platform.entity.vo.TisTimeVO;
 import com.management.platform.mapper.FinanceMonthlyWorktimeMapper;
 import com.management.platform.mapper.FmwDetailMapper;
@@ -53,6 +51,10 @@ public class DataCollectTask {
     private SaleOrderMainService saleOrderMainService;
     @Resource
     private SaleOrderDetailService saleOrderDetailService;
+    @Resource
+    private ProdOrderMainService prodOrderMainService;
+    @Resource
+    private ProdOrderDetailService prodOrderDetailService;
 
     @Scheduled(cron = "30 10 8,12,20 * * ?")
 //    @Scheduled(cron = "30 08 21 * * ?")
@@ -176,16 +178,11 @@ public class DataCollectTask {
     /**
      * 同步销售订单数据
      */
-    @Scheduled(cron ="0 0 4 * * ?")
+    @Scheduled(cron ="0 00 17 * * ?")
     public void saleOrderData(){
-        if(isDev){return;}
-        if(isPrivateDeploy) return;
+//        if(isDev){return;}
+//        if(isPrivateDeploy) return;
         LocalDate nowDate = LocalDate.now();
-        int today = nowDate.getMonthValue();
-        int lastDay = Calendar.getInstance().getActualMaximum(Calendar.DAY_OF_MONTH);
-        if(today != lastDay){
-            return ;
-        }
         RestTemplate restTemplate = new RestTemplate();
         String getUrl = PREFIX_URL+"/dataCollect/getSaleOrderData";
         SimpleDateFormat sdfYm = new SimpleDateFormat("yyyy-MM");
@@ -212,4 +209,59 @@ public class DataCollectTask {
         }
     }
 
+    /**
+     * 同步销售订单数据
+     */
+    @Scheduled(cron ="0 00 17 * * ?")
+    public void prdOrderData(){
+//        if(isDev){return;}
+//        if(isPrivateDeploy) return;
+        LocalDate nowDate = LocalDate.now();
+        RestTemplate restTemplate = new RestTemplate();
+        String getUrl = PREFIX_URL+"/dataCollect/getProdOrderData";
+        SimpleDateFormat sdfYm = new SimpleDateFormat("yyyy-MM");
+        Date date = new Date();
+        String dateYm = sdfYm.format(date);
+        //校验cppid
+        HttpHeaders headers = new HttpHeaders();
+        headers.setContentType(MediaType.APPLICATION_JSON);
+        Map<String, Object> requestBody = new HashMap<>();
+        HttpEntity<Object> requestEntity = new HttpEntity<>(requestBody, headers);
+        ResponseEntity<List<ProdOrderMain>> checkResponse = restTemplate.exchange(getUrl, HttpMethod.POST, requestEntity
+                ,new  ParameterizedTypeReference<List<ProdOrderMain>>(){});
+        if (checkResponse.getStatusCode() == HttpStatus.OK) {
+            List<ProdOrderMain> resList = checkResponse.getBody();
+            if(null!=resList&&resList.size()>0){
+                prodOrderMainService.saveOrUpdateBatch(resList);
+                List<ProdOrderDetail> prodOrderDetails=new ArrayList<>();
+                for (ProdOrderMain prodOrderMain : resList) {
+                    List<ProdOrderDetail> details = prodOrderMain.getProdOrderDetails();
+                    if(null!=details){
+                        prodOrderDetails.addAll(details);
+                    }
+                }
+                prodOrderDetailService.saveOrUpdateBatch(prodOrderDetails);
+            }
+        }
+    }
+
+    public static void main(String[] args) {
+        RestTemplate restTemplate = new RestTemplate();
+        String getUrl = PREFIX_URL+"/dataCollect/getProdOrderData";
+        SimpleDateFormat sdfYm = new SimpleDateFormat("yyyy-MM");
+        Date date = new Date();
+        String dateYm = sdfYm.format(date);
+        //校验cppid
+        HttpHeaders headers = new HttpHeaders();
+        headers.setContentType(MediaType.APPLICATION_JSON);
+        Map<String, Object> requestBody = new HashMap<>();
+        HttpEntity<Object> requestEntity = new HttpEntity<>(requestBody, headers);
+        ResponseEntity<List<ProdOrderMain>> checkResponse = restTemplate.exchange(getUrl, HttpMethod.POST, requestEntity
+                ,new  ParameterizedTypeReference<List<ProdOrderMain>>(){});
+        if (checkResponse.getStatusCode() == HttpStatus.OK) {
+            List<ProdOrderMain> resList = checkResponse.getBody();
+            System.out.println(resList);
+        }
+    }
+
 }

File diff suppressed because it is too large
+ 17173 - 10658
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue


File diff suppressed because it is too large
+ 923 - 673
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/newWeeklyCustomization.vue


+ 524 - 365
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/transferWorkingHours.vue

@@ -1,391 +1,550 @@
 <template>
-    <div class="resetElEmtClass">
-        <el-dialog :title="$t('zhuanYIGongShi')" :visible.sync="modelValue" width="96vw" :top="'4vh'"
-            :before-close="handleClose">
-            <div class="transferWorkingHours">
-                <!-- 筛选条件 -->
-                <div class="transferWorkingHours-title">
-                    <el-form :inline="true" :model="filterCriteriaForm" class="demo-form-inline">
-                        <el-form-item :label="$t('ren-yuan')">
-                            <el-select v-model="filterCriteriaForm.userList" multiple filterable
-                                :placeholder="$t('defaultText.pleaseChoose')" clearable collapse-tags size="small"
-                                @change="filterSelect()" v-if="user.userNameNeedTranslate != 1">
-                                <el-option v-for="item in allUserList" :key="item.id" :label="item.name" :value="item.id">
-                                </el-option>
-                            </el-select>
-                            <selectCat :filterable="true" :size="'small'" v-if="user.userNameNeedTranslate == 1"
-                                :subject="allUserList" :clearable="true" :multiSelect="true" :distinction="'1'"
-                                :expandPersonnel="false" @selectCal="selectCal"></selectCat>
-                        </el-form-item>
-                        <el-form-item :label="$t('screening.workingDate')">
-                            <el-date-picker size="small" v-model="filterCriteriaForm.workDate" :editable="false"
-                                format="yyyy-MM-dd" value-format="yyyy-MM-dd" :clearable="true" @change="filterSelect()"
-                                :range-separator="$t('other.to')" type="daterange" :start-placeholder="$t('time.startDate')"
-                                :end-placeholder="$t('time.endDate')"></el-date-picker>
-                        </el-form-item>
-                        <el-form-item :label="$t('other.project')">
-                            <el-select v-model="filterCriteriaForm.projectId" filterable clearable
-                                :placeholder="$t('defaultText.pleaseChoose')" size="small" @change="filterSelect()">
-                                <el-option v-for="item in allProjectList" :key="item.id" :label="item.projectName + item.projectCode"
-                                    :value="item.id">
-                                    <div class="omitText">
-                                        <div class="left">{{ item.projectName }}</div>
-                                        <div class="right">{{ item.projectCode }}</div>
-                                    </div>
-                                </el-option>
-                            </el-select>
-                        </el-form-item>
-                    </el-form>
-                </div>
-                <!-- 表格 -->
-                <div>
-                    <el-table :data="tableData" ref="multipleTable" height="58vh" border v-loading="tableDataLoading"
-                        @selection-change="handleSelectionChange" style="width: 100%">
-                        <el-table-column align="center" type="selection" width="55"></el-table-column>
-                        <el-table-column align="center" prop="jobNumber" :label="$t('Worknumber')"
-                            width="180"></el-table-column>
-                        <el-table-column align="center" prop="userName" :label="$t('lable.name')" width="180">
-                            <template slot-scope="scope">
-                                <TranslationOpenDataText type='userName' :openid='scope.row.userName'>
-                                </TranslationOpenDataText>
-                            </template>
-                        </el-table-column>
-                        <el-table-column align="center" prop="deptName" :label="$t('subordinatedepartments')" width="180">
-                            <template slot-scope="scope">
-                                <TranslationOpenDataText type='departmentName' :openid='scope.row.deptName'>
-                                </TranslationOpenDataText>
-                            </template>
-                        </el-table-column>
-                        <el-table-column align="center" prop="projectCode" :label="$t('Itemno')"
-                            width="240"></el-table-column>
-                        <el-table-column align="center" prop="projectName" :label="$t('headerTop.projectName')"
-                            width="240"></el-table-column>
-                        <el-table-column align="center" prop="createDate" :label="$t('screening.workingDate')"
-                            width="180"></el-table-column>
-                        <el-table-column align="center" prop="workingTime" :label="$t('screening.workTime')"
-                            width="100"></el-table-column>
-                        <el-table-column align="center" prop="groupName" :label="$t('other.taskGroup')"
-                            width="180"></el-table-column>
-                        <el-table-column align="center" prop="stageName" :label="$t('other.inputStage')"
-                            width="180"></el-table-column>
-                    </el-table>
-                </div>
-                <!-- 分页 -->
-                <div class="transferWorkingHours-paging">
-                    <div>{{ $t('yiXuanZe') }} {{ tableSelected.length }} {{ $t('tiaoShuJu') }},{{ $t('gongJiGongShi') }}:{{
-                        totalWorkingHours }} {{ $t('time.hour') }}</div>
-                    <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
-                        :current-page="pagingForm.pageIndex" :page-sizes="[30, 50, 100, 150, 200, 300]"
-                        :page-size="pagingForm.pageSize" layout="prev, pager, next, sizes" :total="pagingTotal">
-                    </el-pagination>
-                </div>
-                <!-- 转移至 -->
-                <div slot="footer">
-                    <el-form :inline="true" :model="transform" class="demo-form-inline">
-                        <el-form-item :label="$t('zhuanYiZhi')">
-                            <el-select v-model="transform.projectId" filterable clearable
-                                :placeholder="$t('defaultText.pleaseChoose')" size="small" :disabled="!tableSelected.length"
-                                @change="changeProject()">
-                                <el-option v-for="item in allProjectList" :key="item.id" :label="item.projectName + item.projectCode"
-                                    :value="item.id">
-                                    <div class="omitText">
-                                        <div class="left">{{ item.projectName }}</div>
-                                        <div class="right">{{ item.projectCode }}</div>
-                                    </div>
-                                </el-option>
-                            </el-select>
-                        </el-form-item>
-                        <el-form-item>
-                            <el-select v-model="transform.taskGroupingId" filterable clearable
-                                :placeholder="$t('defaultText.pleaseSelectaTaskGroup')" :disabled="!transform.projectId"
-                                size="small" @change="changeTaskGroup()">
-                                <el-option v-for="item in taskGroupingList" :key="item.id" :label="item.name"
-                                    :value="item.id"></el-option>
-                            </el-select>
-                        </el-form-item>
-                        <el-form-item>
-                            <el-select v-model="transform.stageId" filterable clearable
-                                :placeholder="$t('pleaseselecttheprojectphase')"
-                                :disabled="!(transform.projectId && transform.taskGroupingId)" size="small">
-                                <el-option v-for="item in stageList" :key="item.id" :label="item.stagesName"
-                                    :value="item.id">
-                                </el-option>
-                            </el-select>
-                        </el-form-item>
-                        <el-form-item>
-                            <el-button type="primary" :size="'small'" :loading="confirmTransformLoading"
-                                @click="confirmTransform()"
-                                :disabled="!(transform.projectId && transform.taskGroupingId)">{{
-                                    $t('queRenZhuanYi') }}</el-button>
-                        </el-form-item>
-                    </el-form>
-                </div>
-            </div>
-        </el-dialog>
-    </div>
+  <div class="resetElEmtClass">
+    <el-dialog
+      :title="$t('zhuanYIGongShi')"
+      :visible.sync="modelValue"
+      width="96vw"
+      :top="'4vh'"
+      :before-close="handleClose"
+    >
+      <div class="transferWorkingHours">
+        <!-- 筛选条件 -->
+        <div class="transferWorkingHours-title">
+          <el-form
+            :inline="true"
+            :model="filterCriteriaForm"
+            class="demo-form-inline"
+          >
+            <el-form-item :label="$t('ren-yuan')">
+              <el-select
+                v-model="filterCriteriaForm.userList"
+                multiple
+                filterable
+                :placeholder="$t('defaultText.pleaseChoose')"
+                clearable
+                collapse-tags
+                size="small"
+                @change="filterSelect()"
+                v-if="user.userNameNeedTranslate != 1"
+              >
+                <el-option
+                  v-for="item in allUserList"
+                  :key="item.id"
+                  :label="item.name"
+                  :value="item.id"
+                >
+                </el-option>
+              </el-select>
+              <selectCat
+                :filterable="true"
+                :size="'small'"
+                v-if="user.userNameNeedTranslate == 1"
+                :subject="allUserList"
+                :clearable="true"
+                :multiSelect="true"
+                :distinction="'1'"
+                :expandPersonnel="false"
+                @selectCal="selectCal"
+              ></selectCat>
+            </el-form-item>
+            <el-form-item :label="$t('screening.workingDate')">
+              <el-date-picker
+                size="small"
+                v-model="filterCriteriaForm.workDate"
+                :editable="false"
+                format="yyyy-MM-dd"
+                value-format="yyyy-MM-dd"
+                :clearable="true"
+                @change="filterSelect()"
+                :range-separator="$t('other.to')"
+                type="daterange"
+                :start-placeholder="$t('time.startDate')"
+                :end-placeholder="$t('time.endDate')"
+              ></el-date-picker>
+            </el-form-item>
+            <el-form-item :label="$t('other.project')">
+              <el-select
+                v-model="filterCriteriaForm.projectId"
+                filterable
+                clearable
+                :placeholder="$t('defaultText.pleaseChoose')"
+                size="small"
+                @change="filterSelect()"
+              >
+                <el-option
+                  v-for="item in allProjectList"
+                  :key="item.id"
+                  :label="item.projectName + item.projectCode"
+                  :value="item.id"
+                >
+                  <div class="omitText">
+                    <div class="left">{{ item.projectName }}</div>
+                    <div class="right">{{ item.projectCode }}</div>
+                  </div>
+                </el-option>
+              </el-select>
+            </el-form-item>
+          </el-form>
+        </div>
+        <!-- 表格 -->
+        <div>
+          <el-table
+            :data="tableData"
+            ref="multipleTable"
+            height="58vh"
+            border
+            v-loading="tableDataLoading"
+            @selection-change="handleSelectionChange"
+            style="width: 100%"
+          >
+            <el-table-column
+              align="center"
+              type="selection"
+              width="55"
+            ></el-table-column>
+            <el-table-column
+              align="center"
+              prop="jobNumber"
+              :label="$t('Worknumber')"
+              width="180"
+            ></el-table-column>
+            <el-table-column
+              align="center"
+              prop="userName"
+              :label="$t('lable.name')"
+              width="180"
+            >
+              <template slot-scope="scope">
+                <TranslationOpenDataText
+                  type="userName"
+                  :openid="scope.row.userName"
+                >
+                </TranslationOpenDataText>
+              </template>
+            </el-table-column>
+            <el-table-column
+              align="center"
+              prop="deptName"
+              :label="$t('subordinatedepartments')"
+              width="180"
+            >
+              <template slot-scope="scope">
+                <TranslationOpenDataText
+                  type="departmentName"
+                  :openid="scope.row.deptName"
+                >
+                </TranslationOpenDataText>
+              </template>
+            </el-table-column>
+            <el-table-column
+              align="center"
+              prop="projectCode"
+              :label="$t('Itemno')"
+              width="240"
+            ></el-table-column>
+            <el-table-column
+              align="center"
+              prop="projectName"
+              :label="$t('headerTop.projectName')"
+              width="240"
+            ></el-table-column>
+            <el-table-column
+              align="center"
+              prop="createDate"
+              :label="$t('screening.workingDate')"
+              width="180"
+            ></el-table-column>
+            <el-table-column
+              align="center"
+              prop="workingTime"
+              :label="$t('screening.workTime')"
+              width="100"
+            ></el-table-column>
+            <el-table-column
+              align="center"
+              prop="groupName"
+              :label="$t('other.taskGroup')"
+              width="180"
+            ></el-table-column>
+            <el-table-column
+              align="center"
+              prop="stageName"
+              :label="$t('other.inputStage')"
+              width="180"
+            ></el-table-column>
+          </el-table>
+        </div>
+        <!-- 分页 -->
+        <div class="transferWorkingHours-paging">
+          <div>
+            {{ $t("yiXuanZe") }} {{ tableSelected.length }}
+            {{ $t("tiaoShuJu") }},{{ $t("gongJiGongShi") }}:{{
+              totalWorkingHours
+            }}
+            {{ $t("time.hour") }}
+          </div>
+          <el-pagination
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+            :current-page="pagingForm.pageIndex"
+            :page-sizes="[30, 50, 100, 150, 200, 300]"
+            :page-size="pagingForm.pageSize"
+            layout="prev, pager, next, sizes"
+            :total="pagingTotal"
+          >
+          </el-pagination>
+        </div>
+        <!-- 转移至 -->
+        <div slot="footer">
+          <el-form :inline="true" :model="transform" class="demo-form-inline">
+            <el-form-item :label="$t('zhuanYiZhi')">
+              <el-select
+                v-model="transform.projectId"
+                filterable
+                clearable
+                :placeholder="$t('defaultText.pleaseChoose')"
+                size="small"
+                :disabled="!tableSelected.length"
+                @change="changeProject()"
+              >
+                <el-option
+                  v-for="item in allProjectList"
+                  :key="item.id"
+                  :label="item.projectName + item.projectCode"
+                  :value="item.id"
+                >
+                  <div class="omitText">
+                    <div class="left">{{ item.projectName }}</div>
+                    <div class="right">{{ item.projectCode }}</div>
+                  </div>
+                </el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item>
+              <el-select
+                v-model="transform.taskGroupingId"
+                filterable
+                clearable
+                :placeholder="$t('defaultText.pleaseSelectaTaskGroup')"
+                :disabled="!transform.projectId"
+                size="small"
+                @change="changeTaskGroup()"
+              >
+                <el-option
+                  v-for="item in taskGroupingList"
+                  :key="item.id"
+                  :label="item.name"
+                  :value="item.id"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item>
+              <el-select
+                v-model="transform.stageId"
+                filterable
+                clearable
+                :placeholder="$t('pleaseselecttheprojectphase')"
+                :disabled="!(transform.projectId && transform.taskGroupingId)"
+                size="small"
+              >
+                <el-option
+                  v-for="item in stageList"
+                  :key="item.id"
+                  :label="item.stagesName"
+                  :value="item.id"
+                >
+                </el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item>
+              <el-button
+                type="primary"
+                :size="'small'"
+                :loading="confirmTransformLoading"
+                @click="confirmTransform()"
+                :disabled="!(transform.projectId && transform.taskGroupingId)"
+                >{{ $t("queRenZhuanYi") }}</el-button
+              >
+            </el-form-item>
+          </el-form>
+        </div>
+      </div>
+    </el-dialog>
+  </div>
 </template>
 
 <script>
-import selectCat from "@/components/select.vue"
+import selectCat from "@/components/select.vue";
 export default {
-    name: '',
-    components: {
-        selectCat
+  name: "",
+  components: {
+    selectCat,
+  },
+  props: {
+    modelValue: {
+      type: Boolean,
+      default: () => false,
     },
-    props: {
-        modelValue: {
-            type: Boolean,
-            default: () => false
-        },
-        projectList: {
-            type: Array,
-            default: () => []
-        },
-        userList: {
-            type: Array,
-            default: () => []
-        }
+    projectList: {
+      type: Array,
+      default: () => [],
     },
-    data() {
-        return {
-            user: JSON.parse(sessionStorage.getItem("user")),
-            allProjectList: [],
-            allUserList: [],
-            taskGroupingList: [],
-            stageList: [],
-            transform: {
-                projectId: '',
-                taskGroupingId: '',
-                stageId: ''
-            },
-            filterCriteriaForm: {
-                userList: [],
-                workDate: [],
-                projectId: ''
-            },
-            pagingForm: {
-                pageIndex: 1,
-                pageSize: 100
-            },
-            pagingTotal: 0,
-            tableSelected: [],
-            tableData: [],
-            tableDataLoading: false,
-            confirmTransformLoading: false
-        }
+    userList: {
+      type: Array,
+      default: () => [],
     },
-    computed: {
-        totalWorkingHours() {
-            return this.tableSelected.reduce((total, item) => {
-                let num = item.workingTime || 0
-                return total + Number(num)
-            }, 0)
-        }
+  },
+  data() {
+    return {
+      user: JSON.parse(sessionStorage.getItem("user")),
+      allProjectList: [],
+      allUserList: [],
+      taskGroupingList: [],
+      stageList: [],
+      transform: {
+        projectId: "",
+        taskGroupingId: "",
+        stageId: "",
+      },
+      filterCriteriaForm: {
+        userList: [],
+        workDate: [],
+        projectId: "",
+      },
+      pagingForm: {
+        pageIndex: 1,
+        pageSize: 100,
+      },
+      pagingTotal: 0,
+      tableSelected: [],
+      tableData: [],
+      tableDataLoading: false,
+      confirmTransformLoading: false,
+    };
+  },
+  computed: {
+    totalWorkingHours() {
+      return this.tableSelected.reduce((total, item) => {
+        let num = item.workingTime || 0;
+        return total + Number(num);
+      }, 0);
     },
-    watch: {
-        modelValue(val) {
-            if (val) {
-                this.emptyFilterData()
-                this.getTableList()
-            }
-            this.updateModelValue()
-        },
-        projectList(val) {
-            this.allProjectList = val
-        },
-        userList(val) {
-            this.allUserList = val
-        }
+  },
+  watch: {
+    modelValue(val) {
+      if (val) {
+        this.emptyFilterData();
+        this.getTableList();
+      }
+      this.updateModelValue();
+    },
+    projectList(val) {
+      this.allProjectList = val;
     },
-    model: {
-        prop: 'modelValue',
-        event: 'getValue'
+    userList(val) {
+      this.allUserList = val;
     },
-    created() { },
-    mounted() { },
-    methods: {
-        async confirmTransform() {
-            const { projectId, taskGroupingId, stageId } = this.transform
-            const reportIds = this.tableSelected.map(item => item.reportId).join(',')
-            this.confirmTransformLoading = true
-            const { data, code } = await this.postData('/report/transferReport', {
-                reportIds, projectId, stageId,
-                groupId: taskGroupingId,
-            })
+  },
+  model: {
+    prop: "modelValue",
+    event: "getValue",
+  },
+  created() {},
+  mounted() {},
+  methods: {
+    async confirmTransform() {
+      const { projectId, taskGroupingId, stageId } = this.transform;
+      const reportIds = this.tableSelected
+        .map((item) => item.reportId)
+        .join(",");
+      this.confirmTransformLoading = true;
+      const { data, code } = await this.postData("/report/transferReport", {
+        reportIds,
+        projectId,
+        stageId,
+        groupId: taskGroupingId,
+      });
 
-            if (code == 'ok') {
-                this.$message({
-                    message: this.$t('zhuanYiChengGong'),
-                    type: "success"
-                });
-                this.pagingForm.pageIndex = 1
-                this.emptyBasicData()
-                this.getTableList()
-            }
-            this.confirmTransformLoading = false
-        },
-        async getTableList() {
-            const { userList, workDate, projectId } = this.filterCriteriaForm
-            this.tableDataLoading = true
-            const { data } = await this.postData('/report/getReportListWithTransfer ', {
-                startDate: workDate[0],
-                endDate: workDate[1],
-                userIds: userList.join(','),
-                projectId: projectId,
-                ...this.pagingForm
-            })
-            this.tableDataLoading = false
-            this.tableData = data.result
-            this.pagingTotal = data.count
-        },
-        async getTaskGroups() {
-            const { projectId } = this.transform
-            let { data } = await this.postData('/task-group/listMyJoinGroup', {
-                projectId,
-                isSubstitude: 1
-            })
-            this.taskGroupingList = data
-        },
-        async getGroupStages() {
-            const { taskGroupingId } = this.transform
-            let { data } = await this.postData('/stages/getProjectStagesByGroup', {
-                groupId: taskGroupingId
-            })
-            this.stageList = data
-        },
-        filterSelect() {
-            this.pagingForm.pageIndex = 1
-            this.getTableList()
-        },
-        emptyBasicData() {
-            this.transform = {
-                projectId: '',
-                taskGroupingId: '',
-                stageId: ''
-            }
-            this.taskGroupingList = []
-            this.stageList = []
-        },
-        emptyFilterData() {
-            this.filterCriteriaForm = {
-                userList: [],
-                workDate: [],
-                projectId: ''
-            }
-        },
-        changeTaskGroup() {
-            const { taskGroupingId } = this.transform
-            if (taskGroupingId) {
-                this.getGroupStages()
-            } else {
-                this.transform = {
-                    ...this.transform,
-                    stageId: ''
-                }
-                this.stageList = []
-            }
+      if (code == "ok") {
+        this.$message({
+          message: this.$t("zhuanYiChengGong"),
+          type: "success",
+        });
+        this.pagingForm.pageIndex = 1;
+        this.emptyBasicData();
+        this.getTableList();
+      }
+      this.confirmTransformLoading = false;
+    },
+    async getTableList() {
+      const { userList, workDate, projectId } = this.filterCriteriaForm;
+      this.tableDataLoading = true;
+      const { data } = await this.postData(
+        "/report/getReportListWithTransfer ",
+        {
+          startDate: workDate[0],
+          endDate: workDate[1],
+          userIds: userList.join(","),
+          projectId: projectId,
+          ...this.pagingForm,
         },
-        changeProject() {
-            const { projectId } = this.transform
-            if (projectId) {
-                this.getTaskGroups()
+      );
+      this.tableDataLoading = false;
+      this.tableData = data.result;
+      this.pagingTotal = data.count;
+    },
+    async getTaskGroups() {
+      const { projectId } = this.transform;
+      let { data } = await this.postData("/task-group/listMyJoinGroup", {
+        projectId,
+        isSubstitude: 1,
+        // workDate: this.filterCriteriaForm.workDate[0],
+      });
+      this.taskGroupingList = data;
+    },
+    async getGroupStages() {
+      const { taskGroupingId } = this.transform;
+      let { data } = await this.postData("/stages/getProjectStagesByGroup", {
+        groupId: taskGroupingId,
+      });
+      this.stageList = data;
+    },
+    filterSelect() {
+      this.pagingForm.pageIndex = 1;
+      this.getTableList();
+    },
+    emptyBasicData() {
+      this.transform = {
+        projectId: "",
+        taskGroupingId: "",
+        stageId: "",
+      };
+      this.taskGroupingList = [];
+      this.stageList = [];
+    },
+    emptyFilterData() {
+      this.filterCriteriaForm = {
+        userList: [],
+        workDate: [],
+        projectId: "",
+      };
+    },
+    changeTaskGroup() {
+      const { taskGroupingId } = this.transform;
+      if (taskGroupingId) {
+        this.getGroupStages();
+      } else {
+        this.transform = {
+          ...this.transform,
+          stageId: "",
+        };
+        this.stageList = [];
+      }
+    },
+    changeProject() {
+      const { projectId } = this.transform;
+      if (projectId) {
+        this.getTaskGroups();
+      } else {
+        this.transform = {
+          projectId: "",
+          taskGroupingId: "",
+          stageId: "",
+        };
+        this.taskGroupingList = [];
+        this.stageList = [];
+      }
+    },
+    handleSelectionChange(row) {
+      this.tableSelected = row;
+    },
+    handleSizeChange(size) {
+      this.pagingForm = {
+        pageIndex: 1,
+        pageSize: size,
+      };
+      this.getTableList();
+    },
+    handleCurrentChange(page) {
+      this.pagingForm.pageIndex = page;
+      this.getTableList();
+    },
+    updateModelValue() {
+      this.$emit("getValue", this.modelValue);
+      this.$emit("change", this.modelValue);
+    },
+    selectCal(obj) {
+      if (obj.distinction == 1) {
+        let userListId = obj.arrUserList;
+        let arr = [];
+        for (var i in userListId) {
+          arr.push(userListId[i].id);
+        }
+        this.filterCriteriaForm.userList = arr;
+        this.filterSelect();
+      }
+    },
+    // 封装 post 请求
+    postData(url, params) {
+      return new Promise((resolve, reject) => {
+        this.http.post(
+          url,
+          { ...params },
+          (res) => {
+            if (res.code == "ok") {
+              resolve(res);
             } else {
-                this.transform = {
-                    projectId: '',
-                    taskGroupingId: '',
-                    stageId: ''
-                }
-                this.taskGroupingList = []
-                this.stageList = []
+              this.$message({
+                message: res.msg,
+                type: "error",
+              });
+              reject(error);
             }
-        },
-        handleSelectionChange(row) {
-            this.tableSelected = row
-        },
-        handleSizeChange(size) {
-            this.pagingForm = {
-                pageIndex: 1,
-                pageSize: size
-            }
-            this.getTableList()
-        },
-        handleCurrentChange(page) {
-            this.pagingForm.pageIndex = page
-            this.getTableList()
-        },
-        updateModelValue() {
-            this.$emit('getValue', this.modelValue);
-            this.$emit('change', this.modelValue);
-        },
-        selectCal(obj) {
-            if (obj.distinction == 1) {
-                let userListId = obj.arrUserList
-                let arr = []
-                for (var i in userListId) {
-                    arr.push(userListId[i].id)
-                }
-                this.filterCriteriaForm.userList = arr
-                this.filterSelect()
-            }
-        },
-        // 封装 post 请求
-        postData(url, params) {
-            return new Promise((resolve, reject) => {
-                this.http.post(url, { ...params },
-                    res => {
-                        if (res.code == 'ok') {
-                            resolve(res)
-                        } else {
-                            this.$message({
-                                message: res.msg,
-                                type: "error"
-                            });
-                            reject(error)
-                        }
-                    },
-                    error => {
-                        this.$message({
-                            message: error,
-                            type: "error"
-                        });
-                        reject(error)
-                    })
-            })
-        },
+          },
+          (error) => {
+            this.$message({
+              message: error,
+              type: "error",
+            });
+            reject(error);
+          },
+        );
+      });
     },
-}
+  },
+};
 </script>
-<style scoped lang='scss'>
+<style scoped lang="scss">
 .omitText {
-    width: 100%;
-    display: flex;
-    flex-direction: row;
-    justify-content: space-between;
+  width: 100%;
+  display: flex;
+  flex-direction: row;
+  justify-content: space-between;
 
-    .left {
-        max-width: 300px;
-        overflow: hidden;
-        text-overflow: ellipsis;
-        white-space: nowrap;
-    }
+  .left {
+    max-width: 300px;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+  }
 
-    .right {
-        flex: 1;
-        color: #8492a6;
-        font-size: 13px;
-        margin-left: 10px;
-        text-align: right;
-    }
+  .right {
+    flex: 1;
+    color: #8492a6;
+    font-size: 13px;
+    margin-left: 10px;
+    text-align: right;
+  }
 }
 
 .transferWorkingHours {
-    padding: 0 20px;
+  padding: 0 20px;
 
-    .transferWorkingHours-paging {
-        margin: 10px 0;
-        display: flex;
-        justify-content: space-between;
-        align-items: center;
-    }
+  .transferWorkingHours-paging {
+    margin: 10px 0;
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+  }
 }
 </style>