浏览代码

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

Lijy 1 年之前
父节点
当前提交
0c40e2e034

+ 3 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectCustomController.java

@@ -18,6 +18,7 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -46,7 +47,8 @@ public class ProjectCustomController {
         Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
         List<ProjectCustom> projectCustomList = projectCustomMapper.selectList(new QueryWrapper<ProjectCustom>().eq("company_id", companyId));
         List<String> nameList=new ArrayList<>();
-        projectCustomList.forEach(pc->{
+        List<ProjectCustom> customList = projectCustomList.stream().filter(pl -> pl.getCustomType().equals(projectCustom.getCustomType())).collect(Collectors.toList());
+        customList.forEach(pc->{
             nameList.add(pc.getCustomName());
         });
         if(nameList.contains(projectCustom.getCustomName())){

+ 8 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Report.java

@@ -355,6 +355,14 @@ public class Report extends Model<Report> {
     @TableField(exist = false)
     private ReportAuditorSetting auditorSetting;
 
+    @TableField(exist = false)
+    private User auditorFirst;
+    @TableField(exist = false)
+    private User auditorSec;
+    @TableField(exist = false)
+    private User auditorThird;
+    @TableField(exist = false)
+    private User ccUserid;
     @Override
     protected Serializable pkVal() {
         return this.id;

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DingDingServiceImpl.java

@@ -1118,6 +1118,8 @@ public class DingDingServiceImpl implements DingDingService {
                     userService.setUserRoleMenu(userVO);
                     httpRespMsg.data = userVO;
                 }
+            } else {
+                httpRespMsg.setError(json.getString("sub_msg"));
             }
         } catch (ApiException e) {
             e.printStackTrace();

+ 110 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -1732,6 +1732,65 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             ProjectSeparate projectSeparate = projectSeparateMapper.selectById(id);
             project.setProjectSeparate(projectSeparate);
         }
+        List<ProjectCustom> proCustomList = projectCustomMapper.selectList(new QueryWrapper<ProjectCustom>().eq("company_id", companyId));
+        //按顺序存储项目自定义字段 对应plate
+        HashMap map=new HashMap();
+        for(int i=0;i<proCustomList.size();i++){
+            String disposePhoto;
+            switch (i){
+                case 0:
+                    disposePhoto= disposePhoto(project.getPlate1());
+                    project.setPlate1(disposePhoto);
+                    map.put(proCustomList.get(i).getCustomName(),project.getPlate1());
+                    break;
+                case 1:
+                    disposePhoto= disposePhoto(project.getPlate2());
+                    project.setPlate2(disposePhoto);
+                    map.put(proCustomList.get(i).getCustomName(),project.getPlate2());
+                    break;
+                case 2:
+                    disposePhoto= disposePhoto(project.getPlate3());
+                    project.setPlate3(disposePhoto);
+                    map.put(proCustomList.get(i).getCustomName(),project.getPlate3());
+                    break;
+                case 3:
+                    disposePhoto= disposePhoto(project.getPlate4());
+                    project.setPlate4(disposePhoto);
+                    map.put(proCustomList.get(i).getCustomName(),project.getPlate4());
+                    break;
+                case 4:
+                    disposePhoto= disposePhoto(project.getPlate5());
+                    project.setPlate5(disposePhoto);
+                    map.put(proCustomList.get(i).getCustomName(),project.getPlate5());
+                    break;
+                case 5:
+                    disposePhoto= disposePhoto(project.getPlate6());
+                    project.setPlate6(disposePhoto);
+                    map.put(proCustomList.get(i).getCustomName(),project.getPlate6());
+                    break;
+                case 6:
+                    disposePhoto= disposePhoto(project.getPlate7());
+                    project.setPlate7(disposePhoto);
+                    map.put(proCustomList.get(i).getCustomName(),project.getPlate7());
+                    break;
+                case 7:
+                    disposePhoto= disposePhoto(project.getPlate8());
+                    project.setPlate8(disposePhoto);
+                    map.put(proCustomList.get(i).getCustomName(),project.getPlate8());
+                    break;
+                case 8:
+                    disposePhoto= disposePhoto(project.getPlate9());
+                    project.setPlate9(disposePhoto);
+                    map.put(proCustomList.get(i).getCustomName(),project.getPlate9());
+                    break;
+                case 9:
+                    disposePhoto= disposePhoto(project.getPlate10());
+                    project.setPlate10(disposePhoto);
+                    map.put(proCustomList.get(i).getCustomName(),project.getPlate10());
+                    break;
+            }
+        }
+        project.setPlateMap(map);
         HttpRespMsg msg = new HttpRespMsg();
         msg.data = project;
 
@@ -1741,10 +1800,10 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
 
     @Override
     public HttpRespMsg detailTwo(Integer id, HttpServletRequest request) {
-        HttpRespMsg projectPage = getProjectPage(1, 20, null, 1, 0, null, id, null, null, null, null, null, null, null, null, request);
-        Map<String,Object> mapList= (Map<String, Object>) projectPage.data;
-        List<Project> projectList= (List<Project>) mapList.get("records");
-        Project project = projectList.get(0);
+//        HttpRespMsg projectPage = getProjectPage(1, 20, null, 1, 0, null, id, null, null, null, null, null, null, null, null, request);
+//        Map<String,Object> mapList= (Map<String, Object>) projectPage.data;
+//        List<Project> projectList= (List<Project>) mapList.get("records");
+        Project project = projectMapper.selectById(id);
         Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
         TimeType timeType = timeTypeMapper.selectById(companyId);
         //todo:计算项目预算工时
@@ -5372,6 +5431,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         List<String> nameList= (List<String>) resultMap.get("nameList");
         Company company = companyMapper.selectById(user.getCompanyId());
         WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", company.getId()));
+        List<ProjectCustom> projectCustomList = projectCustomMapper.selectList(new QueryWrapper<ProjectCustom>().eq("company_id", company.getId()));
+        List<ProjectCustom> customList = projectCustomList.stream().filter(pl -> pl.getCustomType() != 1).collect(Collectors.toList());
         TimeType timeType = timeTypeMapper.selectById(user.getCompanyId());
         List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", company.getId()));
         List<String> headList = new ArrayList<String>();
@@ -5423,6 +5484,11 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             headList.add(MessageUtils.message("entry.proLevel"));
             headList.add(MessageUtils.message("entry.contract"));
         }
+        if(timeType.getProjectCustom()==1){
+            customList.forEach(cl->{
+                headList.add(cl.getCustomName());
+            });
+        }
         if(company.getId()==936){
 //            headList.add("合同编号");
 //            headList.add("质保开始时间");
@@ -5581,6 +5647,46 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 }
                 rowData.add(df.format((Double)projectVO.getContractAmount()));
             }
+            if(timeType.getProjectCustom()==1){
+                for (int i = 0; i < projectCustomList.size(); i++) {
+                    ProjectCustom projectCustom = projectCustomList.get(i);
+                    if(projectCustom.getCustomType()==1){
+                        continue;
+                    }
+                    switch (i){
+                        case 0:
+                            rowData.add(projectVO.getPlate1());
+                            break;
+                        case 1:
+                            rowData.add(projectVO.getPlate2());
+                            break;
+                        case 2:
+                            rowData.add(projectVO.getPlate3());
+                            break;
+                        case 3:
+                            rowData.add(projectVO.getPlate4());
+                            break;
+                        case 4:
+                            rowData.add(projectVO.getPlate5());
+                            break;
+                        case 5:
+                            rowData.add(projectVO.getPlate6());
+                            break;
+                        case 6:
+                            rowData.add(projectVO.getPlate7());
+                            break;
+                        case 7:
+                            rowData.add(projectVO.getPlate8());
+                            break;
+                        case 8:
+                            rowData.add(projectVO.getPlate9());
+                            break;
+                        case 9:
+                            rowData.add(projectVO.getPlate10());
+                            break;
+                    }
+                }
+            }
             if(company.getId()==936){
                 Optional<ProjectSeparate> first = projectSeparateList.stream().filter(ps -> ps.getId().equals(projectVO.getId())).findFirst();
                 if(first.isPresent()){

+ 19 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -663,7 +663,25 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     }
                 } else if (reportAuditType == 3) {
                     //获取日报对应已经设置好的审核人和抄送人
-                    r.setAuditorSetting(reportAuditorSettingMapper.selectById(r.getId()));
+                    ReportAuditorSetting reportAuditorSetting = reportAuditorSettingMapper.selectById(r.getId());
+                    r.setAuditorSetting(reportAuditorSetting);
+                    //手机端数据
+                    if (reportAuditorSetting.getAuditorFirst() != null) {
+                        User auditorItem = userMapper.selectOne(new QueryWrapper<User>().select("id, name").eq("id", reportAuditorSetting.getAuditorFirst()));
+                        r.setAuditorFirst(auditorItem);
+                    }
+                    if (reportAuditorSetting.getAuditorSec() != null) {
+                        User auditorItem = userMapper.selectOne(new QueryWrapper<User>().select("id, name").eq("id", reportAuditorSetting.getAuditorSec()));
+                        r.setAuditorSec(auditorItem);
+                    }
+                    if (reportAuditorSetting.getAuditorThird() != null) {
+                        User auditorItem = userMapper.selectOne(new QueryWrapper<User>().select("id, name").eq("id", reportAuditorSetting.getAuditorThird()));
+                        r.setAuditorThird(auditorItem);
+                    }
+                    if (reportAuditorSetting.getCcUserid() != null) {
+                        User auditorItem = userMapper.selectOne(new QueryWrapper<User>().select("id, name").eq("id", reportAuditorSetting.getCcUserid()));
+                        r.setCcUserid(auditorItem);
+                    }
                 }
 
             });

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

@@ -1039,6 +1039,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                     //httpRespMsg.setError("操作失败");
                     httpRespMsg.setError(MessageUtils.message("other.operationFail"));
                 }
