浏览代码

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

cs 2 年之前
父节点
当前提交
6bfc3055fd
共有 15 个文件被更改,包括 668 次插入76 次删除
  1. 20 18
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectDocumentController.java
  2. 63 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java
  3. 3 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ReportMapper.java
  4. 31 16
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
  5. 49 10
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  6. 8 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml
  7. 2 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TimeTypeMapper.xml
  8. 1 7
      fhKeeper/formulahousekeeper/octopus/src/views/market/list.vue
  9. 8 2
      fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/entity/VcompanyCustomerContact.java
  10. 2 1
      fhKeeper/formulahousekeeper/ops-platform/src/main/resources/mapper/VcompanyCustomerContactMapper.xml
  11. 二进制
      fhKeeper/formulahousekeeper/timesheet/src/assets/image/aacbc.png
  12. 1 1
      fhKeeper/formulahousekeeper/timesheet/src/views/Home.vue
  13. 382 13
      fhKeeper/formulahousekeeper/timesheet/src/views/project/fileCenter.vue
  14. 93 4
      fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue
  15. 5 1
      fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/index.vue

+ 20 - 18
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectDocumentController.java

@@ -349,10 +349,9 @@ public class ProjectDocumentController {
 
 
     @RequestMapping("/buildWithTemplate")
-    public HttpRespMsg buildWithTemplate(Integer templateId,Integer projectId){
+    public HttpRespMsg buildWithTemplate(Integer templateId,Integer projectId,Integer parentFid){
         User user = userMapper.selectById(request.getHeader("token"));
         List<ProDocumentTemDetail> proDocumentTemDetailList = proDocumentTemDetailMapper.selectList(new QueryWrapper<ProDocumentTemDetail>().eq("template_id", templateId));
-        List<ProDocumentTemDetail> collect = proDocumentTemDetailList.stream().filter(pl -> pl.getParentId() == null).collect(Collectors.toList());
         List<ProDocumentTemDetail> details = proDocumentTemDetailList.stream().filter(p -> p.getParentId() == null).collect(Collectors.toList());
         List<ProjectDocument> list=new ArrayList<>();
         details.forEach(dl->{
@@ -362,6 +361,7 @@ public class ProjectDocumentController {
             projectDocument.setIsFolder(1);
             projectDocument.setIndate(LocalDateTime.now());
             projectDocument.setProjectId(projectId);
+            projectDocument.setFolderId(parentFid);
             projectDocument.setIsDeleted(0);
             projectDocument.setCreatorId(user.getId());
             projectDocument.setCreatorName(user.getName());
@@ -374,22 +374,24 @@ public class ProjectDocumentController {
     }
     public void getParentFolders(List<ProjectDocument> projectDocumentList,List<ProDocumentTemDetail> proDocumentTemDetailList,Integer projectId,User user){
         List<ProjectDocument> list=new ArrayList<>();
-        for (ProjectDocument projectDocument : projectDocumentList) {
-            List<ProDocumentTemDetail> collect = proDocumentTemDetailList.stream().filter(pd -> pd.getParentId() != null && pd.getParentId().equals(projectDocument.getProDocumentTemDetailId())).collect(Collectors.toList());
-            collect.forEach(c->{
-                ProjectDocument item=new ProjectDocument();
-                item.setDocumentName(c.getName());
-                item.setLabel(c.getName());
-                item.setIsFolder(1);
-                item.setIndate(LocalDateTime.now());
-                item.setProjectId(projectId);
-                item.setIsDeleted(0);
-                item.setCreatorId(user.getId());
-                item.setCreatorName(user.getName());
-                item.setProDocumentTemDetailId(c.getId());
-                item.setFolderId(projectDocument.getProDocumentTemDetailId());
-                list.add(item);
-            });
+        if(projectDocumentList.size()>0){
+            for (ProjectDocument projectDocument : projectDocumentList) {
+                List<ProDocumentTemDetail> collect = proDocumentTemDetailList.stream().filter(pd -> pd.getParentId() != null && pd.getParentId().equals(projectDocument.getProDocumentTemDetailId())).collect(Collectors.toList());
+                collect.forEach(c->{
+                    ProjectDocument item=new ProjectDocument();
+                    item.setDocumentName(c.getName());
+                    item.setLabel(c.getName());
+                    item.setIsFolder(1);
+                    item.setIndate(LocalDateTime.now());
+                    item.setProjectId(projectId);
+                    item.setIsDeleted(0);
+                    item.setCreatorId(user.getId());
+                    item.setCreatorName(user.getName());
+                    item.setProDocumentTemDetailId(c.getId());
+                    item.setFolderId(projectDocument.getId());
+                    list.add(item);
+                });
+            }
             projectDocumentService.saveBatch(list);
             getParentFolders(list,proDocumentTemDetailList,projectId,user);
         }

+ 63 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java

@@ -907,6 +907,69 @@ public class ReportController {
             }
         }
 
+          if(company.getId()==862){
+            Collection<Integer> projectIds = reportList.stream().map(Report::getProjectId).distinct().collect(Collectors.toList());
+            List<Project> targetProjectList = projectList.stream().filter(pl -> projectIds.contains(pl.getId())).collect(Collectors.toList());
+            String creatorId = reportList.get(0).getCreatorId();
+            User reportUser = userMapper.selectById(creatorId);
+            DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
+            LocalDateTime time = LocalDateTime.now();
+            String format = time.format(df);
+            String tokenOfYiWei = getTokenOfYiWei();
+            String url = "http://183.194.0.98:3202/api/web-server/controlCenter/billApply";
+            HttpHeaders headers = new HttpHeaders();
+            headers.setContentType(MediaType.APPLICATION_JSON);
+            headers.add("token",tokenOfYiWei);
+            headers.add("Accept-Language","zh-CN");
+            JSONObject body=new JSONObject();
+            body.put("dataSource","工时管家");
+            body.put("type","EXPENSE");
+            body.put("applicant",reportUser.getName());
+            body.put("applyTime",format);
+            body.put("billNo","GS"+ reportUser.getId()+reportList.get(0).getCreateDate());
+            JSONArray expenseDetails=new JSONArray();
+            for (Report report : reportList) {
+                Optional<Project> first = targetProjectList.stream().filter(tl -> tl.getId().equals(report.getProjectId())).findFirst();
+                if(first.isPresent()){
+                    JSONObject expenseDetail =new JSONObject();
+                    expenseDetail.put("company","FONE");
+                    expenseDetail.put("department","DEFAULT");
+                    expenseDetail.put("project",first.get().getProjectCode());
+                    expenseDetail.put("expenseItem","DEFAULT");
+                    expenseDetail.put("amount",report.getWorkingTime());
+                    expenseDetails.add(expenseDetail);
+                }
+
+            }
+            body.put("expenseDetails",expenseDetails);
+            HttpEntity<String> requestEntity = new HttpEntity<String>(body.toJSONString(), headers);
+            ResponseEntity<String> responseEntity = this.restTemplate.exchange(url,
+                    HttpMethod.POST, requestEntity, String.class);
+            if (responseEntity.getStatusCode() == HttpStatus.OK) {
+                String resp = responseEntity.getBody();
+                JSONObject json = JSONObject.parseObject(resp);
+                if(json.getIntValue("status")==0){
+                    JSONArray data = json.getJSONArray("data");
+                    JSONObject jsonObject = data.getJSONObject(0);
+                    Integer totalBudgetAmount = jsonObject.getInteger("totalBudgetAmount");
+                    Integer occurredBudgetAmount = jsonObject.getInteger("occurredBudgetAmount");
+                    BigDecimal divide = (new BigDecimal(occurredBudgetAmount).add(new BigDecimal(jsonObject.getInteger("amount")))).divide(new BigDecimal(totalBudgetAmount), 3, RoundingMode.HALF_UP);
+                    if(divide.doubleValue()>0.85){
+                        HttpRespMsg httpRespMsg=new HttpRespMsg();
+                        httpRespMsg.setMsg("当前预算占用已到85%");
+                    }
+                } else if(json.getIntValue("status")==14001){
+                    HttpRespMsg httpRespMsg=new HttpRespMsg();
+                    httpRespMsg.setError("当前项目预算不足,无法填报");
+                    return httpRespMsg;
+                }else if(json.getIntValue("status")==14002){
+                    HttpRespMsg httpRespMsg=new HttpRespMsg();
+                    httpRespMsg.setError("未找到预算控制单元:"+json.getString("message"));
+                    return httpRespMsg;
+                }
+            }
+        }
+
         //如果锁定工作时长上限的话,需要校验每日的合计工作时长
         if (comTimeType.getLockWorktime() == 1) {
             for (Report report : reportList) {

+ 3 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ReportMapper.java

@@ -121,7 +121,9 @@ public interface ReportMapper extends BaseMapper<Report> {
 
     double getMyOvertime(String userId);
 
-    List<Map<String, Object>> getWaitingApproveCnt(Integer companyId);
+    List<Map<String, Object>> getProWaitingApproveCnt(Integer companyId);
+
+    List<Map<String, Object>> getDeptWaitingApproveCnt(Integer companyId);
 
     List<Map<String, Object>> getProjectCost(Integer companyId, List<Integer> projectIds);
 

+ 31 - 16
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -7349,15 +7349,28 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         List<Integer> array = JSONArray.parseArray(projectIdArray, Integer.class);
         Integer integer = array.get(0);
         //校验项目归属
+        StringBuilder sb=new StringBuilder("批量删除项目:");
         Integer companyId = projectMapper.selectById(integer).getCompanyId();
+        List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().in("id", array));
         if (companyId.intValue() != user.getCompanyId().intValue() || !user.getRoleName().equals("超级管理员")) {
             httpRespMsg.setError(MessageUtils.message("access.operationError"));
         } else {
             for (Integer id : array) {
                 System.out.println("删除项目id=="+id);
                 deleteProData(id);
+                Optional<Project> first = projectList.stream().filter(pl -> pl.getId().equals(id)).findFirst();
+                if(first.isPresent()){
+                    sb.append(first.get().getProjectName()+";");
+                }
             }
         }
+        OperationRecord operationRecord=new OperationRecord();
+        operationRecord.setCompanyId(companyId);
+        operationRecord.setOperatorName(user.getName());
+        operationRecord.setModuleName("项目管理");
+        operationRecord.setContent(sb.toString());
+        operationRecord.setOperationTime(LocalDateTime.now());
+        operationRecordService.save(operationRecord);
         return httpRespMsg;
     }
 
@@ -10119,22 +10132,24 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
 
     public void getParentFolders(List<ProjectDocument> projectDocumentList,List<ProDocumentTemDetail> proDocumentTemDetailList,Project project,User user){
         List<ProjectDocument> list=new ArrayList<>();
-        for (ProjectDocument projectDocument : projectDocumentList) {
-            List<ProDocumentTemDetail> collect = proDocumentTemDetailList.stream().filter(pd -> pd.getParentId() != null && pd.getParentId().equals(projectDocument.getProDocumentTemDetailId())).collect(Collectors.toList());
-            collect.forEach(c->{
-                ProjectDocument item=new ProjectDocument();
-                item.setDocumentName(c.getName());
-                item.setLabel(c.getName());
-                item.setIsFolder(1);
-                item.setIndate(LocalDateTime.now());
-                item.setProjectId(project.getId());
-                item.setIsDeleted(0);
-                item.setCreatorId(project.getCreatorId());
-                item.setCreatorName(user.getName());
-                item.setProDocumentTemDetailId(c.getId());
-                item.setFolderId(projectDocument.getProDocumentTemDetailId());
-                list.add(item);
-            });
+        if(projectDocumentList.size()>0){
+            for (ProjectDocument projectDocument : projectDocumentList) {
+                List<ProDocumentTemDetail> collect = proDocumentTemDetailList.stream().filter(pd -> pd.getParentId() != null && pd.getParentId().equals(projectDocument.getProDocumentTemDetailId())).collect(Collectors.toList());
+                collect.forEach(c->{
+                    ProjectDocument item=new ProjectDocument();
+                    item.setDocumentName(c.getName());
+                    item.setLabel(c.getName());
+                    item.setIsFolder(1);
+                    item.setIndate(LocalDateTime.now());
+                    item.setProjectId(project.getId());
+                    item.setIsDeleted(0);
+                    item.setCreatorId(project.getCreatorId());
+                    item.setCreatorName(user.getName());
+                    item.setProDocumentTemDetailId(c.getId());
+                    item.setFolderId(projectDocument.getId());
+                    list.add(item);
+                });
+            }
             projectDocumentService.saveBatch(list);
             getParentFolders(list,proDocumentTemDetailList,project,user);
         }

+ 49 - 10
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -1117,6 +1117,25 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             //删除日报的日志
             reportLogMapper.delete(new QueryWrapper<ReportLog>().eq("creator_id", userId).eq("create_date", date));
         }
+        if(company.getId()==862){
+            String url = "http://183.194.0.98:3202/api/web-server/controlCenter/billRejected";
+            HttpHeaders headers = new HttpHeaders();
+            headers.setContentType(MediaType.APPLICATION_JSON);
+            headers.add("token",getTokenOfYiWei());
+            JSONObject body=new JSONObject();
+            body.put("type","EXPENSE");
+            body.put("billNo","GS"+reportList.get(0).getCreatorId()+reportList.get(0).getCreateDate());
+            HttpEntity<String> requestEntity = new HttpEntity<String>(body.toJSONString(), headers);
+            ResponseEntity<String> responseEntity = this.restTemplate.exchange(url,
+                    HttpMethod.POST, requestEntity, String.class);
+            if (responseEntity.getStatusCode() == HttpStatus.OK) {
+                String resp = responseEntity.getBody();
+                JSONObject json = JSONObject.parseObject(resp);
+                if(json.getIntValue("status")==0){
+                    JSONArray jsonArray = json.getJSONArray("data");
+                }
+            }
+        }
         return httpRespMsg;
     }
 
@@ -1669,7 +1688,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 if (updateReportList.size() > 0) {
                     updateBatchById(updateReportList);
                 }
-/*                if(company.getId()==862){
+                if(company.getId()==862){
                     String url = "http://183.194.0.98:3202/api/web-server/controlCenter/billApproved";
                     HttpHeaders headers = new HttpHeaders();
                     headers.setContentType(MediaType.APPLICATION_JSON);
@@ -1687,7 +1706,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                             JSONArray jsonArray = json.getJSONArray("data");
                         }
                     }
-                }*/
+                }
             }else if(timeType.getReportAuditType() == 5){
                 List<Report> updateReportList = new ArrayList<>();
                 //项目所属BU审核
@@ -2180,7 +2199,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             }
             updateBatchById(newList);
         }
-/*        if(company.getId()==862){
+        if(company.getId()==862){
             String url = "http://183.194.0.98:3202/api/web-server/controlCenter/billRejected";
             HttpHeaders headers = new HttpHeaders();
             headers.setContentType(MediaType.APPLICATION_JSON);
@@ -2198,7 +2217,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     JSONArray jsonArray = json.getJSONArray("data");
                 }
             }
-        }*/
+        }
         List<Integer> collect = rList.stream().map(Report::getProjectId).collect(Collectors.toList());
         List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().in("id", collect));
         String pNames = projectList.stream().map(Project::getProjectName).collect(Collectors.joining(", ", "[", "]"));
@@ -3236,6 +3255,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         List<Integer> ids = ListUtil.convertIntegerIdsArrayToList(reportIds);
         int cnt = 0;
         List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "审核全员日报");
+        List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().in("id", ids));
         for (Integer reportId : ids) {
             Report report = new Report();
             report.setState(3);//待提交,即草稿状态
@@ -3258,6 +3278,25 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 }
             }
         }
