Jelajahi Sumber

Merge remote-tracking branch 'origin/master'

yusm 2 minggu lalu
induk
melakukan
9e8f5a71f8

+ 23 - 1
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/tabbar/home/index.vue

@@ -3,6 +3,7 @@
     <template v-slot:headerLeft>
       <div class="homeheaderleft">
         <img src="/src/assets/image/home_logo.png">
+        <!-- <div class="text-white">客户管家<ww-open-data :openid="useInfo.userInfo.name" type="userName"></ww-open-data></div> -->
         <div class="text-white">客户管家</div>
       </div>
     </template>
@@ -10,6 +11,7 @@
     <template v-slot:body>
       <div class="home-theBack"></div>
       <div class="home-theContent">
+        <div class="hoPlaceholderSymbol"><ww-open-data :openid="useInfo.userInfo.name" type="userName"></ww-open-data></div>
         <!-- 固定头部 -->
         <div class="home-theContent-title">
           <div class="item" v-for="(item, index) in addQuickList" :key="index">
@@ -218,7 +220,21 @@ function obtainEnterpriseWeChatParameters(data = {}) {
           jsApiList: ['selectExternalContact', 'openThirdAppServiceChat', 'openAppManage'], //必填,传入需要使用的接口名称
           success: function (result) {
             //  wx.agentConfig成功回调后,WWOpenData 才会注入到 window 对象上面
-            window.WWOpenData.bind(document.querySelector('ww-open-data'))
+            // window.WWOpenData.bind(document.querySelector('ww-open-data'))
+            setTimeout(() => {
+              const el = document.querySelector('ww-open-data');
+              console.log(el, '<======= el')
+              if (el) {
+                try {
+                  window.WWOpenData.bind(el);
+                  console.log('WWOpenData.bind 成功执行');
+                } catch (e) {
+                  console.error('WWOpenData.bind 执行出错:', e);
+                }
+              } else {
+                console.warn('ww-open-data 元素不存在');
+              }
+            }, 1000)
           },
           fail: function (res) {
             if (res.errMsg.indexOf('function not exist') > -1) {
@@ -388,4 +404,10 @@ useLifecycle({
 .block-div {
   padding: 14px 0;
 }
+
+.hoPlaceholderSymbol {
+  position: absolute;
+  left: -500vw;
+  top: -200vh;
+}
 </style>

+ 230 - 0
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/tabbar/my/index copy 2.vue

@@ -0,0 +1,230 @@
+<template>
+  <div class="personalCenter">
+    <div class="personalCenter-top flex flex-col">
+      <div class="px-4 flex justify-between items-center avatarSection">
+        <div class="flex items-center">
+          <div
+            class="bg-[#fff] text-[#333] flex items-center justify-center profilePicture"
+          >
+            <TranslationComponent :openId="userInfo.userInfo.name" />
+          </div>
+          <div class="ml-8 profilePicture-text">
+            <TranslationComponent :openId="userInfo.userInfo.name" /> <br />
+            <div class="jobIdEtc">工号:{{ userInfo.userInfo.jobNumber ? userInfo.userInfo.jobNumber : '待配置' }}</div>
+          </div>
+        </div>
+      </div>
+    </div>
+    <div class="flex-1 overflow-y-auto personalCenter-content">
+      <div class="flex flex-row items-center justify-between">
+        <div class="list-tile flex">
+          <img src="../../../assets/image/dqbb.png" alt="" />
+          <div class="list-tile-text">当前版本</div>
+        </div>
+        <div class="list-text">{{ ['', '专业版本', '旗舰版本'][userInfo.userInfo?.company?.versionControl] }}</div>
+      </div>
+      <div class="flex flex-row items-center justify-between" v-if="userInfo.userInfo.userNameNeedTranslate != '1' && (isCorpWX || isWX)" @click="bindWeiXin">
+        <div class="list-tile flex">
+          <img src="../../../assets/image/dqbb.png" alt="" />
+          <div class="list-tile-text">{{ `绑定${isCorpWX ? '企业' : ''}微信` }}</div>
+        </div>
+        <div class="list-text">
+          (
+            <span v-if="(isCorpWX && userInfo.userInfo.corpwxUserid == null) || (isWX && userInfo.userInfo.wxOpenid == null)">未绑定</span>
+            <span v-if="(isCorpWX && userInfo.userInfo.corpwxUserid != null) || (isWX && userInfo.userInfo.wxOpenid != null)">已绑定</span>
+          )
+        </div>
+      </div>
+      <div class="flex flex-row items-center justify-between mt-3">
+        <div class="list-tile flex">
+          <img src="../../../assets/image/gsmc.png" alt="" />
+          <div class="list-tile-text">公司名称</div>
+        </div>
+        <div class="list-text">{{ userInfo.userInfo?.company?.companyName }}</div>
+      </div>
+      <div class="flex flex-row items-center justify-between mt-3">
+        <div class="list-tile flex">
+          <img src="../../../assets/image/dqzh.png" alt="" />
+          <div class="list-tile-text">账号角色</div>
+        </div>
+        <div class="list-text">{{ userInfo.userInfo?.roleName }}</div>
+      </div>
+      <div class="flex flex-row items-center justify-between mt-3">
+        <div class="list-tile flex">
+          <img src="../../../assets/image/yxrq.png" alt="" />
+          <div class="list-tile-text">有效日期</div>
+        </div>
+        <div class="list-text">{{ userInfo.userInfo?.company?.expirationDate }}</div>
+      </div>
+      <div class="flex flex-row items-center justify-between mt-3" @click="instructions()">
+        <div class="list-tile flex">
+          <img src="../../../assets/image/sysm.png" alt="" />
+          <div class="list-tile-text">使用说明</div>
+        </div>
+        <img src="../../../assets/image/rightArrow.png" class="list-text-img"></img>
+      </div>
+      <div class="flex flex-row items-center justify-between mt-3" @click="applicationMarket()">
+        <div class="list-tile flex">
+          <img src="../../../assets/image/yysc.png" alt="" />
+          <div class="list-tile-text">应用市场</div>
+        </div>
+        <img src="../../../assets/image/rightArrow.png" class="list-text-img"></img>
+      </div>
+    </div>
+    <div><Footer /></div>
+  </div>
+</template>
+
+<script setup>
+import { ref } from "vue";
+import { useLifecycle } from "@hooks/useCommon.js";
+import useRouterStore from "@store/useRouterStore.js";
+import useInfoStore from "@store/useInfoStore.js";
+import Footer from "@components/page/footer.vue";
+
+const router = useRouterStore();
+const userInfo = useInfoStore();
+const isCorpWX = ref(false);
+const isWX = ref(false);
+
+function instructions() {
+  // router.navigateTo({
+  //   pathName: "pdfPreview",
+  // });
+  // 新窗口打开链接
+  window.open("https://crm.ttkuaiban.com/upload/mobileUserManual.pdf");
+}
+
+function bindWeiXin() {
+  //企业微信
+  if (isCorpWX.value && userInfo.userInfo.corpwxUserid != null) {
+    return;
+  }
+  //微信
+  else if (isWX.value && userInfo.userInfo.wxOpenid != null) {
+    return;
+  }
+
+  var appId = "wx1c1d8fc81bc073a8"; //智能客户管家公众号
+  var url =
+    "https://mobcrm.ttkuaiban.com/api/wechat/bindWeiXin2?userId=" +
+    userInfo.userInfo.id; //工时管家公众号授权回调页面
+  if (isCorpWX.value) {
+    appId = "ww4e237fd6abb635af"; //企业微信第三方的SUIT ID
+    url =
+      "https://crm.ttkuaiban.com/api/wxcorp/bindCorpWeiXin?userId=" +
+      userInfo.userInfo.id; //授权回调页面
+  }
+
+  var weixinUrl =
+    "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" +
+    appId +
+    "&redirect_uri=" +
+    encodeURI(url) +
+    "&response_type=code&scope=snsapi_base&state=0#wechat_redirect";
+  window.location.href = weixinUrl;
+}
+
+function signOut() {
+  router.redirectTo({
+    pathName: "login",
+    success: () => {
+      localStorage.clear();
+      sessionStorage.clear();
+      window.location.reload();
+    },
+  });
+}
+
+function judgingTheEnvironment() {
+  const currentEnvironment = navigator.userAgent.toLowerCase();
+  isCorpWX.value = currentEnvironment.indexOf("wxwork") > 0 ? true : false;
+  isWX.value = currentEnvironment.indexOf("micromessenger") > 0 ? true : false;
+}
+
+const applicationMarket = () => {
+  window.location.href = "https://www.ttkuaiban.com/appMarket.html";
+  // window.open('https://www.ttkuaiban.com/appMarket.html', '_blank');
+};
+
+useLifecycle({
+  load: () => {
+    judgingTheEnvironment();
+  },
+});
+</script>
+
+<style lang="scss" scoped>
+.profilePicture {
+  width: 70px;
+  height: 70px;
+  border-radius: 50%;
+  font-size: 16px;
+  font-weight: bold;
+}
+.profilePicture-text {
+  font-size: 18px;
+  color: #fff;
+}
+.profilePicture-img {
+  width: 24px;
+}
+.list-imgs {
+  width: 14px;
+}
+.personalCenter {
+  width: 100%;
+  height: 100vh;
+  display: flex;
+  flex-direction: column;
+  background-color: #fff;
+}
+.personalCenter-top {
+  width: 100%;
+  height: 180px;
+  background-image: url("../../../assets/image/grzxbjs.png");
+  background-size: cover;
+}
+.avatarSection {
+  padding: 52px 30px 0 30px;
+}
+.jobIdEtc {
+  font-size: 13px;
+  color: #92bdee;
+  margin-top: 4px;
+}
+.personalCenter-content {
+  width: 100%;
+  border-top-left-radius: 15px;
+  border-top-right-radius: 15px;
+  background-color: #fff;
+  position: relative;
+  padding: 20px 26px 0 26px;
+  top: -18px;
+}
+.list-text {
+  color: #A6A6A6;
+  font-weight: medium;
+  font-size: 12px;
+  position: relative;
+  top: -3px;
+}
+.list-tile {
+  color: #000000;
+  font-weight: medium;
+  font-size: 12px;
+}
+.list-tile img {
+  width: 28px;
+}
+.list-tile-text{
+  position: relative;
+  top: 2px;
+  margin-left: 10px;
+}
+.list-text-img {
+  width: 16px;
+  position: relative;
+  top: -3px;
+}
+</style>

+ 14 - 10
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/tabbar/my/index.vue

@@ -161,6 +161,7 @@ useLifecycle({
   border-radius: 50%;
   font-size: 16px;
   font-weight: bold;
+  overflow: hidden; // iOS 裁剪问题
 }
 .profilePicture-text {
   font-size: 18px;
@@ -174,7 +175,7 @@ useLifecycle({
 }
 .personalCenter {
   width: 100%;
-  height: 100vh;
+  min-height: 100dvh; // 修复 iOS vh 问题
   display: flex;
   flex-direction: column;
   background-color: #fff;
@@ -198,35 +199,38 @@ useLifecycle({
   border-top-left-radius: 15px;
   border-top-right-radius: 15px;
   background-color: #fff;
-  position: relative;
   padding: 20px 26px 0 26px;
-  top: -18px;
+  margin-top: -18px; // 替代 top: -18px
+  flex: 1;
+  overflow-y: auto;
+  -webkit-overflow-scrolling: touch; // iOS 滚动优化
 }
 .list-text {
   color: #A6A6A6;
-  font-weight: medium;
-  font-size: 12px;
-  line-height: normal;
+  font-weight: 500; // 修复非法值
+  font-size: 14px;
   position: relative;
   top: -3px;
 }
 .list-tile {
   color: #000000;
-  font-weight: medium;
-  font-size: 12px;
-  line-height: normal;
+  font-weight: 500;
+  font-size: 14px;
 }
 .list-tile img {
   width: 28px;
+  display: block; // 修复 iOS 点击问题
 }
-.list-tile-text{
+.list-tile-text {
   position: relative;
   top: 2px;
   margin-left: 10px;
 }
 .list-text-img {
   width: 16px;
+  display: block;
   position: relative;
   top: -3px;
 }
+
 </style>

+ 9 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ExcelParserService.java

@@ -145,8 +145,8 @@ public class ExcelParserService {
     }
 
     public static void main(String[] args) {
-        String startTime = "08:30";
-        String endTime = "18:16";
+        String startTime = "08:29";
+        String endTime = "18:07";
         double workHours = calculateZhengBeiWorkHours(startTime, endTime);
 
         System.out.println("工作时长:" + workHours + "小时");
@@ -155,6 +155,13 @@ public class ExcelParserService {
     public static double calculateZhengBeiWorkHours(String startTime, String endTime) {
         // 简单计算工作时长(小时)
         // 实际应用中需要更精确的计算,考虑午休时间等
+        if (startTime.compareTo("08:30") < 0) {
+            startTime = "08:30";
+        }
+        // 12:00-13:00为午休,中间来的得从下午上班时间开始算
+        if (startTime.compareTo("12:00") > 0 && startTime.compareTo("13:00") < 0) {
+            startTime = "13:00";
+        }
         String[] startParts = startTime.split(":");
         boolean isEndNextDay = endTime.startsWith("次日");
         if (endTime.startsWith("次日")) {

+ 66 - 28
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -705,22 +705,34 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 }
                 Project project = allProjectList.stream().filter(p -> p.getId().equals(r.getProjectId())).findFirst().get();
                 //处理维度列表数据
-                if (timeTypeMapper.selectById(companyId).getCustomDegreeActive() == 1) {
-                    String associateDegrees = project.getAssociateDegrees();
-                    List<HashMap> degreeMapList = new ArrayList<>();
-                    if (associateDegrees != null) {
-                        String[] split = associateDegrees.split("\\,");
-                        for (int i=0;i<split.length; i++) {
-                            HashMap map = new HashMap();
-                            if (!StringUtils.isEmpty(split[i])) {
-                                Integer id = Integer.parseInt(split[i]);
-                                map.put("id", id);
-                                map.put("name", degreeList.stream().filter(d->d.getId().equals(id)).findFirst().get().getName());
-                                degreeMapList.add(map);
+                if (timeType.getCustomDegreeActive() == 1) {
+                    if (timeType.getCustomDegreeWithPro() == 1) {
+                        String associateDegrees = project.getAssociateDegrees();
+                        List<HashMap> degreeMapList = new ArrayList<>();
+                        if (associateDegrees != null) {
+                            String[] split = associateDegrees.split("\\,");
+                            for (int i=0;i<split.length; i++) {
+                                HashMap map = new HashMap();
+                                if (!StringUtils.isEmpty(split[i])) {
+                                    Integer id = Integer.parseInt(split[i]);
+                                    map.put("id", id);
+                                    map.put("name", degreeList.stream().filter(d->d.getId().equals(id)).findFirst().get().getName());
+                                    degreeMapList.add(map);
+                                }
                             }
                         }
+                        r.setDegreeList(degreeMapList);
+                    } else {
+                        //不关联项目
+                        List<HashMap> degreeMapList = new ArrayList<>();
+                        for (int i=0;i<degreeList.size(); i++) {
+                            HashMap map = new HashMap();
+                            map.put("id", degreeList.get(i).getId());
+                            map.put("name", degreeList.get(i).getName());
+                            degreeMapList.add(map);
+                        }
+                        r.setDegreeList(degreeMapList);
                     }
-                    r.setDegreeList(degreeMapList);
                 }
                 //检查是否是按照任务分组负责人审核
                 int reportAuditType = timeTypeMapper.selectById(companyId).getReportAuditType();
@@ -8798,7 +8810,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     reports.add(recentFillReport);
                 }
             } else {
-                msg.setError("请先设置参与的项目");
+                msg.setError("您尚未填写过日报,无法实现智能填报");
                 return msg;
             }
         }
@@ -8835,23 +8847,37 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 }
 
                 //处理维度列表数据
-                if (timeTypeMapper.selectById(companyId).getCustomDegreeActive() == 1) {
-                    Project project = allProjectList.stream().filter(p -> p.getId().equals(r.getProjectId())).findFirst().get();
-                    String associateDegrees = project.getAssociateDegrees();
-                    List<HashMap> degreeMapList = new ArrayList<>();
-                    if (associateDegrees != null) {
-                        String[] split = associateDegrees.split("\\,");
-                        for (int i=0;i<split.length; i++) {
-                            HashMap map = new HashMap();
-                            if (!StringUtils.isEmpty(split[i])) {
-                                Integer id = Integer.parseInt(split[i]);
-                                map.put("id", id);
-                                map.put("name", degreeList.stream().filter(d->d.getId().equals(id)).findFirst().get().getName());
-                                degreeMapList.add(map);
+                TimeType timeType = timeTypeMapper.selectById(companyId);
+                if (timeType.getCustomDegreeActive() == 1) {
+                    if (timeType.getCustomDegreeWithPro() == 1) {
+                        //和项目绑定的自定义维度
+                        Project project = allProjectList.stream().filter(p -> p.getId().equals(r.getProjectId())).findFirst().get();
+                        String associateDegrees = project.getAssociateDegrees();
+                        List<HashMap> degreeMapList = new ArrayList<>();
+                        if (associateDegrees != null) {
+                            String[] split = associateDegrees.split("\\,");
+                            for (int i=0;i<split.length; i++) {
+                                HashMap map = new HashMap();
+                                if (!StringUtils.isEmpty(split[i])) {
+                                    Integer id = Integer.parseInt(split[i]);
+                                    map.put("id", id);
+                                    map.put("name", degreeList.stream().filter(d->d.getId().equals(id)).findFirst().get().getName());
+                                    degreeMapList.add(map);
+                                }
                             }
                         }
+                        r.setDegreeList(degreeMapList);
+                    } else {
+                        //不关联项目
+                        List<HashMap> degreeMapList = new ArrayList<>();
+                        for (int i=0;i<degreeList.size(); i++) {
+                            HashMap map = new HashMap();
+                            map.put("id", degreeList.get(i).getId());
+                            map.put("name", degreeList.get(i).getName());
+                            degreeMapList.add(map);
+                        }
+                        r.setDegreeList(degreeMapList);
                     }
-                    r.setDegreeList(degreeMapList);
                 }
                 int reportAuditType = timeTypeMapper.selectById(companyId).getReportAuditType();
                 //分组
@@ -8957,6 +8983,18 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 } else {
                     //4和5是所属BU负责人审核和部门负责人审核,不需要前端页面显示审核人
                 }
+
+                //解析自定义多选数组
+                if (!StringUtils.isEmpty(r.getMultiDegrId())) {
+                    String multi = r.getMultiDegrId().replace("@", ",");
+                    JSONArray array = JSONArray.parseArray(multi);
+                    List<Integer> list = new ArrayList<>();
+                    for (int i=0;i<array.size(); i++) {
+                        Integer id = array.getInteger(i);
+                        list.add(id);
+                    }
+                    r.setMultiDegrIdList(list);
+                }
             });
             msg.data = reports;
         } catch (NullPointerException e) {

+ 1 - 1
fhKeeper/formulahousekeeper/octopus/src/views/customer/list.vue

@@ -80,7 +80,7 @@
                     <el-button size="mini"  @click="editClick('D', scope.row)">{{scope.row.setMeal ? '设为未签约' : '设为已签约'}}</el-button>
                     <el-button size="mini"  @click="editClick('G', scope.row)">其他设置</el-button>
                     <el-button size="mini"  @click="editClick('H', scope.row)">报表配置</el-button>
-                    <el-button size="mini"  @click="editClick('K', scope.row)" v-if="user.phone=='15895914665'">登录系统</el-button>
+                    <el-button size="mini"  @click="editClick('K', scope.row)">登录系统</el-button>
                     <el-button size="mini"  @click="editClick('I', scope.row)"  v-if="scope.row.canDelete">删除企业</el-button>
                     <el-button size="mini"  @click="editClick('E', scope.row)" v-loading="dingdingSync" v-if="scope.row.dingdingCorpid">同步钉钉人员</el-button>
                 </template>

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

@@ -5128,9 +5128,7 @@
                             this.workForm.domains[index].extraField4 = ''
                             this.workForm.domains[index].extraField5 = ''
                         }
-                        if((res.data.orderIds || []).length > 0) {
-                            this.workForm.domains[index].extraField4 = res.data.orderIds[0]
-                        }
+
                         this.workForm.domains[index].reportExtraField4List = res.data.orderIds || []
                         this.workForm.domains[index].reportExtraField5List = res.data.lines || []
                         this.$forceUpdate();
@@ -6514,7 +6512,7 @@
                                     multiWorktime: aiReportData[i].multiWorktime || 0,
                                     worktimeList: [{}],
                                     degreeId: aiReportData[i].degreeId==-1?null:aiReportData[i].degreeId,
-                                    multiDegrIdArray: aiReportData[i].multiDegrId?JSON.parse(aiReportData[i].multiDegrId):null,
+                                    multiDegrIdArray: aiReportData[i].multiDegrIdList,
                                     wuduList: aiReportData[i].degreeList,
                                     taskGroups:aiReportData[i].taskGroups,
                                     customData: aiReportData[i].customData,//自定义的数值
@@ -7082,9 +7080,9 @@
                     if (res.code == "ok") {
                         this.zhoBao.reportExtraField4List = res.data.orderIds || []
                         this.zhoBao.reportExtraField5List = res.data.lines || []
-                        if((res.data.orderIds || []).length > 0) {
-                            this.zhoBao.extraField4 = res.data.orderIds[0]
-                        }
+                        // if((res.data.orderIds || []).length > 0) {
+                        //     this.zhoBao.extraField4 = res.data.orderIds[0]
+                        // }
                         console.log(this.zhoBao, '<===== this.zhoBao')
                         this.$forceUpdate();
                     } 
@@ -7183,6 +7181,14 @@
                         });
                         return
                     }
+
+                    if(taskGroupRow.name.indexOf('出差工时') != '-1' && extraField4) {
+                        this.$message({
+                            message: `出差项目不能关联工单`,
+                            type: "error"
+                        });
+                        return
+                    }
                 }
                 
                 this.tianxieDialogVisible = false
@@ -9000,6 +9006,14 @@
                                     });
                                     return
                                 }
+
+                                if(taskGroupRow.name.indexOf('出差工时') != '-1' && extraField4) {
+                                    this.$message({
+                                        message: `出差项目不能关联工单`,
+                                        type: "error"
+                                    });
+                                    return
+                                }
                             }
                         }
 

+ 32 - 6
fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/index.vue

@@ -185,7 +185,7 @@
                     <template v-if="item.projectId && doYouWantToDisplayTheWorkOrder">
                         <!-- 工单号 -->
                         <van-field readonly name="stage" :disabled="!item.canEdit"
-                        v-if="user.timeType.reportExtraField4Name"
+                        v-if="user.timeType.reportExtraField4Name && doYouWantToDisplayTheWorkOrderGongdan"
                         clickable :value="item.extraField4" :label="user.timeType.reportExtraField4Name" :placeholder="!item.canEdit ? '' : `请选择`" :right-icon="!item.canEdit ? '' : 'close'"
                         @click-right-icon.stop="clearClickPickExtraField4(index, item)"
                         @focus="clickPickExtraField4(index, item)" />
@@ -763,6 +763,7 @@ export default {
             showAddMore: false,
             businessTripsArray: [],
             doYouWantToDisplayTheWorkOrder: true,
+            doYouWantToDisplayTheWorkOrderGongdan: true,
             hideWorkingHours: false,
 
             reportSettingsRow: {},
@@ -1241,9 +1242,9 @@ export default {
                             this.form.domains[index == null ? this.clickIndex : index].extraField4 = ''
                             this.form.domains[index == null ? this.clickIndex : index].extraField5 = ''
                         }
-                        if((res.data.orderIds || []).length > 0) {
-                            this.form.domains[index == null ? this.clickIndex : index].extraField4 = res.data.orderIds[0]
-                        }
+                        // if((res.data.orderIds || []).length > 0) {
+                        //     this.form.domains[index == null ? this.clickIndex : index].extraField4 = res.data.orderIds[0]
+                        // }
                         this.form.domains[index == null ? this.clickIndex : index].reportExtraField4List = res.data.orderIds || []
                         this.form.domains[index == null ? this.clickIndex : index].reportExtraField5List = res.data.lines || []
                     }
@@ -1747,7 +1748,24 @@ export default {
                                 subProjectName = list[i].subProjectList.filter(s => s.id == list[i].subProjectId)[0].name;
                             }
                             var projectName = list[i].projectName;
-                            arr.push({
+                            var t = this.user.timeType;
+                            let mmm = !t.customDegreeMultiple ? list[i].degreeId : (list[i].multiDegrIdList || [])
+                            let sss = list[i].degreeList || []
+                            let radioPickDegree = ''
+                            let wuduName = ''
+                            if(!t.customDegreeMultiple) {
+                                for (var s in sss) {
+                                    if (sss[s].id == mmm) {
+                                        wuduName = sss[s].name
+                                    }
+                                }
+                                radioPickDegree = sss.filter(s => s.id == mmm)[0]
+                            } else {
+                                let arr = sss.filter(s => mmm.includes(s.id)).map(s => s.name);
+                                radioPickDegree = sss.filter(s => mmm.includes(s.id))
+                                wuduName = arr.join(',')
+                            }
+                            let copyReport = {
                                 projectId: list[i].projectId,
                                 projectName: projectName,
                                 workingTime: String(list[i].workingTime),
@@ -1767,6 +1785,7 @@ export default {
                                 multiWorktime: list[i].multiWorktime,
                                 worktimeList: list[i].worktimeList,
                                 wuduList: list[i].degreeList,
+                                weiduName: wuduName,
                                 degreeId: list[i].degreeId==-1?null:list[i].degreeId,
                                 subProjectId: list[i].subProjectId,
                                 subProjectName: subProjectName,
@@ -1802,7 +1821,8 @@ export default {
                                 userReportDeptName: list[i].userReportDeptName,
                                 reportTargetDeptId: list[i].deptId,
                                 content: list[i].content
-                            })
+                            }
+                            arr.push(copyReport)
                         }
                         this.form.domains = arr;
                     } else {
@@ -2368,6 +2388,12 @@ export default {
                 } else {
                     this.doYouWantToDisplayTheWorkOrder = true
                 }
+
+                if(value.name.indexOf('出差工时') != -1) {
+                   this.doYouWantToDisplayTheWorkOrderGongdan = false 
+                } else {
+                    this.doYouWantToDisplayTheWorkOrderGongdan = true
+                }
             }
             
 

+ 9 - 2
fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/weekEdit.vue

@@ -104,7 +104,7 @@
                         <template v-if="item.projectId && doYouWantToDisplayTheWorkOrder">
                             <!-- 工单号 -->
                             <van-field readonly name="stage" :disabled="item.state<=1"
-                            v-if="user.timeType.reportExtraField4Name"
+                            v-if="user.timeType.reportExtraField4Name && doYouWantToDisplayTheWorkOrderGongdan"
                             clickable :value="item.extraField4" :label="user.timeType.reportExtraField4Name" placeholder="请选择"
                             @click="clickPickExtraField4(index, item)" />
                             <van-popup v-model="item.showPickerExtraField4" position="bottom" :close-on-click-overlay="false">
@@ -614,7 +614,8 @@
                 temporaryStorage: false, // 是否开启暂存
 
                 wuqiId: '1071',
-                doYouWantToDisplayTheWorkOrder: true
+                doYouWantToDisplayTheWorkOrder: true,
+                doYouWantToDisplayTheWorkOrderGongdan: true,
             };
         },
         methods: {
@@ -1825,6 +1826,12 @@
                     } else {
                         this.doYouWantToDisplayTheWorkOrder = true
                     }
+
+                    if(value.name.indexOf('出差工时') != -1) {
+                        this.doYouWantToDisplayTheWorkOrderGongdan = false 
+                    } else {
+                        this.doYouWantToDisplayTheWorkOrderGongdan = true
+                    }
                 }
 
                 this.getGroupStages(this.currentForm.domains[this.clickIndex], index, flag);