+            }else{
+                httpRespMsg.setError("原密码错误");
             }
         } catch (NullPointerException e) {
             //httpRespMsg.setError("验证失败");

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

@@ -15,7 +15,7 @@ spring:
       location: C:/upload/
   datasource:
     driver-class-name: com.mysql.cj.jdbc.Driver
-    url: jdbc:mysql://47.101.180.183:3306/man_dev?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&useSSL=false
+    url: jdbc:mysql://47.101.180.183:3306/man_hour_manager?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&useSSL=false
     username: root
     password: HuoshiDB@2022
     hikari:
@@ -145,7 +145,7 @@ referer:
     - mldmobworktime.ttkuaiban.com
     - mldworktime.ttkuaiban.com
     - 47.101.180.183
-excludeUrls: /wxcorp/*,/wxcorp/*/*,/dingding/*,/feishu-info/*,/error,/testClient,/corpWXAuth,/corpWXScanningAuth,/corpInsideWXAuth,/wx-corp-info/*,/clean/*,/innerRoles/*,/report/getReportListByToken,/report/getProcessErrorData,/project/synchronizationProject
+excludeUrls: /wxcorp/*,/wxcorp/*/*,/dingding/*,/feishu-info/*,/error,/testClient,/corpWXAuth,/corpWXScanningAuth,/corpInsideWXAuth,/wx-corp-info/*,/clean/*,/innerRoles/*,/report/getReportListByToken,/report/getProcessErrorData,/project/synchronizationProject,/user/updateUserDeptHierarchy
 
 #企业微信相关参数
 suitId: ww4e237fd6abb635af

+ 3 - 0
fhKeeper/formulahousekeeper/timesheet/src/views/project/CostBaseline.vue

@@ -229,6 +229,9 @@
                 if (inpu.value.indexOf(".") < 0 && inpu.value != "") { //首位是0的话去掉
                     inpu.value = parseFloat(inpu.value);
                 }
+                if (inpu.value == '') {
+                    inpu.value = 0;
+                }
             },
             test(item){
                 // let list = [

+ 3 - 0
fhKeeper/formulahousekeeper/timesheet/src/views/quanx/quanx.vue

@@ -246,6 +246,9 @@ export default {
         res => {
             if (res.code == "ok") {
               console.log(res.data, '数据来源(990)')
+              for(var i in res.data) {
+                res.data[i].useState = true
+              }
               this.moduleList = res.data
               this.dialogVisible = true
             } else {

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

@@ -67,7 +67,7 @@
         <el-row :gutter="20" style="padding-top:10px;width:100%;margin:0 auto;padding-left:10px;padding-right:10px;">
         <el-col :span="6" >
         <!-- 上下午固定时长-->
-        <div class="panel" >
+        <div class="panel panelFixation" >
         <el-radio v-model="timeType.type" :label="0" style="width:100%">{{ $t('reportintheafternoon') }}
         <el-form  ref="form1" :model="timeType" :rules="rules" label-width="5rem" style="color:#333;">
         <el-form-item>
@@ -97,7 +97,7 @@
         </el-col>
         <!-- 选择小时数样式 -->
         <el-col :span="6">   
-        <div class="panel">
+        <div class="panel panelFixation">
         <el-radio v-model="timeType.type" :label="1">{{ $t('chooseyourownhours') }}
         <el-form  class="sample" style="color:#333;">
         <p style="color:#999;display:block;line-height:2rem">
@@ -117,7 +117,7 @@
         </el-col>
         <!--选择时间段样式 -->
         <el-col :span="6">  
-        <div  class="panel" >
+        <div  class="panel panelFixation" >
             <el-radio v-model="timeType.type" :label="2">{{ $t('owntimeframe') }}
             <el-form class="sample" style="color:#333;">
             <p style="color:#999;display:block;line-height:2rem">
@@ -155,7 +155,7 @@
 
         <!--选择按比例分配样式 -->
         <el-col :span="6">  
-        <div  class="panel" >
+        <div  class="panel panelFixation" >
             <el-radio v-model="timeType.type" :label="3">{{ $t('timeproportionally') }}
             <el-form class="sample" style="color:#333;">
             <p style="color:#999;display:block;line-height:2rem">
@@ -1535,4 +1535,7 @@
     display: flex;
     align-items: center;
 }
+.panelFixation {
+    height: 300px;
+}
 </style>

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

@@ -261,406 +261,6 @@
             <div slot="title" v-if="addForm.parentTid != null">
                 <el-page-header  @back="backToParentTask" :title="$t('parenttask')" :content="addForm.parentTname"></el-page-header>
             </div>
-            <!-- 未整合 -->
-            <div v-if="false">
-                <div style="height: 72vh;overflow: auto;">
-                    <el-form ref="form1" :model="addForm" :rules="taskRules" label-width="100px">
-                        <!--子任务需要选择任务列表 -->
-                        <el-form-item :label="$t('tasklist')" prop="stages" v-if="addForm.parentTid != null">
-                            <el-select v-model="addForm.stagesId" style="width:100%;" >
-                                <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 :label="$t('types')">
-                            <el-select v-model="addForm.taskType" style="width:100%;" :disabled="(this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement">
-                                <el-option v-for="item in taskTypeList" :key="item.id" :label="item.name" :value="item.id">
-                                    <i :class="item.icon" ></i>
-                                    <span>{{item.name}}</span>
-                                </el-option>
-                            </el-select>
-                        </el-form-item>
-                        <el-form-item :label="$t('taskdefinition')" prop="name">
-                            <el-input v-model="addForm.name" :maxlength="40" :disabled="(this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement" :placeholder="$t('enterthetaskcontent')" clearable></el-input>
-                        </el-form-item>
-                        
-                        <el-form-item :label="addForm.taskType == 1 ? $t('deadline') : $t('starttimes')" :prop="addForm.taskType == 1 ? 'endDate' : 'startDate'">
-                            <el-date-picker v-model="addForm.startDate" type="date" style="width:40%;" value-format="yyyy-MM-dd"  
-                            :placeholder="$t('pleaseselectadate')" :disabled="(this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement" v-if="addForm.taskType != 1"></el-date-picker>
-                            <span style="margin-left:30px;margin-right:10px;" v-if="addForm.taskType != 1">{{ $t('deadline') }}</span>
-                            <el-date-picker v-model="addForm.endDate" type="date" value-format="yyyy-MM-dd"  
-                            :placeholder="$t('pleaseselectadate')" :disabled="(this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement"></el-date-picker>
-                            </el-form-item>
-                        <div style="border: 1px solid #ddd;margin:5px 0;padding:5px 0;">
-                        <el-form-item :label="$t('zhi-hang-ren')+(index+1)" v-for="(executorItem, index) in addForm.executorListFront" :key="index">
-
-                            <el-select v-if="user.userNameNeedTranslate != '1'" v-model="executorItem.executorId" :disabled="(addForm.id != null && user.id != addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement" size="small" filterable clearable :placeholder="$t('pleaseselectanexecutor')" style="width:40%;" @change="$forceUpdate()">
-                                <el-option v-for="item in users" :key="item.id" :label="item.name" :value="item.id">
-                                    <span style="float: left">{{ item.name }}</span>
-                                    <span style="float: right; color: #8492a6; font-size: 13px;margin-left: 20px" v-if="item.jobNumber">{{ item.jobNumber }}</span>
-                                </el-option>
-                            </el-select>
-                            
-                            <selectCat :subject="users" :subjectId="executorItem.executorId" :filterable="true" :index="index" @selectCal="selectCal" :size="'mini'" v-if="user.userNameNeedTranslate == '1'"></selectCat>
-
-                            <span style="margin-left:30px;margin-right:10px;">{{ $t('plantime') }}</span>
-                            <el-input-number size="small" :disabled="(addForm.id != null && user.id != addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement" v-model="executorItem.planHours" style="width:30%;" :min="1" :max="100"  :placeholder="$t('pleaseentertheplannedworking')" ></el-input-number ><span style="margin-left:10px;">{{ $t('time.hour') }}</span>
-                            <!--移除执行人 -->
-                            <i class="el-icon-delete" v-if="index>0 && (addForm.id == null|| user.id == addForm.createrId || currentProject.inchargerId == user.id|| permissions.projectManagement)" style="margin-left:5px" @click="removeExecutorLine(index)"></i>
-                        </el-form-item>
-                        <el-link type="primary" v-if="(addForm.executorListFront == null || addForm.executorListFront.length<10)&& (addForm.id == null|| user.id == addForm.createrId || currentProject.inchargerId == user.id || permissions.projectManagement)" style="margin-left:35px;" @click="addExecutorLine">{{ $t('addinganexecutor') }}</el-link>
-                        </div>
-                        
-                        <el-form-item :label="$t('priority')">
-                            <el-select v-model="addForm.taskLevel" style="width:100%;" >
-                                <el-option v-for="item in importanceList" :key="item.id" :label="item.name" :value="item.id"></el-option>
-                            </el-select>
-                        </el-form-item>
-                        <!-- 富文本 -->
-                        <el-form-item :label="$t('detaileddescription')" style="height: 200px">
-                            <!-- <Editor id="tinymce" v-model="tinymceHtml" :init="editorInit"></Editor> -->
-                            <!-- <el-input type="textarea" v-model="addForm.taskDesc" :rows="3"></el-input> -->
-                            <!-- <quill-edito v-model="addForm.taskDesc"></quill-edito> -->
-                            <quill-editor style="height: 150px" ref="text" v-model="addForm.taskDesc" class="myQuillEditor" :options="editorOption" @blur="onEditorBlur($event)" @focus="onEditorFocus($event)"/>
-                        </el-form-item>
-                        <!-- 富文本 -->
-                        <div v-if="addForm.id != null">
-                            <el-divider ></el-divider>
-                            <!-- 任务进展 -->
-                            <p ><i class="iconfont firerock-icontree" style="color:#20A0ff;margin-left:10px;">{{ $t('taskprogress') }}</i>
-                                <span ref="addPro" style="display: block; float:right;"><el-link @click="addprogress">{{ $t('addtaskprogress') }}</el-link></span>
-                            </p>
-                            <!-- 任务进展展示 -->
-                            <div style="display: none;" ref="proBox" class="progress">
-                                <!-- <el-form :model="> -->
-                                <el-radio-group v-model="radio">
-                                    <el-radio :label="0" class="rala1">{{ $t('normals') }}</el-radio>
-                                    <el-radio :label="1" class="rala2">{{ $t('atrisk') }}</el-radio>
-                                    <el-radio :label="2" class="rala3">{{ $t('withinthetimelimit') }}</el-radio>
-                                </el-radio-group>
-
-                                <el-input
-                                type="textarea"
-                                border="0"
-                                :autosize="{ minRows: 2, maxRows: 6}"
-                                :placeholder="$t('detailedprogressdescription')"
-                                v-model="text2"
-                                style="margin:10px 0 0 0">
-                                </el-input>
-
-                                <h4 style="font-weight: normal;">{{ $t('whotoremindtocheck') +':'}}{{checkLists.length}}</h4>
-
-                                <i class="el-icon-circle-plus pron_i" style="font-size: 28px;color: #409EFF;" @click="addI(0)"></i>
-
-                                <div class="remind" ref="addRem" style="display: none">
-                                    <el-checkbox-group v-model="checkboxGrounp" v-for="item in users" :key="item.id">
-                                        <p>
-                                            <el-checkbox :label="item.name" @change="kkk(item)">
-                                                <span>
-                                                    <span v-if="user.userNameNeedTranslate != '1'">
-                                                        {{item.name}}
-                                                    </span>
-                                                    <span v-if="user.userNameNeedTranslate == '1'">
-                                                        <ww-open-data type='userName' :openid='item.name'></ww-open-data>
-                                                    </span>
-                                                </span>
-                                            </el-checkbox>
-                                        </p>
-                                    </el-checkbox-group>
-                                </div>
-                                <div class="ssp" @click="sss"></div>
-                                <!-- </el-form> -->
-                                <div class="pro_btn">
-                                    <el-button size="mini" @click="shutPro">{{ $t('btn.cancel') }}</el-button>
-                                    <el-button size="mini" type="primary" @click="addTaskProgress">{{ $t('fa-bu') }}</el-button>
-                                </div>
-
-                            </div>
-
-                            <div class="ddl" v-if="recentProgressInfo != null && recentProgressInfo.id != null">
-                                <div class="elCard" style="margin-bottom: 10px; height:" >
-                                    <i class="el-icon-success" style="color: #43d14f;" v-if="recentProgressInfo.status == 0"></i>
-                                    <i class="el-icon-success" style="color: #fd7624;" v-else-if="recentProgressInfo.status == 1"></i>
-                                    <i class="el-icon-success" style="color: #fd4d47;" v-else></i>
-                                    <span v-if="recentProgressInfo.status == 0">{{ $t('normals') }}</span>
-                                    <span v-else-if="recentProgressInfo.status == 1">{{ $t('normals') }}</span>
-                                    <span v-else>{{ $t('withinthetimelimit') }}</span>
-
-                                    <el-dropdown trigger="click" style="float:right;cursor:pointer; float: right;">
-                                            <i class="el-icon-more" ></i>
-                                            <el-dropdown-menu slot="dropdown">
-
-                                                <el-dropdown-item divided>
-                                                    <span @click="deleteTaskProgress(recentProgressInfo.id)"><i class="el-icon-delete"></i>{{ $t('deleteList ') }}</span></el-dropdown-item>
-                                            </el-dropdown-menu>
-                                    </el-dropdown>
-                                    <div class="elCard_qu">
-                                        <span>
-                                            <span v-if="user.userNameNeedTranslate != '1'">
-                                                {{recentProgressInfo.creatorName}}
-                                            </span>
-                                            <span v-if="user.userNameNeedTranslate == '1'">
-                                                <ww-open-data type='userName' :openid='recentProgressInfo.creatorName'></ww-open-data>
-                                            </span>
-                                        </span>
-                                        {{ $t('geng-xin-yu') }}{{recentProgressInfo.indate | relativeTime}}
-                                    </div>
-                                    <p style="padding-left: 20px;">{{recentProgressInfo.content}}</p>
-                                    <div class="examine"><el-button type="text" @click="innerVisibless = true" style="color: #8F87A3;">{{ $t('viewingHistory') }}</el-button></div>
-                                </div>
-                            </div>
-
-                            <!-- 任务列表没有数据的时候展示 -->
-                            <div class="nones" v-if="ProgressList.length <= 0">
-                                {{ $t('nodata') }} 
-                            </div>
-
-                            <!-- 任务进展完整状态 -->
-                            <el-dialog :title="$t('other.prompts')" :visible.sync="innerVisibless" append-to-body width="500px">
-                            <div class="integrity">
-                                <h3 style="font-weight: normal;display: inline-block;margin: 0 0 20px 0;">{{ $t('taskprogress') }}:{{ProgressList.length}}</h3>
-                                <!-- <span class="write"><i class="el-icon-circle-plus"></i>填写进展</span> -->
-                                <el-divider></el-divider>
-
-                                <!--  -->
-                                    <div class="block" style="height: 200px;">
-                                        <el-timeline style="padding:20px 0 0 0;">
-                                            <el-timeline-item
-                                            v-for="(activity, index) in ProgressList"
-                                            :key="index">
-                                            <div class="tb">
-                                                <span v-if="activity.status == 0" style="color: #43D14F" class="icon"></span>
-                                                <span v-if="activity.status == 1" style="color: #FD7624" class="icon"></span>
-                                                <span v-if="activity.status == 2" style="color: red" class="icon"></span>
-                                                <div>
-                                                    <span v-if="activity.status == 0" style="color: #43D14F">{{ $t('normals') }}</span>
-                                                    <span v-if="activity.status == 1" style="color: #FD7624">{{ $t('atrisk') }}</span>
-                                                    <span v-if="activity.status == 2" style="color: red">{{ $t('withinthetimelimit') }}</span>
-                                                    <span style="display: inline-block; float: right; color: #8C8C8C">{{activity.indate | relativeTime}}</span>
-                                                </div>
-                                                <p style="color: #8C8C8C">{{activity.content}}</p>
-                                                
-                                            </div>
-                                            </el-timeline-item>
-                                        </el-timeline>
-                                    </div>
-                                <!--  -->
-                            </div>
-                            <span slot="footer" class="dialog-footer">
-                                <el-button type="primary" @click="innerVisibless = false">{{ $t('Shutdown') }}</el-button>
-                            </span>
-                            </el-dialog>
-                            </div>
-                    </el-form>
-                </div>
-                <div slot="footer" class="dialog-footer">
-                    <el-button v-if="user.id == addForm.createrId || currentProject.inchargerId == user.id || currentProject.creatorId == user.id || permissions.projectManagement" @click.native="deleteTask" style="float:left;">{{ $t('btn.delete') }}</el-button>
-                    <el-button @click.native="addFormVisible = false">{{ $t('btn.cancel') }}</el-button>
-                    <el-button type="primary" @click="submitInsert" :loading="addLoading">{{ $t('btn.submit') }}</el-button>
-                </div>
-                <div slot="title" v-if="addForm.parentTid != null" >
-                    <!-- <el-link @click="backToParentTask"><i class="el-icon-arrow-left single_line">返回父级任务</i> | {{addForm.parentTname}}</el-link> -->
-                    <el-page-header  @back="backToParentTask" :title="$t('parenttask')" :content="addForm.parentTname"></el-page-header>
-                </div>
-                <!-- 评论 -->
-                <div class="remark" v-show="addForm.id != null">
-                    <span class="zh">
-                        <!-- <span  v-for="(pl, i) in critic" :key="i"> -->
-                            <!-- <div class="player" v-if="pl"> -->
-                            <div class="player">
-                                <p @click="chan">{{ $t('participantin') }}</p>
-                                <span  v-for="(pl, i) in critic" :key="i">
-                                <div class="bj" style="width: 14%;overflow: hidden;">
-                                    <span style="background: #778899" v-if="user.userNameNeedTranslate != '1'">{{pl.length > 2 ? pl.substring(pl.length - 2, pl.length) : pl}}</span>
-                                    <span style="background: #778899" v-if="user.userNameNeedTranslate == '1'"><ww-open-data type='userName' :openid='pl'></ww-open-data></span>
-                                </div>
-                                </span>
-                            </div>
-                        <!-- </span> -->
-                        <div class="subject">
-                            <div class="sub-all">
-                                <div :class="dynamicTab ? 'subOn' : ''" @click="dynamicTab = true">{{ $t('alldynamic') }}</div>
-                                <div :class="dynamicTab ? '' : 'subOn'" @click="dynamicTab = false">{{ $t('xiang-guan-ri-bao') }}</div>
-                            </div>
-                            <div class="sub-details" ref="main" v-if="dynamicTab">
-                                <ul class="infinite-list" v-infinite-scroll="load" ref="contRoll">
-                                    <div style="width: 100%" v-if="commentList.length <= 0">
-                                        <img src="../../assets/image/xiao.png" alt="">
-                                    </div>
-                                    <li v-for="i in count" class="infinite-list-item counli" :key="i">
-                                        <p><i class="el-icon-s-fold"></i> <em>{{ $t('managerQucompletedthedependencytask') }}</em><span>{{ $t('onApril20') }}</span></p>
-                                    </li>
-                                    <li class="carts" v-for="item in commentList" :key="item.id">
-                                        <!-- <el-image style="width: 30px; height: 30px" :src="url" :fit="fit"></el-image> -->
-                                        <!-- <i :style="'background' + item.userColor"> -->
-                                        <i :style="'background' + item.userColor">
-                                            <i v-if="user.userNameNeedTranslate != '1'">
-                                                {{item.userName.length > 2 ? item.userName.substring(item.userName.length - 2, item.userName.length) : item.userName}}
-                                            </i>
-                                            <i v-if="user.userNameNeedTranslate == '1'">
-                                                <ww-open-data type='userName' :openid='item.userName'></ww-open-data>
-                                            </i>
-                                        </i>
-                                        <div>
-                                            <!-- <p>{{item.userName}}</p> -->
-                                            <p v-if="user.userNameNeedTranslate != '1'">{{item.userName}}</p>
-                                            <p v-if="user.userNameNeedTranslate == '1'"><ww-open-data type='userName' :openid='item.userName'></ww-open-data></p>
-                                            <em>
-                                                <!-- {{item.content}} -->
-                                                <p style="display: inline-block;padding: 0;margin: 0;" v-if="user.userNameNeedTranslate == 1">
-                                                    {{item.content.msg1}}
-                                                    <ww-open-data type='userName' :openid='item.content.msg2'></ww-open-data>
-                                                    {{item.content.msg3}}
-                                                </p>
-                                                <p style="display: inline-block;padding: 0;margin: 0;" v-if="user.userNameNeedTranslate != 1">{{item.content}}</p>
-                                            </em>
-                                        </div>
-                                        <span>{{item.createTime | relativeTime}}</span>
-                                    </li>
-                                </ul>
-                            </div>
-
-                            <div class="Daily" v-if="!dynamicTab">
-                                <div class="one_daily_body DailyBody">
-                                    <el-card shadow="never" v-for="(item2,index2) in dailyList" :key="index2" style="margin-bottom: 20px;">
-                                        <p>
-                                            {{ $t('tian-bao-ren') }}: <span v-if="user.userNameNeedTranslate != 1">{{item2.userName}}</span>
-                                            <span v-if="user.userNameNeedTranslate == 1">
-                                                <ww-open-data type='userName' :openid='item2.userName'></ww-open-data>
-                                            </span>
-                                            <span style="float: right;">{{item2.createDate}}</span>
-                                        </p>
-                                        <p>{{ $t('other.approvalStatus') }}:
-                                            <span v-if="user.company.packageEngineering == 0">
-                                                <span style="margin-left:15px;color:#DAA520;"  v-if="item2.state == 0">
-                                                    <span v-if="item2.isDeptAudit==0">
-                                                        <span v-if="item2.projectAuditState==0">
-                                                            <!-- 待项目审核人 --> {{$t('other.waitForTheProjectReviewer')}}
-                                                            <span v-if="item2.projectAuditorName != null">(
-                                                                <span v-if="user.userNameNeedTranslate == '1'">
-                                                                    <ww-open-data type='userName' :openid='item2.projectAuditorName'></ww-open-data>
-                                                                </span>
-                                                                <span v-if="user.userNameNeedTranslate != '1'">{{item2.projectAuditorName}}</span>
-                                                                )</span> 
-                                                            <!-- 审核 --> {{$t('other.audit')}}
-                                                        </span>
-                                                        <span style="color:#32CD32;" v-else-if="item2.projectAuditState==1">
-                                                            <!-- 项目审核人 --> {{$t('other.projectAuditor')}}
-                                                            <span v-if="item2.projectAuditorName != null">(
-                                                                <!-- {{item2.projectAuditorName}} -->
-                                                                <span v-if="user.userNameNeedTranslate == '1'">
-                                                                    <ww-open-data type='userName' :openid='item2.projectAuditorName'></ww-open-data>
-                                                                </span>
-                                                                <span v-if="user.userNameNeedTranslate != '1'">{{item2.projectAuditorName}}</span>
-                                                                )</span>
-                                                            <!-- 审核通过 --> {{$t('state.approved')}}
-                                                        </span>
-                                                    </span>
-                                                    <span v-else-if="item2.isDeptAudit==1">
-                                                        ({{$t('other.await')}}
-                                                        <span v-if="user.userNameNeedTranslate == '1'">
-                                                            <ww-open-data type='departmentName' :openid='item2.auditDeptName'></ww-open-data>
-                                                        </span>
-                                                        <span v-if="user.userNameNeedTranslate != '1'">{{item2.auditDeptName}}</span>
-                                                        {{$t('other.audit')}})
-                                                    </span>
-                                                    </span> 
-                                                <span style="margin-left:15px;color:#DAA520;" v-else-if="item2.state == -1">{{$t('other.importWaitingForReview')}}</span>
-                                                <span style="margin-left:15px;color:#32CD32;" v-else-if="item2.state == 1">{{$t('state.alreadyPassed')}}
-                                                    <span style="color:#c7e944" v-if="item2.reportAutoApprove == 1">{{$t('other.automaticReview')}}</span>
-                                                </span>
-                                                
-                                                <span style="margin-left:15px;color:#FF0000;" v-else-if="item2.state == 2">{{$t('state.rejected')}} {{$t('other.reason')}}:{{item2.rejectReason}}</span>
-                                                <span style="margin-left:15px;color:#FF0000;" v-else-if="item2.state == 3">{{$t('state.waitingsubmit')}}</span>
-                                            </span>
-                                            <span v-if="user.company.packageEngineering == 1">
-                                                <span style="margin-left:15px;color:#DAA520;" v-if="item2.state == -1">{{$t('other.importWaitingForReview')}}</span>
-                                                <span style="margin-left:15px;color:#DAA520;" v-if="item2.state == 0 && item2.departmentAuditState == -1">{{$t('other.waitingForProfessionalReview')}}</span>
-                                                <span style="margin-left:15px;color:#DAA520;" v-if="item2.state == 0 && item2.departmentAuditState == 0">{{$t('other.waitingForDepartmentReview')}}</span>
-                                                <span style="margin-left:15px;color:#DAA520;" v-if="item2.state == 0 && item2.departmentAuditState == 1">{{$t('other.waitForTheProjectReviewer')}}<span v-if="item2.projectAuditorName != null">
-                                                    (
-                                                        <span v-if="user.userNameNeedTranslate != 1">
-                                                            {{item2.projectAuditorName}}
-                                                        </span>
-                                                        <span v-if="user.userNameNeedTranslate == 1">
-                                                            <ww-open-data type='userName' :openid='item2.projectAuditorName'></ww-open-data>
-                                                        </span>
-                                                    )
-                                                </span>{{$t('other.audit')}}</span>
-                                                <span style="margin-left:15px;color:#32CD32;" v-else-if="item2.state == 1">{{$t('state.alreadyPassed')}}</span>
-                                                <span style="margin-left:15px;color:#FF0000;" v-else-if="item2.state == 2">{{$t('state.rejected')}} {{$t('other.reason')}}:{{item2.rejectReason}}</span>
-                                                <span style="margin-left:15px;color:#FF0000;" v-else-if="item2.state == 3">{{$t('state.waitingsubmit')}}</span>
-                                            </span>
-                                        </p>
-                                        <p v-if="user.timeType.customDegreeActive==1 && item2.degree_id != null && item2.degree_id != -1">{{user.timeType.customDegreeName}}:{{item2.degreeName}}</p>
-                                        <p v-if="user.timeType.customDataActive==1">{{user.timeType.customDataName}}:{{item2.customData}}</p>
-                                        <!-- 自定义日报文本 -->
-                                        <p v-if="user.timeType.customTextActive==1">{{user.timeType.customTextName}}:{{item2.customText}}</p>
-                                        <p v-if="user.company.packageEngineering == 1">
-                                            {{$t('other.professionalProgress')}}:
-                                            <span style="margin-right:10px;" v-for="progressItem in item2.professionProgress" :key="progressItem.id">{{progressItem.professionName}}({{progressItem.progress}}%) 
-                                                <el-tooltip v-if="progressItem.auditState == 0"  :content="$t('state.WaitingAudit')" effect="light" placement="top">
-                                                <i class="iconfont firerock-icondaibandengdaishenhe"></i>
-                                                </el-tooltip>
-                                                <el-tooltip v-if="progressItem.auditState == 1" :content="$t('state.alreadyPassed')" effect="light" placement="top">
-                                                <i  class="iconfont firerock-iconshenhetongguo"></i>
-                                                </el-tooltip>
-                                                <el-tooltip v-if="progressItem.auditState == 2" :content="$t('state.notThrough')" effect="light" placement="top">
-                                                <i  class="iconfont firerock-iconshenhebohui"></i>
-                                                </el-tooltip>
-                                                </span>
-                                        </p>
-                                        <div v-if="item2.multiWorktime==0">
-                                        <p style="display: inline-block;">{{$t('time.duration')}}:
-                                            <span v-if="item2.reportTimeType == 0" style="margin-right:10px;">{{typeList[item2.timeType]}}</span>
-                                            <span v-if="item2.reportTimeType == 2" style="margin-right:10px;">{{item2.startTime+'-'+item2.endTime}}</span>
-                                        {{item2.time.toFixed(1)}}h  
-                                        <el-tag type="danger" size="mini" style="margin-left: 65px" v-if="item2.isOvertime === 1">{{$t('other.WorkOvertime')}}<span v-if="item2.overtimeHours">{{item2.overtimeHours.toFixed(1)}}h</span></el-tag>
-                                        </p>
-                                        <p>{{$t('other.matters')}}:<span v-html="item2.content"></span></p>
-                                        </div>
-                                        <div v-if="item2.multiWorktime==1" >
-                                            <p>{{$t('other.projectDuration')}}:{{item2.time.toFixed(1)}}h  <el-tag type="danger" size="mini" style="margin-left: 65px" v-if="item2.isOvertime === 1">{{ $t('other.WorkOvertime') }}<span v-if="item2.overtimeHours">{{item2.overtimeHours.toFixed(1)}}h</span></el-tag></p>
-                                            <div v-for="(timeItem, tIndex) in item2.worktimeList" :key="tIndex"
-                                                style="border: 0.5px #ddd solid;margin-bottom:5px;padding:5px;">
-                                                <p style="display: inline-block;">{{$t('time.duration')}}:
-                                                    <span v-if="item2.reportTimeType == 2" style="margin-right:10px;">{{timeItem.startTime+'-'+timeItem.endTime}}</span>
-                                                {{timeItem.time.toFixed(1)}}h  
-                                                </p>
-                                                <p>{{$t('other.matters')}}:<span v-html="timeItem.content"></span></p>
-                                            </div>
-                                        </div>
-                                        <p v-if="item2.state == 1 && user.timeType.needEvaluate == 1">{{$t('other.evaluation')}}:<span v-html="item2.evaluate"></span></p>
-                                        
-                                        <!--照片的显示 -->
-                                        <p v-if="item2.pics != null && item2.pics.length > 0"> 
-                                            <el-image v-for="(pic, index) in item2.pics" :key="index"
-                                                style="width: 100px; height: 100px; margin-right:10px;"
-                                                :src="pic" 
-                                                :preview-src-list="item2.pics">
-                                            </el-image>
-                                        </p>
-                                    </el-card>
-                                </div>
-                            </div>
-                        </div>
-                        <div class="issue" v-if="dynamicTab">
-                            <!-- <el-input type="textarea" class="textareays" label-width="100%" label-height="140px"></el-input> -->
-                            <div class="issue_fixation">
-                                <div class="inputDeep"><el-input
-                                type="textarea"
-                                :placeholder="$t('pleaseentercontent')"
-                                :autosize="{ minRows: 6, maxRows: 6}"
-                                v-model="textarea2"
-                                class="inputDeeps"
-                                >
-                                </el-input></div>
-                                <el-button class="issue-button" type="primary" @click="release()">{{ $t('fa-bu') }}</el-button>
-                            </div>
-                        </div>
-                    </span>
-                </div>
-                <!-- /评论 -->
-            </div>
         </el-dialog>
 
         <!-- 发起会议 -->
@@ -900,7 +500,7 @@ import { error } from 'dingtalk-jsapi';
                     cause: '',
                     responsible: []
                 },
-
+                isDeleting: true,
                 showOrNot: false,
                 typeField: null,
                 searchField: '0',
@@ -1592,7 +1192,6 @@ import { error } from 'dingtalk-jsapi';
             },
             // 点击任务事件
             editTask(task) {
-                console.log(task, 12345, this.addForm)
                 this.addFormVisible = true;
                 // this.addLoading = false;
                 this.title = this.$t('editingtasks');
@@ -2108,8 +1707,10 @@ import { error } from 'dingtalk-jsapi';
                 this.$confirm(warning, this.$t('other.prompts'), {
                     //type: 'warning'
                 }).then(() => {
+                    this.isDeleting = true;
                     this.http.post('/task/delete',{id: this.addForm.id},
                     res => {
+                        this.isDeleting = false;
                         if (res.code == "ok") {
                             this.addFormVisible = false;
                             // this.getStageList();
@@ -2122,6 +1723,7 @@ import { error } from 'dingtalk-jsapi';
                         }
                     },
                     error => {
+                        this.isDeleting = false;
                         this.$message({
                             message: error,
                             type: "error"

+ 14 - 13
fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/index.vue

@@ -636,15 +636,16 @@ import timetoolVue from '../timetool/timetool.vue';
                 }).catch(err => {this.$toast.clear();this.cardRefLoading = false;})
             },
             auditorClick(domainIndex,auditorIndex){
-                this.auditor.index = domainIndex
-                this.auditor.auditorIndex = auditorIndex
-                this.auditor.searchList.forEach(u=>{
-                    if(u.id == this.form.domains[domainIndex][auditorIndex].id){
-                        this.auditor.item = u
-                    }
-                })
-                this.auditorShow = true
-                
+                if (this.canEdit) {
+                    this.auditor.index = domainIndex
+                    this.auditor.auditorIndex = auditorIndex
+                    this.auditor.searchList.forEach(u=>{
+                        if(u.id == this.form.domains[domainIndex][auditorIndex].id){
+                            this.auditor.item = u
+                        }
+                    })
+                    this.auditorShow = true
+                }
             },
             onSearch(val){
                 console.log(val);
@@ -1377,10 +1378,10 @@ import timetoolVue from '../timetool/timetool.vue';
                                     basecostName: basecostName,
                                     canEdit: list[i].state >= 2 ? true : false,
 
-                                    auditorFirst: list[i].auditorSetting && list[i].auditorSetting.auditorFirst ? list[i].auditorSetting.auditorFirst : {name:'',id:''},
-                                    auditorSec: list[i].auditorSetting && list[i].auditorSetting.auditorSec ? list[i].auditorSetting.auditorSec : {name:'',id:''},
-                                    auditorThird: list[i].auditorSetting && list[i].auditorSetting.auditorThird ? list[i].auditorSetting.auditorThird : {name:'',id:''},
-                                    ccUserid: list[i].auditorSetting && list[i].auditorSetting.ccUserid ? list[i].auditorSetting.ccUserid : {name:'',id:''},
+                                    auditorFirst: list[i].auditorFirst ? list[i].auditorFirst : {name:'',id:''},
+                                    auditorSec: list[i].auditorSec ? list[i].auditorSec : {name:'',id:''},
+                                    auditorThird: list[i].auditorThird ? list[i].auditorThird : {name:'',id:''},
+                                    ccUserid: list[i].ccUserid ? list[i].ccUserid : {name:'',id:''},
                                 })
                                 if (list[i].state >= 2) {
                                     this.canEdit = true;

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

@@ -496,7 +496,7 @@
                 this.auditor.index = domainIndex
                 this.auditor.auditorIndex = auditorIndex
                 this.auditor.searchList.forEach(u=>{
-                    if(u.id == this.form.domains[domainIndex][auditorIndex].id){
+                    if(u.id == this.currentForm.domains[domainIndex][auditorIndex].id){
                         this.auditor.item = u
                     }
                 })
@@ -510,7 +510,7 @@
                 }})
             },
             searchAuditor(){
-                this.currentForm.domains[this.auditor.index][auditorIndex] = this.auditor.item
+                this.currentForm.domains[this.auditor.index][this.auditor.auditorIndex] = this.auditor.item
                 this.auditorShow = false
                 console.log('searchAuditor');
             },