Przeglądaj źródła

Merge remote-tracking branch 'origin/master'

yusm 1 miesiąc temu
rodzic
commit
f2d5fb25ab
16 zmienionych plików z 187 dodań i 32 usunięć
  1. 1 1
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/controller/TaskController.java
  2. 1 1
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/resources/mapper/TaskExecutorMapper.xml
  3. 1 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java
  4. 3 3
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/FinanceMonthlyWorktimeServiceImpl.java
  5. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/application.yml
  6. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/FmwDetailMapper.xml
  7. 102 0
      fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/controller/CommonUploadController.java
  8. 2 9
      fhKeeper/formulahousekeeper/timesheet/src/components/taskComponent.vue
  9. 4 2
      fhKeeper/formulahousekeeper/timesheet/src/views/Login.vue
  10. 19 3
      fhKeeper/formulahousekeeper/timesheet/src/views/corpreport/list.vue
  11. 1 1
      fhKeeper/formulahousekeeper/timesheet/src/views/project/gantt.vue
  12. 1 1
      fhKeeper/formulahousekeeper/timesheet/src/views/project/projectInside.vue
  13. 1 1
      fhKeeper/formulahousekeeper/timesheet/src/views/task/list.vue
  14. 43 2
      fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue
  15. 5 3
      fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/index.vue
  16. 1 1
      fhKeeper/formulahousekeeper/timesheet_mld/src/components/taskComponent.vue

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/controller/TaskController.java

@@ -1069,7 +1069,7 @@ public class TaskController {
             list.get(0).setCreatorName(name);
         }
         //查询任务的执行人
-        List<TaskExecutor> executorList = taskExecutorMapper.getInfoWithFileCharge(t.getId());
+        List<TaskExecutor> executorList = taskExecutorMapper.selectList(new QueryWrapper<TaskExecutor>().eq("task_id", id));
         List<TaskDailyAllocate> allocateList = taskDailyAllocateService.list(new QueryWrapper<TaskDailyAllocate>().eq("task_id", id));
         // 1. 按 userId 预先分组(避免后续重复筛选)
         Map<String, List<TaskDailyAllocate>> allocateMap = allocateList.stream()

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

@@ -26,7 +26,7 @@
     </sql>
     <select id="getInfoWithFileCharge" resultType="com.management.platform.entity.TaskExecutor">
         select te.id as id,   task_id, executor_id, executor_name, executor_color, plan_hours, project_id
-             , service_id, real_cost, file_charge_one_id, file_charge_two_id
+             , service_id, real_cost, file_charge_one_id, file_charge_two_id,first_auditor_id, second_auditor_id, audit_status
              , u1.name as fileChargeOneName,u1.corpwx_userid as chargeOneWxId
              ,u2.name as fileChargeTwoName,u2.corpwx_userid  as chargeTwoWxId
         from task_executor te

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