+        if(user.getCompanyId()==862){
+            String url = "http://183.194.0.98:3202/api/web-server/controlCenter/billRejected";
+            HttpHeaders headers = new HttpHeaders();
+            headers.setContentType(MediaType.APPLICATION_JSON);
+            headers.add("token",getTokenOfYiWei());
+            JSONObject body=new JSONObject();
+            body.put("type","EXPENSE");
+            body.put("billNo","GS"+reportList.get(0).getCreatorId()+reportList.get(0).getCreateDate());
+            HttpEntity<String> requestEntity = new HttpEntity<String>(body.toJSONString(), headers);
+            ResponseEntity<String> responseEntity = this.restTemplate.exchange(url,
+                    HttpMethod.POST, requestEntity, String.class);
+            if (responseEntity.getStatusCode() == HttpStatus.OK) {
+                String resp = responseEntity.getBody();
+                JSONObject json = JSONObject.parseObject(resp);
+                if(json.getIntValue("status")==0){
+                    JSONArray jsonArray = json.getJSONArray("data");
+                }
+            }
+        }
         if (cnt == 0) {
             //msg.setError("只有待审核状态的报告才能撤回");
             msg.setError(MessageUtils.message("finance.revokeReport"));
@@ -4480,16 +4519,16 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                                 if(first.isPresent()){
                                     if(audit.getMsg().contains("提交了")){
                                         int i = audit.getMsg().indexOf("提");
-                                        String substring = audit.getMsg().substring(0, i + 1);
-                                        msg = time+" " + audit.getMsg().replaceAll(substring,"$userName"+first.get().getCorpwxUserid()+"$");
+                                        String substring = audit.getMsg().substring(0, i);
+                                        msg = time+" " + audit.getMsg().replaceAll(substring,"\\$userName="+first.get().getCorpwxUserid()+"\\$");
                                     }else if(audit.getMsg().contains("审核通过了")){
                                         int i = audit.getMsg().indexOf("审");
-                                        String substring = audit.getMsg().substring(0, i + 1);
-                                        msg = time+" " + audit.getMsg().replaceAll(substring,"$userName"+first.get().getCorpwxUserid()+"$");
+                                        String substring = audit.getMsg().substring(0, i);
+                                        msg = time+" " + audit.getMsg().replaceAll(substring,"\\$userName="+first.get().getCorpwxUserid()+"\\$");
                                     }else if(audit.getMsg().contains("驳回了")) {
                                         int i = audit.getMsg().indexOf("驳");
-                                        String substring = audit.getMsg().substring(0, i + 1);
-                                        msg = time+" " + audit.getMsg().replaceAll(substring,"$userName"+first.get().getCorpwxUserid()+"$");
+                                        String substring = audit.getMsg().substring(0, i);
+                                        msg = time+" " + audit.getMsg().replaceAll(substring,"\\$userName="+first.get().getCorpwxUserid()+"\\$");
                                     }
                                 }
                             }else {

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

@@ -704,13 +704,20 @@
     <select id="getMyOvertime"  resultType="java.lang.Double">
         select IFNULL(sum(overtime_hours),0) from report where creator_id=#{userId}
     </select>
-    <select id="getWaitingApproveCnt" resultType="java.util.HashMap">
+    <select id="getProWaitingApproveCnt" resultType="java.util.HashMap">
         select count(1) as num, user.dingding_userid as auditorDDId ,user.corpwx_userid as corpwxUserid from report
          left join user on user.id = project_auditor_id
          where state = 0 and project_audit_state = 0 and is_dept_audit = 0
         and report.company_id = #{companyId}
         group by project_auditor_id
     </select>
+    <select id="getDeptWaitingApproveCnt" resultType="java.util.HashMap">
+        select COUNT(1) as num, user.dingding_userid as auditorDDId ,user.corpwx_userid as corpwxUserid from report
+         left join user on user.id = audit_dept_managerid
+         where state = 0 and department_audit_state = 0 and is_dept_audit = 1
+        and report.company_id =#{companyId}
+        group by audit_dept_managerid
+    </select>
     <select id="getProjectCost" resultType="java.util.HashMap">
         SELECT project_id as projectId,basecost_id as basecostId, SUM(cost) AS cost FROM report WHERE company_id=#{companyId}
         AND (state = 0 or state = 1) and basecost_id > 0 AND project_id IN

文件差异内容过多而无法显示
+ 2 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TimeTypeMapper.xml


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

@@ -17,13 +17,7 @@
                     </template>
             </el-table-column>
             <el-table-column prop="companyName" label="公司名称"  ></el-table-column>
-            <el-table-column prop="wx_corpid" label="来源"  >
-                <template slot-scope="scope">
-                    <span>{{scope.row.wxCorpid!=null?"企业微信":""}}</span>
-                    <span>{{scope.row.dingdingCorpid!=null?"钉钉":""}}</span>
-                    <span>{{scope.row.wxCorpid==null&&scope.row.dingdingCorpid==null?"官网":""}}</span>
-                </template>
-            </el-table-column>
+            <el-table-column prop="regFrom" label="来源"  ></el-table-column>
             <el-table-column prop="cTime" label="注册时间"  ></el-table-column>
             <el-table-column prop="name" label="联系人" ></el-table-column>
             <el-table-column prop="phone" label="联系方式"  width="150"></el-table-column>

+ 8 - 2
fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/entity/VcompanyCustomerContact.java

@@ -17,7 +17,7 @@ import org.springframework.format.annotation.DateTimeFormat;
  * </p>
  *
  * @author Seyason
- * @since 2022-05-12
+ * @since 2023-04-12
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -58,6 +58,12 @@ public class VcompanyCustomerContact extends Model<VcompanyCustomerContact> {
     @TableField("set_meal")
     private Integer setMeal;
 
+    /**
+     * 注册来源
+     */
+    @TableField("reg_from")
+    private String regFrom;
+
     /**
      * 名字
      */
@@ -65,7 +71,7 @@ public class VcompanyCustomerContact extends Model<VcompanyCustomerContact> {
     private String name;
 
     /**
-     * 手机号 登录账号
+     * 手机号 登录账号,全系统唯一
      */
     @TableField("phone")
     private String phone;

+ 2 - 1
fhKeeper/formulahousekeeper/ops-platform/src/main/resources/mapper/VcompanyCustomerContactMapper.xml

@@ -9,6 +9,7 @@
         <result column="staff_count_max" property="staffCountMax" />
         <result column="expiration_date" property="expirationDate" />
         <result column="set_meal" property="setMeal" />
+        <result column="reg_from" property="regFrom" />
         <result column="name" property="name" />
         <result column="phone" property="phone" />
         <result column="contacted" property="contacted" />
@@ -21,7 +22,7 @@
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, company_name, staff_count_max, expiration_date, set_meal, name, phone, contacted, feedback, indate, c_time, wx_corpid, dingding_corpid
+        id, company_name, staff_count_max, expiration_date, set_meal, reg_from, name, phone, contacted, feedback, indate, c_time, wx_corpid, dingding_corpid
     </sql>
 
 </mapper>

二进制
fhKeeper/formulahousekeeper/timesheet/src/assets/image/aacbc.png


+ 1 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/Home.vue

@@ -738,7 +738,7 @@
                         timestamp: res.data.timestamp, // 必填,生成签名的时间戳 
                         nonceStr: res.data.noncestr, // 必填,生成签名的随机串 
                         signature: res.data.sign, // 必填,签名,见附录1 
-                        jsApiList: ['chooseImage','previewImage','uploadImage','downloadImage','previewFile','getLocation','agentConfig'] 
+                        jsApiList: ['chooseImage','previewImage','uploadImage','downloadImage','previewFile','getLocation','agentConfig', 'getLocalImgData'] 
                         });
                         var that = this;
                         wx.ready(function(){

+ 382 - 13
fhKeeper/formulahousekeeper/timesheet/src/views/project/fileCenter.vue

@@ -2,22 +2,12 @@
     <section >
         <div :style="'background:#f7f7f7;padding:10px 50px;height:'+tableHeight+'px;'">
         <!--工具条-->
-        <!-- <el-col :span="24" class="toolbar" style="padding-bottom: 0px;background:#fff;border-bottom:1px solid #f7f7f7;">
-            <el-form :inline="true">
-                <el-form-item label="文件库">
-                </el-form-item>
-                <el-form-item style="float:right;">
-                    <el-link type="primary" :underline="false" @click="createFolder()"><i class="el-icon-folder-add"></i><span style="margin-left:5px;">创建文件夹</span></el-link>
-                    <el-upload ref="upload" action="#" :http-request="uploadFile" :show-file-list="false" :limit="1" style="display:inline-block;">
-                        <el-link type="primary" :underline="false" style="margin-left:10px;"><i class="iconfont firerock-iconshangchuan"></i><span style="margin-left:5px;">文件上传</span></el-link>
-                    </el-upload>
-                </el-form-item>
-            </el-form>
-        </el-col> -->
         <div style="padding: 20px;background:#fff;border-bottom:1px solid #ddd;font-weight:500;font-size:15px;">
             <span @click="viewFolder(null)" style="color: #409EFF;cursor: pointer;">{{ $t('library') }}</span>
             <span v-for="path in pathList" :key="path.id" @click="viewFolder(path)" class="mianbaoxie"> <i class="el-icon-arrow-right jianto"></i> {{path.documentName}}</span>
             <span style="float:right;">
+                <el-link type="primary" :underline="false" v-if="list.length
+                > 0"><i class="el-icon-setting"></i><span style="margin-right:5px;" @click="templatedialingClick('设为模板')">设为模板</span></el-link>
                     <el-link type="primary" :underline="false" @click="createFolder"><i class="el-icon-folder-add"></i><span style="margin-left:5px;">{{ $t('createafolder') }}</span></el-link>
                     <el-upload ref="upload" action="#" :http-request="uploadFile" :show-file-list="false" :limit="1" style="display:inline-block;">
                         <el-link type="primary" :underline="false" style="margin-left:10px;"><i class="iconfont firerock-iconshangchuan"></i><span style="margin-left:5px;">{{ $t('fileupload') }}</span></el-link>
@@ -107,7 +97,7 @@
         </el-dialog>
 
          <!-- 文件夹弹出框 -->
-        <el-dialog :title="$t('modifyingFolder')" v-if="addFolderDialog" :visible.sync="addFolderDialog" :close-on-click-modal="false" customClass="customWidth" width="300px">
+        <!-- <el-dialog :title="$t('modifyingFolder')" v-if="addFolderDialog" :visible.sync="addFolderDialog" :close-on-click-modal="false" customClass="customWidth" width="300px">
             <el-form ref="form2" :model="folderForm" :rules="rules" >
                 <el-form-item prop="documentName">
                     <el-input v-model="folderForm.documentName" :placeholder="$t('pleaseenterfoldername')" maxlength="25"
@@ -117,6 +107,105 @@
             <div slot="footer" class="dialog-footer">
                 <el-button type="primary" @click="addFolder" style="width:100%;" >{{ $t('save') }}</el-button>
             </div>
+        </el-dialog> -->
+
+        <el-dialog :title="$t('modifyingFolder')" v-if="addFolderDialog" :visible.sync="addFolderDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
+            <div class="titleBox">
+                <el-tabs v-model="activeName" @tab-click="handleClick" v-if="!addFolderDialogTwo">
+                    <el-tab-pane label="新建/修改文件夹" name="one">
+                        <el-form ref="form2" :model="folderForm" :rules="rules" style="margin-top: 10px">
+                            <el-form-item prop="documentName">
+                                <el-input v-model="folderForm.documentName" :placeholder="$t('pleaseenterfoldername')" maxlength="25"
+                                    show-word-limit clearable></el-input>
+                            </el-form-item>
+                        </el-form>
+                    </el-tab-pane>
+                    <el-tab-pane label="从模板中创建" name="two">
+                        <div v-for="(item,index) in templateList" :key="index" @click="cardClick(index)">
+                            <el-card :class="`box-card ${templateIndex == index ? 'cardOn' : ''}`">
+                                <div class="text item">
+                                    <div>{{ item.name }}</div>
+                                    <div>
+                                        <el-link :underline="false" @click="editTemplate(item)"><i class="el-icon-edit"></i></el-link>
+                                        <el-link :underline="false" @click="removeTemplate(item)"><i  class="el-icon-delete" style="margin-left: 10px"></i></el-link>
+                                        <div class="cardIcon">
+                                            <i class="el-icon-check" v-if="templateIndex == index"></i>
+                                        </div>
+                                    </div>
+                                </div>
+                            </el-card>
+                        </div>
+                    </el-tab-pane>
+                </el-tabs>
+
+                <el-form ref="form2" :model="folderForm" :rules="rules" v-if="addFolderDialogTwo">
+                    <el-form-item prop="documentName">
+                        <el-input v-model="folderForm.documentName" :placeholder="$t('pleaseenterfoldername')" maxlength="25"
+                            show-word-limit clearable></el-input>
+                    </el-form-item>
+                </el-form>
+            </div>
+            <div slot="footer" class="dialog-footer">
+                <el-button v-if="activeName == 'one'" type="primary" @click="addFolder" style="width:100%;" >{{ $t('save') }}</el-button>
+                <el-button v-if="activeName == 'two'" type="primary" @click="addFolderTemplate" style="width:100%;" >{{ $t('save') }}</el-button>
+            </div>
+        </el-dialog>
+
+        <!-- 设为模板 -->
+        <el-dialog :title="'编辑模板'" v-if="templatedialing" :visible.sync="templatedialing" :close-on-click-modal="false" customClass="customWidth" width="500px">
+            <div>
+                <el-form :model="templateForm" ref="templateForm" label-width="80px">
+                    <el-form-item label="模板名称" prop="name" :rules="[
+                            { required: true, message: '请输入模板名称'}
+                        ]">
+                        <el-input v-model="templateForm.name" :placeholder="'请输入模板名称'" maxlength="25" show-word-limit clearable ></el-input>
+                    </el-form-item>
+                    <el-form-item>
+                        <el-checkbox v-model="templateForm.creWithPro">随项目自动创建</el-checkbox>
+                    </el-form-item>
+                </el-form>
+
+                <div class="fileCenter">文件中心结构</div>
+                <div class="filrTree">
+                    <el-tree
+                        :data="templateDataTree"
+                        node-key="id"
+                        default-expand-all
+                        :expand-on-click-node="false">
+                        <span class="custom-tree-node tree_node" slot-scope="{ node, data }">
+                            <span>{{ node.label }}</span>
+                            <span class="tree_node_btn">
+                                <i class="el-icon-circle-plus-outline" @click="addtemplateNodeDailoing = true, excessiveNodeData = data, nodeForm.name = ''"></i>
+                                <i class="el-icon-delete" style="margin-left: 20px" @click="removeNode(node, data)"></i>
+                            </span>
+                        </span>
+                        </el-tree>
+                </div>
+
+            </div>
+            <div slot="footer" class="dialog-footer">
+                <!-- <el-button v-if="templateFlg" type="primary" style="width:100%;" :loading="templateDataTreeDaylong" @click="addTemplate('templateForm')">{{ $t('save') }}</el-button>
+                <el-button v-if="!templateFlg" type="primary" style="width:100%;" :loading="templateDataTreeDaylong" @click="uploadTemplate('templateForm')">{{ $t('save') }}</el-button> -->
+                <el-button type="primary" style="width:100%;" :loading="templateDataTreeDaylong" @click="addTemplate('templateForm')">{{ $t('save') }}</el-button>
+            </div>
+        </el-dialog>
+
+        <!-- 添加子节点 -->
+        <el-dialog :title="'新增节点'" v-if="addtemplateNodeDailoing" :visible.sync="addtemplateNodeDailoing" :close-on-click-modal="false" customClass="customWidth" width="500px">
+            <div>
+                <el-form :model="nodeForm" ref="nodeForm" label-width="100px" class="demo-ruleForm">
+                    <el-form-item label="节点名称" prop="name"
+                        :rules="[
+                            { required: true, message: '请输入节点名称'}
+                        ]"
+                    >
+                        <el-input v-model="nodeForm.name"></el-input>
+                    </el-form-item>
+                </el-form>
+            </div>
+            <div slot="footer" class="dialog-footer">
+                <el-button type="primary" style="width:100%;" @click="addtemplateNode('nodeForm')">确定</el-button>
+            </div>
         </el-dialog>
         </div>
     </section>
@@ -135,6 +224,63 @@
 .mianbaoxie:hover .jianto {
     color: #909399;
 }
+.custom-tree-node {
+    flex: 1;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    font-size: 14px;
+    padding-right: 8px;
+}
+.fileCenter {
+    margin-bottom: 10px;
+}
+.filrTree {
+    width: 100%;
+    max-height: 280px;
+    overflow: auto;
+    margin-bottom: 10px;
+}
+.titleBox {
+    width: 100%;
+    max-height: 340px;
+    overflow: auto;
+    margin-bottom: 10px;
+    padding: 0 10px;
+    box-sizing: border-box;
+}
+.text {
+  font-size: 14px;
+}
+.item {
+  margin-bottom: 10px;
+  display: flex;
+  justify-content: space-between;
+}
+.clearfix:before,
+.clearfix:after {
+  display: table;
+  content: "";
+}
+.clearfix:after {
+  clear: both
+}
+.box-card {
+  width: 100%;
+  box-sizing: border-box;
+  margin: 10px 0;
+}
+.cardOn {
+    border: 1px solid #409EFF;
+}
+.cardIcon {
+    display: inline-block; 
+    margin-left: 10px;
+    width: 20px;
+    color: #409EFF;
+    font-size: 16px;
+    font-weight: bold;
+}
 </style>
 <script>
     import util from "../../common/js/util";
@@ -166,9 +312,216 @@
                 addForm: {
                     
                 },
+                templateTitle: '',
+                templatedialing: false,
+                templateForm: {
+                    name: ''
+                },
+                templateDataTree: [],
+                addtemplateNodeDailoing: false,
+                nodeForm: {
+                    name: ''
+                },
+                excessiveNodeData: null,
+                templateDataTreeDaylong: false,
+                activeName: 'one',
+                templateList: [],
+                templateFlg: false,
+                templateIndex: '0',
+                addFolderDialogTwo: false
             };
         },
         methods: {
+            addFolderTemplate() {
+                let obj = {
+                    templateId: this.templateList[this.templateIndex].id,
+                    projectId: this.curProjectId,
+                }
+                this.parentFid ? obj.parentFid = this.parentFid : ''
+                console.log('obj', obj)
+                // return
+                this.http.post('/document/buildWithTemplate', obj,
+                res => {
+                    if (res.code == "ok") {
+                        this.addFolderDialog = false
+                        this.getList()
+                    } else {
+                        this.$message({message: res.msg,type: 'error'});
+                    }
+                }, error => {
+                    this.$message({message: error,type: 'error'});
+                })
+            },
+            cardClick(index) {
+                this.templateIndex = index
+            },
+            editTemplate(data) {
+                this.templateForm.name = data.name
+                this.templateForm.creWithPro = data.creWithPro ? true : false
+                this.templateForm.id = data.id
+                this.templateDataTree = data.proDocumentTemDetailList
+                this.templateFlg = false
+                this.templatedialing = true
+            },
+            removeTemplate(data) {
+                this.$confirm(`确定删除【${data.name}】模板吗?`, '提示', {
+                    confirmButtonText: '确定',
+                    cancelButtonText: '取消',
+                    type: 'warning'
+                }).then(() => {
+                    this.http.post('/project-document-template/delete', {id: data.id},
+                        res => {
+                            if (res.code == "ok") {
+                                this.$message({
+                                    message: `删除成功`,
+                                    type: 'success'
+                                });
+                                this.getTemplateList()
+                            } else {
+                                this.$message({message: res.msg,type: 'error'});
+                            }
+                        }, error => {
+                            this.$message({message: error,type: 'error'});
+                        })
+                }).catch(() => {});
+            },
+            uploadTemplate(formName) {
+                this.$refs[formName].validate((valid) => {
+                    if (valid) {
+                        this.templateDataTreeDaylong = true
+                        this.http.post('/project-document-template/update', {
+                            proDocumentTemDetailList: JSON.stringify(this.templateDataTree),
+                            name: this.templateForm.name,
+                            creWithPro: this.templateForm.creWithPro ? '1' : '0',
+                            id: this.templateForm.id,
+                            companyId: this.user.companyId
+                        },
+                        res => {
+                            this.templateDataTreeDaylong = false
+                            if (res.code == "ok") {
+                                this.$message({
+                                    message: `操作成功`,
+                                    type: 'success'
+                                });
+                            } else {this.$message({message: res.msg,type: 'error'});}
+                        }, error => {
+                            this.templateDataTreeDaylong = false
+                            this.$message({message: error,type: 'error'});
+                        })
+                    } else {
+                        console.log('error submit!!');
+                        return false;
+                    }
+                });
+            },
+            addTemplate(formName) {
+                this.$refs[formName].validate((valid) => {
+                    if (valid) {
+                        let obj = {} 
+                        if(this.templateFlg) {
+                            obj = {
+                                documentString: JSON.stringify(this.templateDataTree),
+                                name: this.templateForm.name,
+                                creWithPro: this.templateForm.creWithPro ? '1' : '0',
+                                companyId: this.user.companyId
+                            }
+                        } else {
+                            obj = {
+                                documentString: JSON.stringify(this.templateDataTree),
+                                name: this.templateForm.name,
+                                creWithPro: this.templateForm.creWithPro ? '1' : '0',
+                                id: this.templateForm.id,
+                                companyId: this.user.companyId
+                            }
+                        }
+                        this.templateDataTreeDaylong = true
+                        // this.http.post('/project-document-template/addTemplate', {
+                        this.http.post('/project-document-template/addTemplate', obj,
+                        res => {
+                            this.templateDataTreeDaylong = false
+                            if (res.code == "ok") {
+                                this.$message({
+                                    message: `(${this.templateForm.name}) 模板添加成功,可在创建文件夹中查看`,
+                                    type: 'success'
+                                });
+                                this.templatedialing = false
+                            } else {
+                                this.$message({
+                                    message: res.msg,
+                                    type: 'error'
+                                });
+                            }
+                        }, error => {
+                            this.templateDataTreeDaylong = false
+                            this.$message({
+                                message: error,
+                                type: 'error'
+                            });
+                        })
+                    } else {
+                        console.log('error submit!!');
+                        return false;
+                    }
+                });
+            },
+            addtemplateNode(formName) {
+                this.$refs[formName].validate((valid) => {
+                    if (valid) {
+                        console.log('excessiveNodeData',this.excessiveNodeData)
+                        let data = this.excessiveNodeData
+                        const newChild = { label: this.nodeForm.name, children: [], folderId: this.excessiveNodeData.id || ''};
+                        if (!data.children) {
+                            this.$set(data, 'children', []);
+                        }
+                        data.children.push(newChild);
+                        this.addtemplateNodeDailoing = false
+                    } else {
+                        console.log('error submit!!');
+                        return false;
+                    }
+                });
+            },
+            removeNode(node, data) {
+                this.$confirm(`确定删除(${data.label})节点?`, '提示', {
+                    confirmButtonText: '确定',
+                    cancelButtonText: '取消',
+                    type: 'warning'
+                }).then(() => {
+                    const parent = node.parent;
+                    const children = parent.data.children || parent.data;
+                    const index = children.findIndex(d => d.id === data.id);
+                    children.splice(index, 1);
+                }).catch(() => {});
+            },
+            templatedialingClick(title) {
+                this.templateTitle = title
+                this.templateForm = {name: ''}
+                this.templatedialing = true
+                this.templateFlg = true
+                this.getTemplateDataTree()
+            },
+            getTemplateDataTree() {
+                this.http.post('/document/getSubList', {
+                    projectId: this.curProjectId,
+                    parentFid: this.parentFid
+                },
+                res => {
+                    if (res.code == "ok") {
+                        this.templateDataTree = []
+                        this.templateDataTree = res.data
+                    } else {
+                        this.$message({
+                            message: res.msg,
+                            type: 'error'
+                        });
+                    }
+                }, error => {
+                    this.$message({
+                        message: error,
+                        type: 'error'
+                    });
+                })
+            },
             cursorOver(row, column, cell, event) {
                 this.currentDataId = row.id;
             },
@@ -285,11 +638,27 @@
             },
             showEditName(row) {
                 this.addFolderDialog = true;
+                this.addFolderDialogTwo = true
                 this.folderForm = JSON.parse(JSON.stringify(row));
             },
             createFolder(){
                 this.addFolderDialog = true;
+                this.addFolderDialogTwo = false
                 this.folderForm = {projectId: this.curProjectId, folderId: this.parentFid,isFolder: 1};
+                this.activeName = 'one'
+                this.getTemplateList()
+            },
+            getTemplateList() {
+                this.http.post('/project-document-template/list ', {},
+                res => {
+                    if (res.code == "ok") {
+                        this.templateList = res.data
+                    } else {
+                        this.$message({message: res.msg,type: 'error'});
+                    }
+                }, error => {
+                    this.$message({message: error,type: 'error'});
+                })
             },
 
             openWin(url) {

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

@@ -589,6 +589,19 @@
                             <el-input v-model="domain.content" type="textarea" :rows="4" :placeholder="$t('defaultText.pleaseFillOut')" clearable style="width:75%;margin-right:7%"
                             :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)"></el-input>
                         </el-form-item>
+                        <!-- 拍照上传 -->
+                        <el-form-item label="图片上传" v-if="user.companyId == '7' || user.companyId == '10'">
+                            <div class="photos">
+                                <div class="photos_img" v-for="(p, ip) in domain.pics" :key="ip">
+                                    <img
+                                        style="width: 120px; height: 120px; margin-right:10px;"
+                                        :src="p" />
+                                </div>
+                                <div @click="addImg(index)" class="photos_img">
+                                    <img src="../../assets/image/aacbc.png" />
+                                </div>
+                            </div>
+                        </el-form-item>
                         </div>
                         <!--多个工作事项填报的情况 -->
                         <div v-if="reportTimeType.multiWorktime==1">
@@ -750,13 +763,13 @@
                         </div>
 
                         <!--照片的显示 -->
-                        <p v-if="domain.pics != null && domain.pics.length > 0" style="text-align:center;"> 
+                        <!-- <p v-if="domain.pics != null && domain.pics.length > 0" style="text-align:center;"> 
                             <el-image v-for="(pic, index) in domain.pics" :key="index"
                                 style="width: 100px; height: 100px; margin-right:10px;"
                                 :src="pic" 
                                 :preview-src-list="domain.pics">
                             </el-image>
-                        </p>
+                        </p> -->
                         <el-divider v-if="workForm.domains.length>1" style="margin-bottom:10px;"></el-divider>
                     </div>
                     <span id="workFormsItemBottom"></span>