@@ -1682,10 +1682,9 @@ public class ReportController {
             for (Report report : reportList) {
                 report.setDepartmentAuditState(0);
                 //优先按照当前日报填写人的直属审核人审核
-                if (!StringUtils.isEmpty(reportOwner.getSuperiorId())) {
+                if (!report.getIsAssist() && !StringUtils.isEmpty(reportOwner.getSuperiorId())) {
                     User auditor = tempAuditorUserList.stream().filter(t -> t.getId().equals(reportOwner.getSuperiorId())).findFirst().get();
                     report.setProjectAuditorId(auditor.getId());
-                    report.setProjectAuditorName(auditor.getName());
                     report.setProjectAuditState(0);
                     if (report.getCreatorId().equals(auditor.getId())) {
                         report.setState(1);

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

@@ -347,9 +347,9 @@ public class FinanceMonthlyWorktimeServiceImpl extends ServiceImpl<FinanceMonthl
         //查询数据
         QueryWrapper<FmwDetail> detailQueryWrapper = new QueryWrapper<FmwDetail>().eq("fmw_id", financeMonthlyWorktime.getId());
         if (isItAWorkOrder!=null&&isItAWorkOrder==2){
-            detailQueryWrapper.isNotNull("extra_field4");//有工单号的数据
+            detailQueryWrapper.ne("extra_field4","");//有工单号的数据
         } else if (isItAWorkOrder != null && isItAWorkOrder == 3) {
-            detailQueryWrapper.isNull("extra_field4");//非工单则工单号为空的数据
+            detailQueryWrapper.eq("extra_field4","");//非工单则工单号为空的数据
         }
         List<FmwDetail> details = fmwDetailMapper.selectList(detailQueryWrapper);
         financeMonthlyWorktime.setDetailList(details);
@@ -530,7 +530,7 @@ public class FinanceMonthlyWorktimeServiceImpl extends ServiceImpl<FinanceMonthl
                         (fmwDetail.getRepairTime() != null ? fmwDetail.getRepairTime() : 0)
                         + (fmwDetail.getDebugTime() != null ? fmwDetail.getDebugTime() : 0)
                         + (fmwDetail.getWaitingTime() != null ? fmwDetail.getWaitingTime() : 0)
-                        + (fmwDetail.getAssistTime() != null ? fmwDetail.getAssistTime() : 0)
+//                        + (fmwDetail.getAssistTime() != null ? fmwDetail.getAssistTime() : 0)
                         + (fmwDetail.getPublicTime() != null ? fmwDetail.getPublicTime() : 0)
                         + (fmwDetail.getComposeTime() != null ? fmwDetail.getComposeTime() : 0);
 

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/application.yml

@@ -148,7 +148,7 @@ referer:
     - app71020.eapps.dingtalkcloud.com
     - mldmobworktime.ttkuaiban.com
     - mldworktime.ttkuaiban.com
-    - worktime2.ttkuaiban.com
+    - worktime.huoshishanxin.com
     - 1.94.62.58
 excludeUrls: /wxcorp/*,/wxcorp/*/*,/dingding/*,/feishu-info/*,/error,/testClient,/corpWXAuth,/corpWXScanningAuth,/corpInsideWXAuth,/wx-corp-info/*,/clean/*,/innerRoles/*,/project/getProjectListByToken,/project/getTimeCostByToken,/report/getReportListByToken,/report/getProcessErrorData,/project/synchronizationProject,/user/updateUserDeptHierarchy,/report/getUserTimeCostByThird,/report/getProjectTimeCostByThird,/leave-sheet-fv/*,/report/getNotFullReportUserList
 

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

@@ -29,7 +29,7 @@
     </sql>
     <select id="getTisTime" resultType="com.management.platform.entity.vo.TisTimeVO">
         select extra_field4 as orderId,extra_field5 as line
-             ,sum(compose_time+repair_time+debug_time+waiting_time+assist_time+public_time) as workTime
+             ,sum(compose_time+repair_time+debug_time+waiting_time+public_time) as workTime
         from fmw_detail
         where fmw_id = #{fmwId}
         group by extra_field4,extra_field5

+ 102 - 0
fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/controller/CommonUploadController.java

@@ -0,0 +1,102 @@
+package com.management.platform.controller;
+
+import com.management.platform.entity.Company;
+import com.management.platform.util.HttpRespMsg;
+import fr.opensagres.poi.xwpf.converter.pdf.PdfConverter;
+import fr.opensagres.poi.xwpf.converter.pdf.PdfOptions;
+import fr.opensagres.xdocreport.document.IXDocReport;
+import fr.opensagres.xdocreport.document.registry.XDocReportRegistry;
+import fr.opensagres.xdocreport.template.IContext;
+import fr.opensagres.xdocreport.template.TemplateEngineKind;
+import org.apache.log4j.LogManager;
+import org.apache.log4j.Logger;
+import org.apache.poi.xwpf.usermodel.XWPFDocument;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.util.FileCopyUtils;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.math.BigDecimal;
+import java.net.URLEncoder;
+import java.nio.channels.FileChannel;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.UUID;
+
+@RestController
+@RequestMapping("/common")
+public class CommonUploadController {
+
+    Logger logger = LogManager.getLogger(org.apache.logging.log4j.LogManager.ROOT_LOGGER_NAME);
+    @Value(value = "${upload.path}")
+    private String path;
+    @Value(value = "${logDownLoad.path}")
+    private String logDownLoadPath;
+
+    @RequestMapping(value="uploadFile")
+    public HttpRespMsg uploadFile(MultipartFile multipartFile) {
+        HttpRespMsg msg = new HttpRespMsg();
+
+        //然后处理文件
+        String fileName = multipartFile.getOriginalFilename();
+        String[] split = fileName.split("\\.");
+        String serverName = UUID.randomUUID().toString().replaceAll("-", "") + "."+split[split.length-1];
+
+        //检查目录
+        File dir = new File(path);
+        if (!dir.exists()) {
+            dir.mkdir();
+        }
+        File file = new File(dir, serverName);
+        InputStream inputStream = null;
+        OutputStream outputStream = null;
+        try {
+            inputStream = multipartFile.getInputStream();
+            outputStream = new FileOutputStream(file);
+            byte[] buffer = new byte[4096];
+            int temp = 0;
+            while ((temp = inputStream.read(buffer, 0, 4096)) != -1) {
+                outputStream.write(buffer, 0, temp);
+            }
+            inputStream.close();
+            outputStream.close();
+            msg.data = serverName;
+        } catch (Exception exception) {
+            exception.printStackTrace();
+            logger.error(exception.getMessage());
+        }
+
+        return msg;
+    }
+    @RequestMapping("/downLoadLog")
+    public ResponseEntity<byte[]> downLoadLog() throws IOException {
+        // 🧐🧐🧐读取本地的文件
+        // 获取File对象
+        System.out.println("读取目录=="+logDownLoadPath);
+        File readFile=new File(logDownLoadPath);
+        // 🐳🐳🐳设置响应头,把文件名称放入响应头中,确保文件可下载
+        HttpHeaders headers = new HttpHeaders();
+        headers.set("Content-Disposition", "attachment;filename=" + URLEncoder.encode(readFile.getName(), "UTF-8"));
+        // 🐳🐳🐳设置内容类型为「application/octet-stream」二进制流
+        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
+
+        Path path = Paths.get(readFile.toURI());
+        // 获取File对象的字节码文件
+        byte[] bytes = Files.readAllBytes(path);
+        //return new ResponseEntity<>(bytes, headers, HttpStatus.OK);
+        return ResponseEntity.ok().headers(headers).body(bytes);
+    }
+}

+ 2 - 9
fhKeeper/formulahousekeeper/timesheet/src/components/taskComponent.vue

@@ -2,14 +2,7 @@
   <div>
     <div style="height: 72vh;overflow: auto;">
         <el-form ref="form1" :model="addForm" :rules="taskRules" label-width="120px">
-            <el-form-item :label="'类型'" v-if="showMmeiLaiDe" prop="taskPlanType">
-                <el-select v-model="addForm.taskPlanType" :placeholder="$t('defaultText.pleaseChoose')" style="width:100%;" :disabled="doYouWantToDisableAll">
-                    <el-option label="出差" :value="1"></el-option>
-                    <el-option label="在办公事处" :value="2"></el-option>
-                    <el-option label="请假" :value="3"></el-option>
-                </el-select>
-            </el-form-item>
-            <template v-if="addForm.taskPlanType != 3">
+            <template>
                 <el-form-item :label="$t('subordinatetotheproject')" v-if="showOrNot" prop="projectId">
                     <el-select v-model="addForm.projectId" :placeholder="$t('defaultText.pleaseChoose')" @change="agentCreatesEvents(1)" filterable="true" style="width:100%;" :disabled="doYouWantToDisableAll">
                         <el-option-group v-for="group in integrationProjectList" :key="group.label" :label="group.label">
@@ -821,7 +814,7 @@ export default {
         startNum: 0,
         endNum: 5,
         shownumber: 5,
-        sizeNum: JSON.parse(sessionStorage.getItem("user")).companyId == '3092' ? 105 : JSON.parse(sessionStorage.getItem("user")).timeType.taskFileCharge == '2' ? 105 : 65,
+        sizeNum: JSON.parse(sessionStorage.getItem("user")).companyId == '3092' ? 65 : JSON.parse(sessionStorage.getItem("user")).timeType.taskFileCharge == '2' ? 105 : 65,
         meeting: false,
         numnnumnum: 2,
         componentFlg: false,

+ 4 - 2
fhKeeper/formulahousekeeper/timesheet/src/views/Login.vue

@@ -279,8 +279,10 @@
             ddworkCli() {
                 var appId = "71020";//钉钉三方的SUIT ID
                 var url = "https://worktime.ttkuaiban.com/api/dingtalk/callback";//授权回调页面
-                var weixinUrl=`https://oapi.dingtalk.com/connect/qrconnect?appid=${appId}&response_type=code&scope=snsapi_login&state=STATE&redirect_uri=${url}`;
-                window.location.href = weixinUrl;
+                // var weixinUrl=`https://oapi.dingtalk.com/connect/qrconnect?appid=${appId}&response_type=code&scope=snsapi_login&state=STATE&redirect_uri=${url}`;
+                const appKey = 'suitejwoq9dw4bxv4stdb'
+                var ddUrl =`https://login.dingtalk.com/oauth2/auth?redirect_uri=${url}&response_type=code&client_id=${appKey}&scope=openid corpid &state=dddd&prompt=consent`;
+                window.location.href = ddUrl ;
             },
             getStaffInfo() {
                 console.log('执行了没')

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

@@ -258,6 +258,12 @@
                   <el-link type="warning" :underline="false" style="margin-left: 15px;">查看说明</el-link>
                 </el-tooltip>
               </div>
+              <div class="monthlyFinance-item">
+                工单:<el-select v-model="isItAWorkOrderValue" placeholder="全部" clearable @change="selcts()" size="small" style="margin-left: 10px;width: 140px">
+                  <el-option label="工单" value="2"></el-option>
+                  <el-option label="非工单" value="3"></el-option>
+                </el-select>
+              </div>
               <div class="monthlyFinance-item">
                 工单结算日期{{ obtainMonthlyFinancialModificationDate ? '(修改日期)' : '' }}:
                 <template v-if="!obtainMonthlyFinancialModificationDate">
@@ -282,12 +288,13 @@
         <el-button type="primary" @click="setWarning" size="mini" v-if="ins == 21">{{ $t('sheZhiYuJing') }}</el-button>
       </p>
       
-      <div v-if="ins == 31" style="width: 15%" class="tableRightBtn">
+      <div v-if="ins == 31" style="width: 300px" class="tableRightBtn">
         <template v-if="!obtainMonthlyFinancialStatementsRows.lastSendTime">
           <el-button type="success" size="small" @click="confirmTheFinalDraft()" :disabled="obtainMonthlyFinancialStatementsRows.status">
             {{ obtainMonthlyFinancialStatementsRows.status == 1 ? '已定稿' : '确定定稿' }}
           </el-button>
           <el-button type="primary" size="small" @click="immediateVisableCli()" :disabled="!obtainMonthlyFinancialStatementsRows.timesheetDate">立即发送</el-button>
+          <el-button type="primary" :loading="exportReportLoading" @click="exportExcel" size="small">{{ $t('reporderived') }}</el-button>
         </template>
         <el-link type="success" :underline="false" v-else>
           {{ obtainMonthlyFinancialStatementsRows.lastSendTime }} 已发送
@@ -2347,6 +2354,7 @@ export default {
       timelyTaskHoursRadio: '按任务查看',
       timelyReportingOfTaskHoursList: [],
       timelyReportingOfTaskHoursLoading: false,
+      isItAWorkOrderValue: '',
     };
   },
   computed: {},
@@ -3174,6 +3182,13 @@ export default {
             sl.taskType = this.taskTypeId
           }
           sl.projectId = this.proJuctId
+        } else if(this.ins == 31) {
+          fName = `${this.obtainMonthlyFinancialStatementsYmonth}月度财务工时表.xlsx`
+          url = `/finance-monthly-worktime/exportByMonth`
+          sl.ymonth = this.obtainMonthlyFinancialStatementsYmonth
+          sl.companyId = this.user.companyId
+          sl.reGenerate = ''
+          sl.isItAWorkOrder = this.isItAWorkOrderValue
         } else if(this.ins == 32) {
           fName = `${this.timelyTaskHoursRadio}任务工时填报及时表.xlsx`
           url = `/report/exportReportRateOfTask`
@@ -5068,7 +5083,8 @@ export default {
       this.postData(`/finance-monthly-worktime/getByMonth`, {
         companyId: this.user.companyId,
         ymonth: this.obtainMonthlyFinancialStatementsYmonth,
-        reGenerate: reGenerate
+        reGenerate: reGenerate,
+        isItAWorkOrder: this.isItAWorkOrderValue
       }).then(res => {
         if(reGenerate) {
           this.$message({
@@ -5079,7 +5095,7 @@ export default {
         this.obtainMonthlyFinancialStatementsRows = {
           ...res.data,
           detailList: (res.data.detailList || []).map(item => {
-            const timeFields = ['maintanceTime', 'debugTime', 'waitingTime', 'assistTime', 'publicTime', 'composeTime'];
+            const timeFields = ['composeTime', 'repairTime', 'debugTime', 'waitingTime', 'publicTime'];
             // const timeFields = ['composeTime', 'repairTime', 'publicTime'];
             const projectWorkingHoursFields = ['bustripTime', 'cleanTime']
             const totalTime = timeFields.reduce((sum, key) => sum + (item[key] || 0), 0);

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

@@ -4,7 +4,7 @@
     </div>
     <!-- 任务详情信息弹出框 -->
     <el-dialog :class="''" :title="title" v-if="addFormVisible" append-to-body
-      :visible.sync="addFormVisible" :close-on-click-modal="false" customClass="customWidth" width="840px" :top="'6vh'">
+      :visible.sync="addFormVisible" :close-on-click-modal="false" customClass="customWidth" :width="user.companyId == 3092?'1150px':'840px'" :top="'6vh'">
       <taskComponent ref="thskComponents" :integrationTask="integrationTask" :showOrNot="showOrNot"
         @closeBounced="closeBounced" :showMmeiLaiDe="true" :showMmeiLaiDeData="showMmeiLaiDeData"></taskComponent>
       <div slot="title" v-if="addForm.parentTid != null">

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

@@ -409,7 +409,7 @@
 
         <!--新增任务界面-->
         <el-dialog :class="addForm.id==null?'':'jm'" :title="title" v-if="addFormVisible" :visible.sync="addFormVisible" 
-        :close-on-click-modal="false" customClass="customWidth" width="840px" ref="addDialog" :top="'6vh'">
+        :close-on-click-modal="false" customClass="customWidth" :width="user.companyId == 3092?'1150px':'850px'" ref="addDialog" :top="'6vh'">
             <!-- 整合 -->
             <taskComponent ref="thskComponents" :integrationTask="integrationTask" @closeBounced="closeBounced"></taskComponent>
             <div slot="title" v-if="addForm.parentTid != null || isRelationItem" >

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

@@ -372,7 +372,7 @@
 
         <!-- 任务详情信息弹出框 -->
         <el-dialog :class="addForm.id==null?'':'jm'" :title="title" v-if="addFormVisible" :visible.sync="addFormVisible" 
-        :close-on-click-modal="false" customClass="customWidth" width="840px" :top="'6vh'">
+        :close-on-click-modal="false" customClass="customWidth" :width="user.companyId == 3092?'1150px':'840px'" :top="'6vh'">
         <!-- <div style="width: 200%;height:80%;position: absolute;right:-100%;top:0;background:#000;opacity: 0;" @click="sss"></div> -->
             <!-- 整合 -->
             <taskComponent ref="thskComponents" :integrationTask="integrationTask" :showOrNot="showOrNot" @closeBounced="closeBounced"></taskComponent>

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

@@ -5210,7 +5210,16 @@
             },
 
             getGroupStages(domain, index, keepStage) {
-                // console.log(domain);
+                if(this.user.companyId == '7536') {
+                    const taskGroupsList = domain.taskGroups
+                    const groupId = domain.groupId
+                    const taskGroupRow = taskGroupsList.find(item => item.id == groupId)
+                    if(groupId && taskGroupRow.name.indexOf('出差工时') != '-1') {
+                        domain.extraField4 = ''
+                        domain.extraField5 = ''
+                    }
+                }
+                console.log(domain);
                 if(!domain.groupId){
                     domain.projectAuditorId = ''
                     domain.stages = []
@@ -5218,6 +5227,7 @@
                         domain.taskId = ''
                         domain.sapServiceId = ''
                     }
+                    
                     if(this.user.timeType.reportAuditType >= 1){
                         domain.auditUserList = []
                     }
@@ -7091,7 +7101,21 @@
                     })
                     return
                 }
-
+                if(this.user.companyId == '7536') {
+                    const taskGroupsList = this.zhoBao.taskGroups
+                    const groupId = this.zhoBao.groupId
+                    const taskGroupRow = taskGroupsList.find(item => item.id == groupId)
+                    const extraField4 = this.zhoBao.extraField4
+                    const extraField5 = this.zhoBao.extraField5
+                    if(groupId && taskGroupRow.name.indexOf('研发工时') != '-1' && (extraField4 || extraField5)) {
+                        this.$message({
+                            message: `选择了研发工时,请勿填写工单号和行号`,
+                            type: "error"
+                        });
+                        return
+                    }
+                }
+                
                 this.tianxieDialogVisible = false
                 var zhong = this.zhoData
                 this.zhoBao.hasEdited = true;
@@ -8892,7 +8916,24 @@
                             if(this.user.timeType.reportExtraField5Name) {
                                 formData.append('extraField5', this.workForm.domains[i].extraField5 || '');
                             }
+
+                            if(this.user.companyId == 7536) {
+                                const taskGroupsList = this.workForm.domains[i].taskGroups
+                                const groupId = this.workForm.domains[i].groupId
+                                const taskGroupRow = taskGroupsList.find(item => item.id == groupId)
+                                const extraField4 = this.workForm.domains[i].extraField4
+                                const extraField5 = this.workForm.domains[i].extraField5
+                                const projectName = this.workForm.domains[i].projectName
+                                if(taskGroupRow.name.indexOf('研发工时') != '-1' && (extraField4 || extraField5)) {
+                                    this.$message({
+                                        message: `【${projectName}】项目选择了研发工时,请勿填写工单号和行号`,
+                                        type: "error"
+                                    });
+                                    return
+                                }
+                            }
                         }
+
                         this.submitingReport = true;
                         this.http.uploadFile( this.port.report.editPort, formData,
                         res => {

+ 5 - 3
fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/index.vue

@@ -978,13 +978,15 @@ export default {
         cardtimeRefresh(workdate) {  // 考勤记录刷新
             if (!workdate) return;
             this.cardRefLoading = true;
-            this.$axios.post('/user-corpwx-time/getPunchRecordBySelf', {
-                date: workdate
+            this.$axios.post(this.user.timeType.syncDingding == 1?'/dingding/refreshUserCardTime':'/user-corpwx-time/getPunchRecordBySelf', {
+                date: workdate,
+                companyId: this.user.companyId,
+                userId: this.user.id
             })
                 .then(res => {
                     if (res.code == 'ok') {
                         this.cardRefLoading = false;
-                        this.report.time = res.data.time;
+                        this.report.time = this.user.timeType.syncDingding == 1?res.data:res.data.time;
                     } else {
                         this.cardRefLoading = false;
                         this.$toast.fail('获取失败:' + res.msg);

+ 1 - 1
fhKeeper/formulahousekeeper/timesheet_mld/src/components/taskComponent.vue

@@ -619,7 +619,7 @@
     </div>
 
     <!-- 修改工时弹窗 -->
-    <el-dialog title="修改计划" :visible.sync="modifyWorkingHoursRowVisable" width="840px" top="6.5vh" :before-close="handleClose" append-to-body>
+    <el-dialog title="查看已有计划" :visible.sync="modifyWorkingHoursRowVisable" width="840px" top="6.5vh" :before-close="handleClose" append-to-body>
         <div>
             <div class="modifyPlanTitle">
                 <div class="modifyPlanTitle-item">