@@ -2105,6 +2118,59 @@
                     })
                 })
             },
+            // 图片上传
+            addImg(index) {
+                var that = this;
+                // if (that.workForm.domains[index].pics == null) {
+                //     that.workForm.domains[index].pics = [];
+                //     that.workForm.domains[index].iospics = [];
+                // }
+                // that.workForm.domains[index].pics.push('wxLocalResource://imageidQzpcVXNlcnNcTEpZXERlc2t0b3Bc5oG25pCe5Zu+54mHXGhwLmpwZw==')
+                // console.log(that.workForm.domains)
+                wx.chooseImage({
+                    count: 3, // 默认9
+                    sizeType: ['compressed'],
+                    sourceType: ['album'],
+                    defaultCameraMode: "batch",
+                    success: function (res) {
+                        console.log(res, '数据')
+                        var localIds = res.localIds;
+                        wx.getLocalImgData({
+                            localId: localIds[0], // 图片的localID
+                            success: function (res) {
+                                var localData = res.localData;
+                                console.log('转之后的', localData, res)
+                                if (that.workForm.domains[index].pics == null) {
+                                    that.workForm.domains[index].pics = [];
+                                    that.workForm.domains[index].iospics = [];
+                                }
+                                if (that.user.companyId == 7) {
+                                    that.workForm.domains[index].pics = that.workForm.domains[index].pics.concat(localData); 
+                                } else {
+                                    that.workForm.domains[index].pics = localData;
+                                }
+                                that.$forceUpdate(); 
+                                if (that.workForm.domains[index].serverPics == null) {
+                                    that.workForm.domains[index].serverPics = [];
+                                }
+                                for (var i=0;i<localIds.length; i++) {
+                                    wx.uploadImage({
+                                        localId: localIds[i], // 需要上传的图片的本地ID,由chooseImage接口获得
+                                        isShowProgressTips: 1, // 默认为1,显示进度提示
+                                        success: function (res) {
+                                            var serverId = res.serverId; // 返回图片的服务器端ID
+                                            that.workForm.domains[index].serverPics.push(serverId);
+
+                                            console.log(that.workForm.domains, '数据')
+                                        }
+                                    });
+                                }
+                            }
+                        });
+                        
+                    }
+                })
+            },
             test(){
                 console.log('test',this.workForm.domains);
             },
@@ -6373,10 +6439,17 @@
                             this.listLoading = false;
                             this.submitingReport = false;
                             if (res.code == "ok") {
-                                this.$message({
+                                if(res.msg!=null){
+                                    this.$message({
+                                    message: res.msg,
+                                    type: "success"
+                                    });
+                                }else{
+                                    this.$message({
                                     message: this.isDraft==0?this.$t('message.submittedSuccessfully'):this.$t('message.Temporarysuccess'),
                                     type: "success"
-                                });
+                                    });
+                                }
                                 this.dialogVisible = false;
                                 this.jsDay = 0
                                 this.jsTime = 0
@@ -6684,6 +6757,22 @@
 </script>
 
 <style lang="scss" scoped>
+.photos {
+    position: relative;
+    display: flex;
+    flex-wrap: wrap;
+}
+.photos_img {
+    width: 120px;
+    height: 120px;
+    margin-right: 20px;
+    margin-bottom: 20px;
+    cursor: pointer;
+    img {
+        width: 100%;
+        height: 100%;
+    }
+}
 .paginatis {
     padding: 10px 10px;
     background: #f2f2f2;

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

@@ -2065,7 +2065,11 @@ import timetoolVue from '../timetool/timetool.vue';
                         this.flgLg = true
                         if(res.code == "ok") {
                             this.$toast.clear();
-                            this.$toast.success(this.isDraft==0?'提交成功':'暂存成功');
+                            if(res.msg!=null){
+                                this.$toast.success(res.msg);                                    
+                            }else{
+                                this.$toast.success(this.isDraft==0?'提交成功':'暂存成功');
+                            }
                             this.$router.push("/index");
                         } else {
                             this.$toast.clear();