diff --git a/yanzhu-api/yanzhu-api-system/src/main/java/com/yanzhu/system/api/RemoteProService.java b/yanzhu-api/yanzhu-api-system/src/main/java/com/yanzhu/system/api/RemoteProService.java
index 81064a49..3416af3f 100644
--- a/yanzhu-api/yanzhu-api-system/src/main/java/com/yanzhu/system/api/RemoteProService.java
+++ b/yanzhu-api/yanzhu-api-system/src/main/java/com/yanzhu/system/api/RemoteProService.java
@@ -41,6 +41,16 @@ public interface RemoteProService
     @GetMapping("/proProjectInfoSubdeptsUsers/approveSubDeptsUser/{busKey}")
     public R<AjaxResult> approveSubDeptsUser(@PathVariable("busKey") Long busKey, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
 
+    /**
+     * 公司安全承诺书文件签名章
+     *
+     * @param busKey 业务主键
+     * @param source 请求来源
+     * @return 结果
+     */
+    @GetMapping("/proProjectInfoSubdeptsUsers/subDeptsUserComSign/{busKey}")
+    public R<AjaxResult> subDeptsUserComSign(@PathVariable("busKey") Long busKey, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+
     /**
      * 项目安全承诺书文件签名章
      *
diff --git a/yanzhu-api/yanzhu-api-system/src/main/java/com/yanzhu/system/api/factory/RemoteProFallbackFactory.java b/yanzhu-api/yanzhu-api-system/src/main/java/com/yanzhu/system/api/factory/RemoteProFallbackFactory.java
index 79abcff8..a4e674a6 100644
--- a/yanzhu-api/yanzhu-api-system/src/main/java/com/yanzhu/system/api/factory/RemoteProFallbackFactory.java
+++ b/yanzhu-api/yanzhu-api-system/src/main/java/com/yanzhu/system/api/factory/RemoteProFallbackFactory.java
@@ -38,6 +38,12 @@ public class RemoteProFallbackFactory implements FallbackFactory<RemoteProServic
                 return R.fail("审批通过信息同步失败:" + throwable.getMessage());
             }
 
+            @Override
+            public R<AjaxResult> subDeptsUserComSign(Long busKey, String source)
+            {
+                return R.fail("公司承诺书签名章失败:" + throwable.getMessage());
+            }
+
             @Override
             public R<AjaxResult> subDeptsUserProSign(Long busKey, String source)
             {
diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/BasTemplateMapper.xml b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/BasTemplateMapper.xml
index 978986e0..0d9d5c6b 100644
--- a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/BasTemplateMapper.xml
+++ b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/BasTemplateMapper.xml
@@ -32,6 +32,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <where>  
             <if test="comId != null "> and bt.com_id = #{comId}</if>
             <if test="projectId != null "> and bt.project_id = #{projectId}</if>
+            <if test="activeComId != null "> and bt.com_id = #{activeComId}</if>
+            <if test="activeProjectId != null "> and bt.project_id = #{activeProjectId}</if>
             <if test="temName != null  and temName != ''"> and bt.tem_name like concat('%', #{temName}, '%')</if>
             <if test="temType != null  and temType != ''"> and bt.tem_type = #{temType}</if>
             <if test="isDel != null "> and bt.is_del = #{isDel}</if>
diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/system/SysUserMapper.xml b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/system/SysUserMapper.xml
index 7c8e26f4..8f4d9d86 100644
--- a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/system/SysUserMapper.xml
@@ -80,7 +80,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		from sys_user u
 		left join sys_dept d on u.dept_id = d.dept_id
 		left join sys_user_ext ex on u.user_id=ex.user_id
-		where u.del_flag = '0'
+		where u.del_flag = '0' and u.user_type= '00'
 		<if test="userId != null and userId != 0">
 			AND u.user_id = #{userId}
 		</if>
diff --git a/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/listener/FlowComSignListener.java b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/listener/FlowComSignListener.java
new file mode 100644
index 00000000..c769fe9a
--- /dev/null
+++ b/yanzhu-modules/yanzhu-flowable/src/main/java/com/yanzhu/flowable/listener/FlowComSignListener.java
@@ -0,0 +1,41 @@
+package com.yanzhu.flowable.listener;
+
+import com.yanzhu.common.core.constant.SecurityConstants;
+import com.yanzhu.common.core.text.Convert;
+import com.yanzhu.system.api.RemoteProService;
+import lombok.extern.slf4j.Slf4j;
+import org.flowable.engine.delegate.DelegateExecution;
+import org.flowable.engine.delegate.ExecutionListener;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Component;
+
+/**
+ * 公司审批签名执行监听器
+ *
+ * 执行监听器允许在执行过程中执行Java代码。
+ * 执行监听器可以捕获事件的类型:
+ * 流程实例启动,结束
+ * 输出流捕获
+ * 获取启动,结束
+ * 路由开始,结束
+ * 中间事件开始,结束
+ * 触发开始事件,触发结束事件
+ *
+ * @author JiangYuQi
+ * @date 2024/12/16
+ */
+@Slf4j
+@Component
+public class FlowComSignListener implements ExecutionListener {
+
+    @Lazy
+    @Autowired
+    private RemoteProService remoteProService;
+
+    @Override
+    public void notify(DelegateExecution execution) {
+        log.info("公司审批签名执行监听器:{}", execution.getProcessInstanceBusinessKey());
+        remoteProService.subDeptsUserComSign(Convert.toLong(execution.getProcessInstanceBusinessKey(),null), SecurityConstants.INNER);
+    }
+}
diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/ProProjectInfoSubdeptsUsersController.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/ProProjectInfoSubdeptsUsersController.java
index 5ae7d451..42492fbe 100644
--- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/ProProjectInfoSubdeptsUsersController.java
+++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/ProProjectInfoSubdeptsUsersController.java
@@ -160,13 +160,13 @@ public class ProProjectInfoSubdeptsUsersController extends BaseController
     }
 
     /**
-     * 班组安全承诺书文件签名章
+     * 公司安全承诺书文件签名章
      */
     @InnerAuth
-    @GetMapping("/subDeptsUserGroSign/{busKey}")
-    public R<AjaxResult> subDeptsUserGroSign(@PathVariable("busKey") Long busKey)
+    @GetMapping("/subDeptsUserComSign/{busKey}")
+    public R<AjaxResult> subDeptsUserComSign(@PathVariable("busKey") Long busKey)
     {
-        proProjectInfoSubdeptsUsersService.approveSubDeptsUserGroSign(busKey);
+        proProjectInfoSubdeptsUsersService.approveSubDeptsUserComSign(busKey);
         return R.ok(AjaxResult.success());
     }
 
@@ -181,6 +181,17 @@ public class ProProjectInfoSubdeptsUsersController extends BaseController
         return R.ok(AjaxResult.success());
     }
 
+    /**
+     * 班组安全承诺书文件签名章
+     */
+    @InnerAuth
+    @GetMapping("/subDeptsUserGroSign/{busKey}")
+    public R<AjaxResult> subDeptsUserGroSign(@PathVariable("busKey") Long busKey)
+    {
+        proProjectInfoSubdeptsUsersService.approveSubDeptsUserGroSign(busKey);
+        return R.ok(AjaxResult.success());
+    }
+
     /**
      * 修改人员进场状态
      * @param ids
diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/CraftPostEnums.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/CraftPostEnums.java
index 9a9a7329..6dde05aa 100644
--- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/CraftPostEnums.java
+++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/CraftPostEnums.java
@@ -6,7 +6,9 @@ package com.yanzhu.manage.enums;
 public enum CraftPostEnums {
 
     WTDL("1022", "委托代理人"),
-    XMJL("1023", "项目经理");
+    XMJL("1023", "项目经理"),
+    AQZY("1024", "安全专员"),
+    CLZY("1025", "材料专员");
 
     private final String code;
     private final String info;
diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/DeptGroupEnums.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/DeptGroupEnums.java
index c4fd28f7..7ebf73d9 100644
--- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/DeptGroupEnums.java
+++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/DeptGroupEnums.java
@@ -5,7 +5,8 @@ package com.yanzhu.manage.enums;
  */
 public enum DeptGroupEnums {
 
-    MANAGE("DEFAULT", "管理班组");
+    MANAGE("DEFAULT", "管理班组"),
+    SPECIAL("SPECIAL", "特殊工种班组");
 
     private final String code;
     private final String info;
diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/UserPostEnums.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/UserPostEnums.java
index 389266e3..30e493f8 100644
--- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/UserPostEnums.java
+++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/UserPostEnums.java
@@ -9,6 +9,7 @@ public enum UserPostEnums {
     XMJL("2", "项目经理"),
     BZZ("3", "班组长"),
     LWGR("4", "劳务工人"),
+    TSGZ("5", "特殊工种"),
     CLRY("6", "材料员"),
     AQRY("8", "安全员"),
     JSDWGL("66", "建设单位管理"),
diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IProProjectInfoSubdeptsUsersService.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IProProjectInfoSubdeptsUsersService.java
index 641b9fd8..c73bdb33 100644
--- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IProProjectInfoSubdeptsUsersService.java
+++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IProProjectInfoSubdeptsUsersService.java
@@ -124,6 +124,12 @@ public interface IProProjectInfoSubdeptsUsersService
      */
     public void approveSubDeptsUserProSign(Long id);
 
+    /**
+     * 公司安全承诺书文件签名章
+     * @param id
+     */
+    public void approveSubDeptsUserComSign(Long id);
+
     /**
      * 新增建设单位人员
      *
diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProProjectInfoSubdeptsUsersServiceImpl.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProProjectInfoSubdeptsUsersServiceImpl.java
index d14424ef..822a2bee 100644
--- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProProjectInfoSubdeptsUsersServiceImpl.java
+++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProProjectInfoSubdeptsUsersServiceImpl.java
@@ -318,7 +318,7 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu
         // 班组信息处理
         if(Objects.nonNull(proProjectInfoSubdeptsUsers.getUserPost())){
             if(Objects.equals(proProjectInfoSubdeptsUsers.getUserPost(), UserPostEnums.XMJL.getCode())){
-                //查询管理班组
+                // 查询管理班组
                 ProProjectInfoSubdeptsGroup query = new ProProjectInfoSubdeptsGroup();
                 query.setProjectId(parUsers.getProjectId());
                 query.setSubDeptId(parUsers.getSubDeptId());
@@ -332,6 +332,39 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu
                 proProjectInfoSubdeptsUsers.setCraftType(CraftTypeEnums.GLRY.getCode());
                 proProjectInfoSubdeptsUsers.setCraftPost(CraftPostEnums.XMJL.getCode());
                 sysUser.setUserType(UserTypeEnums.FBXMJL.getCode());
+
+                // 设置特殊工种班组
+                ProProjectInfoSubdeptsGroup GroupQuery = new ProProjectInfoSubdeptsGroup();
+                GroupQuery.setProjectId(parUsers.getProjectId());
+                GroupQuery.setSubDeptId(parUsers.getSubDeptId());
+                GroupQuery.setGroupCode(DeptGroupEnums.SPECIAL.getCode());
+                List<ProProjectInfoSubdeptsGroup> specialGroups = proProjectInfoSubdeptsGroupMapper.selectProProjectInfoSubdeptsGroupList(query);
+
+                if(Objects.nonNull(specialGroups) && specialGroups.size()>0){
+                    ProProjectInfoSubdeptsGroup specialGroup = specialGroups.get(0);
+                    specialGroup.setGroupLeaderName(proProjectInfoSubdeptsUsers.getUserName());
+                    specialGroup.setGroupLeaderCode(proProjectInfoSubdeptsUsers.getCardCode());
+                    specialGroup.setGroupLeaderPhone(proProjectInfoSubdeptsUsers.getUserPhone());
+                    proProjectInfoSubdeptsGroupMapper.updateProProjectInfoSubdeptsGroup(specialGroup);
+                }else{
+                    ProProjectInfoSubdeptsGroup specialGroup = new ProProjectInfoSubdeptsGroup();
+                    specialGroup.setComId(proProjectInfoSubdeptsUsers.getComId());
+                    specialGroup.setProjectId(proProjectInfoSubdeptsUsers.getProjectId());
+                    specialGroup.setSubDeptId(proProjectInfoSubdeptsUsers.getSubDeptId());
+                    specialGroup.setSubDeptName(proProjectInfoSubdeptsUsers.getSubDeptName());
+                    specialGroup.setSubDeptType(proProjectInfoSubdeptsUsers.getSubDeptType());
+                    specialGroup.setGroupCode(DeptGroupEnums.SPECIAL.getCode());
+                    specialGroup.setGroupName(DeptGroupEnums.SPECIAL.getInfo());
+                    specialGroup.setCraftType(CraftTypeEnums.TSGZ.getCode());
+                    specialGroup.setGroupLeaderName(proProjectInfoSubdeptsUsers.getUserName());
+                    specialGroup.setGroupLeaderCode(proProjectInfoSubdeptsUsers.getCardCode());
+                    specialGroup.setGroupLeaderPhone(proProjectInfoSubdeptsUsers.getUserPhone());
+                    specialGroup.setUseStatus(UseStateEnums.AW.getCode());
+                    specialGroup.setApproveStatus(ApproveStatus.await.getCode());
+                    specialGroup.setCreateBy(DataSourceEnuns.APP.getInfo());
+                    specialGroup.setCreateTime(DateUtils.getNowDate());
+                    proProjectInfoSubdeptsGroupMapper.insertProProjectInfoSubdeptsGroup(specialGroup);
+                }
             }else if(Objects.equals(proProjectInfoSubdeptsUsers.getUserPost(), UserPostEnums.BZZ.getCode())){
                 // 班组长新增班组
                 ProProjectInfoSubdeptsGroup query = new ProProjectInfoSubdeptsGroup();
@@ -364,7 +397,7 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu
 
                 sysUser.setUserType(UserTypeEnums.FBBZZZ.getCode());
             }else if(Objects.equals(proProjectInfoSubdeptsUsers.getUserPost(), UserPostEnums.CLRY.getCode())){
-                //查询管理班组
+                // 查询管理班组
                 ProProjectInfoSubdeptsGroup query = new ProProjectInfoSubdeptsGroup();
                 query.setProjectId(parUsers.getProjectId());
                 query.setSubDeptId(parUsers.getSubDeptId());
@@ -375,10 +408,11 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu
                     proProjectInfoSubdeptsUsers.setSubDeptGroup(groups.get(0).getId());
                     proProjectInfoSubdeptsUsers.setSubDeptGroupName(groups.get(0).getGroupName());
                 }
-
+                proProjectInfoSubdeptsUsers.setCraftType(CraftTypeEnums.GLRY.getCode());
+                proProjectInfoSubdeptsUsers.setCraftPost(CraftPostEnums.CLZY.getCode());
                 sysUser.setUserType(UserTypeEnums.FBCLRY.getCode());
             }else if(Objects.equals(proProjectInfoSubdeptsUsers.getUserPost(), UserPostEnums.AQRY.getCode())){
-                //查询管理班组
+                // 查询管理班组
                 ProProjectInfoSubdeptsGroup query = new ProProjectInfoSubdeptsGroup();
                 query.setProjectId(parUsers.getProjectId());
                 query.setSubDeptId(parUsers.getSubDeptId());
@@ -389,8 +423,22 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu
                     proProjectInfoSubdeptsUsers.setSubDeptGroup(groups.get(0).getId());
                     proProjectInfoSubdeptsUsers.setSubDeptGroupName(groups.get(0).getGroupName());
                 }
-
+                proProjectInfoSubdeptsUsers.setCraftType(CraftTypeEnums.GLRY.getCode());
+                proProjectInfoSubdeptsUsers.setCraftPost(CraftPostEnums.AQZY.getCode());
                 sysUser.setUserType(UserTypeEnums.FBAQRY.getCode());
+            }else if(Objects.equals(proProjectInfoSubdeptsUsers.getUserPost(), UserPostEnums.TSGZ.getCode())){
+                // 查询特殊工种绑定班组信息
+                ProProjectInfoSubdeptsGroup query = new ProProjectInfoSubdeptsGroup();
+                query.setProjectId(parUsers.getProjectId());
+                query.setSubDeptId(parUsers.getSubDeptId());
+                query.setGroupCode(DeptGroupEnums.SPECIAL.getCode());
+                List<ProProjectInfoSubdeptsGroup> groups = proProjectInfoSubdeptsGroupMapper.selectProProjectInfoSubdeptsGroupList(query);
+
+                if(Objects.nonNull(groups) && groups.size()>0){
+                    proProjectInfoSubdeptsUsers.setSubDeptGroup(groups.get(0).getId());
+                    proProjectInfoSubdeptsUsers.setSubDeptGroupName(groups.get(0).getGroupName());
+                }
+                sysUser.setUserType(UserTypeEnums.FBLWRY.getCode());
             }else if(Objects.equals(proProjectInfoSubdeptsUsers.getUserPost(), UserPostEnums.LWGR.getCode())){
                 // 劳务人员绑定班组信息
                 proProjectInfoSubdeptsUsers.setSubDeptGroup(parUsers.getSubDeptGroup());
@@ -839,24 +887,6 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu
             }
         }
 
-        // 审核文件签名
-        String filePath = proProjectInfoSubdeptsUsers.getEduFilePath().replace(ProfileConfig.profile, ProfileConfig.profilePath);
-        BasSignet query = new BasSignet();
-        query.setProjectId(proProjectInfoSubdeptsUsers.getProjectId());
-        query.setUserId(SecurityUtils.getUserId());
-        List<BasSignet> signets = basSignetMapper.selectBasSignetList(query);
-        if(StringUtils.isEmpty(signets)){
-            throw new ServiceException("获取签名异常");
-        }
-        File pdfFile = org.apache.commons.io.FileUtils.getFile(filePath);
-        if (!pdfFile.getParentFile().exists()) {
-            boolean mkdirs = pdfFile.getParentFile().mkdirs();
-            log.info("创建目录...{}...{}",mkdirs,filePath);
-        }
-        String newFilePath = filePath.replace(".pdf","-c.pdf");
-        PdfImageSignetUtil.imageWaterMark(filePath, filePath, signets.get(0).getSignetPath().replace(ProfileConfig.profile, ProfileConfig.profilePath),SignetKeyEnums.COMPANY_SIGN.getCode());
-        proProjectInfoSubdeptsUsers.setEduFilePath(newFilePath);
-
         proProjectInfoSubdeptsUsers.setUseStatus(UseStateEnums.IN.getCode());
         proProjectInfoSubdeptsUsers.setApproveStatus(ApproveStatus.exempt.getCode());
         proProjectInfoSubdeptsUsersMapper.updateProProjectInfoSubdeptsUsers(proProjectInfoSubdeptsUsers);
@@ -872,22 +902,29 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu
     public void approveSubDeptsUserGroSign(Long id){
         ProProjectInfoSubdeptsUsers proProjectInfoSubdeptsUsers = proProjectInfoSubdeptsUsersMapper.selectProProjectInfoSubdeptsUsersById(id);
         String filePath = proProjectInfoSubdeptsUsers.getEduFilePath().replace(ProfileConfig.profile, ProfileConfig.profilePath);
-        BasSignet query = new BasSignet();
-        query.setProjectId(proProjectInfoSubdeptsUsers.getProjectId());
-        query.setUserId(SecurityUtils.getUserId());
-        List<BasSignet> signets = basSignetMapper.selectBasSignetList(query);
-        if(StringUtils.isEmpty(signets)){
-            throw new ServiceException("获取签名异常");
+
+        // 查询班组长签名
+        if(proProjectInfoSubdeptsUsers.getSubDeptGroup()!=null){
+            ProProjectInfoSubdeptsGroup group = proProjectInfoSubdeptsGroupMapper.selectProProjectInfoSubdeptsGroupById(proProjectInfoSubdeptsUsers.getSubDeptGroup());
+            if(group!=null && StringUtils.isNotEmpty(group.getGroupLeaderPhone())){
+                ProProjectInfoSubdeptsUsers userQuery = new ProProjectInfoSubdeptsUsers();
+                userQuery.setUserPhone(group.getGroupLeaderPhone());
+                userQuery.setProjectId(group.getProjectId());
+                List<ProProjectInfoSubdeptsUsers> users = proProjectInfoSubdeptsUsersMapper.selectProProjectInfoSubdeptsUsersList(userQuery);
+                if(StringUtils.isNotEmpty(users)){
+                    BasSignet query = new BasSignet();
+                    query.setProjectId(users.get(0).getProjectId());
+                    query.setUserId(users.get(0).getUserId());
+                    List<BasSignet> signets = basSignetMapper.selectBasSignetList(query);
+                    if(StringUtils.isNotEmpty(signets)){
+                        String newFilePath = filePath.replace(".pdf","-g.pdf");
+                        PdfImageSignetUtil.imageWaterMark(filePath, newFilePath, signets.get(0).getSignetPath().replace(ProfileConfig.profile, ProfileConfig.profilePath),SignetKeyEnums.GROUP_SIGN.getCode());
+                        proProjectInfoSubdeptsUsers.setEduFilePath(newFilePath.replace(ProfileConfig.profilePath,ProfileConfig.profile));
+                        proProjectInfoSubdeptsUsersMapper.updateProProjectInfoSubdeptsUsers(proProjectInfoSubdeptsUsers);
+                    }
+                }
+            }
         }
-        File pdfFile = org.apache.commons.io.FileUtils.getFile(filePath);
-        if (!pdfFile.getParentFile().exists()) {
-            boolean mkdirs = pdfFile.getParentFile().mkdirs();
-            log.info("创建目录...{}...{}",mkdirs,filePath);
-        }
-        String newFilePath = filePath.replace(".pdf","-g.pdf");
-        PdfImageSignetUtil.imageWaterMark(filePath, newFilePath, signets.get(0).getSignetPath().replace(ProfileConfig.profile, ProfileConfig.profilePath),SignetKeyEnums.GROUP_SIGN.getCode());
-        proProjectInfoSubdeptsUsers.setEduFilePath(newFilePath);
-        proProjectInfoSubdeptsUsersMapper.updateProProjectInfoSubdeptsUsers(proProjectInfoSubdeptsUsers);
     }
 
     /**
@@ -898,22 +935,56 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu
     public void approveSubDeptsUserProSign(Long id){
         ProProjectInfoSubdeptsUsers proProjectInfoSubdeptsUsers = proProjectInfoSubdeptsUsersMapper.selectProProjectInfoSubdeptsUsersById(id);
         String filePath = proProjectInfoSubdeptsUsers.getEduFilePath().replace(ProfileConfig.profile, ProfileConfig.profilePath);
-        BasSignet query = new BasSignet();
-        query.setProjectId(proProjectInfoSubdeptsUsers.getProjectId());
-        query.setUserId(SecurityUtils.getUserId());
-        List<BasSignet> signets = basSignetMapper.selectBasSignetList(query);
-        if(StringUtils.isEmpty(signets)){
-            throw new ServiceException("获取签名异常");
+        ProProjectInfoSubdeptsUsers userQuery = new ProProjectInfoSubdeptsUsers();
+        userQuery.setWorkType(18L);
+        userQuery.setProjectId(proProjectInfoSubdeptsUsers.getProjectId());
+        List<ProProjectInfoSubdeptsUsers> users = proProjectInfoSubdeptsUsersMapper.selectProProjectInfoSubdeptsUsersList(userQuery);
+        if(StringUtils.isNotEmpty(users)){
+            BasSignet query = new BasSignet();
+            query.setProjectId(users.get(0).getProjectId());
+            query.setUserId(users.get(0).getUserId());
+            List<BasSignet> signets = basSignetMapper.selectBasSignetList(query);
+            if(StringUtils.isNotEmpty(signets)){
+                String newFilePath = filePath.replace(".pdf","-p.pdf");
+                PdfImageSignetUtil.imageWaterMark(filePath, newFilePath, signets.get(0).getSignetPath().replace(ProfileConfig.profile, ProfileConfig.profilePath),SignetKeyEnums.PROJECT_SIGN.getCode());
+                proProjectInfoSubdeptsUsers.setEduFilePath(newFilePath.replace(ProfileConfig.profilePath,ProfileConfig.profile));
+                proProjectInfoSubdeptsUsersMapper.updateProProjectInfoSubdeptsUsers(proProjectInfoSubdeptsUsers);
+            }
         }
-        File pdfFile = org.apache.commons.io.FileUtils.getFile(filePath);
-        if (!pdfFile.getParentFile().exists()) {
-            boolean mkdirs = pdfFile.getParentFile().mkdirs();
-            log.info("创建目录...{}...{}",mkdirs,filePath);
+    }
+
+    /**
+     * 公司安全承诺书文件签名章
+     * @param id
+     */
+    @Override
+    public void approveSubDeptsUserComSign(Long id){
+        // 审核文件签名
+        ProProjectInfoSubdeptsUsers proProjectInfoSubdeptsUsers = proProjectInfoSubdeptsUsersMapper.selectProProjectInfoSubdeptsUsersById(id);
+        String filePath = proProjectInfoSubdeptsUsers.getEduFilePath().replace(ProfileConfig.profile, ProfileConfig.profilePath);
+        ProProjectInfoSubdeptsUsers userQuery = new ProProjectInfoSubdeptsUsers();
+        userQuery.setWorkType(18L);
+        userQuery.setProjectId(proProjectInfoSubdeptsUsers.getProjectId());
+        List<ProProjectInfoSubdeptsUsers> users = proProjectInfoSubdeptsUsersMapper.selectProProjectInfoSubdeptsUsersList(userQuery);
+        if(StringUtils.isNotEmpty(users)){
+            BasSignet query = new BasSignet();
+            query.setProjectId(users.get(0).getProjectId());
+            query.setUserId(users.get(0).getUserId());
+            List<BasSignet> signets = basSignetMapper.selectBasSignetList(query);
+            if(StringUtils.isNotEmpty(signets)){
+                String newFilePath = filePath.replace(".pdf","-c.pdf");
+                PdfImageSignetUtil.imageWaterMark(filePath, newFilePath, signets.get(0).getSignetPath().replace(ProfileConfig.profile, ProfileConfig.profilePath),SignetKeyEnums.PROJECT_SIGN.getCode());
+                proProjectInfoSubdeptsUsers.setEduFilePath(newFilePath.replace(ProfileConfig.profilePath,ProfileConfig.profile));
+                proProjectInfoSubdeptsUsersMapper.updateProProjectInfoSubdeptsUsers(proProjectInfoSubdeptsUsers);
+            }
         }
-        String newFilePath = filePath.replace(".pdf","-p.pdf");
-        PdfImageSignetUtil.imageWaterMark(filePath, filePath, signets.get(0).getSignetPath().replace(ProfileConfig.profile, ProfileConfig.profilePath),SignetKeyEnums.PROJECT_SIGN.getCode());
-        proProjectInfoSubdeptsUsers.setEduFilePath(newFilePath);
-        proProjectInfoSubdeptsUsersMapper.updateProProjectInfoSubdeptsUsers(proProjectInfoSubdeptsUsers);
+    }
+
+    public static void main(String[] args) {
+        String path = "D:\\meta\\test.pdf";
+        String newPath = path.replace(".pdf","-c.pdf");;
+        String signPath = "D:\\meta\\sign.png.v1.png";
+        PdfImageSignetUtil.imageWaterMark(path, newPath, signPath, SignetKeyEnums.PROJECT_SIGN.getCode());
     }
 
     /**
diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/utils/pdf/PdfImageSignetUtil.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/utils/pdf/PdfImageSignetUtil.java
index a57b58d3..59d27247 100644
--- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/utils/pdf/PdfImageSignetUtil.java
+++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/utils/pdf/PdfImageSignetUtil.java
@@ -127,26 +127,7 @@ public class PdfImageSignetUtil {
             pdfReader = new PdfReader(srcPdfPath);
             FileOutputStream out = org.apache.commons.io.FileUtils.openOutputStream(org.apache.commons.io.FileUtils.getFile(newPdfPath));
             pdfStamper = new PdfStamper(pdfReader, out);
-            BufferedImage bufferedImage = ImageIO.read(org.apache.commons.io.FileUtils.getFile(imagePath));
-            // 这里裁剪图片可能报错,报错用原图
-            int[] array = bufferedImageToIntArray(bufferedImage,bufferedImage.getWidth(),bufferedImage.getHeight());
-            // blank是作为四周边距留白
-            int blank = 20;
-            boolean cutResult = false;
-            try {
-                // 图片裁剪
-                ImgUtil.cut(FileUtil.file(imagePath),
-                        FileUtil.file(imagePath + ".v1.png"), new Rectangle(array[0]-blank,array[1]-blank,array[2]+blank*2, array[3]+blank*2));
-                cutResult = true;
-            }catch (Exception ex){
-                log.error("图片裁剪发生未知异常:" + ex);
-            }
-            // 图片压缩
-            // ImgUtil.scale(FileUtil.file(cutResult?(imagePath + ".v0.png"):imagePath),
-            //         FileUtil.file(imagePath + ".v1.png"), (float) (60.0/bufferedImage.getWidth()));
-            // 图片旋转
-            ImgUtil.rotate(FileUtil.file(cutResult?(imagePath + ".v1.png"):imagePath),270,FileUtil.file(imagePath + ".v2.png"));
-            Image qrcodeImage = Image.getInstance(imagePath+".v2.png");
+            Image qrcodeImage = Image.getInstance(imagePath);
             //设置图片宽高
             qrcodeImage.scaleToFit(qrcodeImage.getWidth()/20, qrcodeImage.getHeight()/20);
             for(int i=0;i<list.size();i++){
diff --git a/yanzhu-ui-app/miniprogram/pages/login/login.wxml b/yanzhu-ui-app/miniprogram/pages/login/login.wxml
index 5bb7b31f..18bda77e 100644
--- a/yanzhu-ui-app/miniprogram/pages/login/login.wxml
+++ b/yanzhu-ui-app/miniprogram/pages/login/login.wxml
@@ -1,6 +1,6 @@
 <!--pages/login/login.wxml-->
 <view class="login_logo">
-  <image src="https://xiangguan.sxyanzhu.com/profile/xmgl/static/sys_logo.png"></image>
+  <image wx:if="false" src="https://xiangguan.sxyanzhu.com/profile/xmgl/static/sys_logo.png"></image>
 </view>
 <view class="login_title">
   <text>数字工程项目管理系统</text>
diff --git a/yanzhu-ui-app/miniprogram/pages/login/login.wxss b/yanzhu-ui-app/miniprogram/pages/login/login.wxss
index 23e6cb5e..1e4c84bd 100644
--- a/yanzhu-ui-app/miniprogram/pages/login/login.wxss
+++ b/yanzhu-ui-app/miniprogram/pages/login/login.wxss
@@ -6,6 +6,7 @@ page {
 .login_logo {
   text-align: center;
   padding: 50rpx 0rpx;
+  height: 120rpx;
 }
 
 .login_logo image {
diff --git a/yanzhu-ui-app/miniprogram/pages/project_flowable/approveTask/index.wxml b/yanzhu-ui-app/miniprogram/pages/project_flowable/approveTask/index.wxml
index d4d215b1..1fd7ea9c 100644
--- a/yanzhu-ui-app/miniprogram/pages/project_flowable/approveTask/index.wxml
+++ b/yanzhu-ui-app/miniprogram/pages/project_flowable/approveTask/index.wxml
@@ -70,7 +70,7 @@
         <view class="module_title module_title_padding">
             <view>{{subDeptData.projectName}}</view>
         </view>
-        <view class="inspect_info" wx:if="{{options.category=='1' || options.category=='2' || options.category=='3' || options.category=='4' || options.category=='6' || options.category=='8'}}">
+        <view class="inspect_info" wx:if="{{options.category=='1' || options.category=='2' || options.category=='3' || options.category=='4' || options.category=='5' || options.category=='6' || options.category=='8'}}">
             <view class="inspect_overview_list">
                 <van-row>
                     <van-col span="8"><text class="color_purple">项目单位</text></van-col>
@@ -230,7 +230,7 @@
                     </van-col>
                 </van-row>
             </view>
-            <view class="inspect_overview_list" wx:if="{{options.category!='4'}}">
+            <view class="inspect_overview_list" wx:if="{{options.category!='3' && options.category!='4' && options.category!='5'}}">
                 <van-row>
                     <van-col span="8"><text class="color_purple">单位委托书</text></van-col>
                     <van-col span="16">
@@ -260,19 +260,19 @@
                     <van-col span="16">{{subDeptUserData.userInfos.contactPhone}}</van-col>
                 </van-row>
             </view>
-            <view class="inspect_overview_list" wx:if="{{options.category=='4'}}">
+            <view class="inspect_overview_list" wx:if="{{options.category=='3' || options.category=='4' || options.category=='5'}}">
                 <van-row>
                     <van-col span="8"><text class="color_purple">开户行名称</text></van-col>
                     <van-col span="16">{{subDeptUserData.userInfos.bankName}}</van-col>
                 </van-row>
             </view>
-            <view class="inspect_overview_list" wx:if="{{options.category=='4'}}">
+            <view class="inspect_overview_list" wx:if="{{options.category=='3' || options.category=='4' || options.category=='5'}}">
                 <van-row>
                     <van-col span="8"><text class="color_purple">开户行网点</text></van-col>
                     <van-col span="16">{{subDeptUserData.userInfos.bankOffice}}</van-col>
                 </van-row>
             </view>
-            <view class="inspect_overview_list" wx:if="{{options.category=='4'}}">
+            <view class="inspect_overview_list" wx:if="{{options.category=='3' || options.category=='4' || options.category=='5'}}">
                 <van-row>
                     <van-col span="8"><text class="color_purple">工资银行卡号</text></van-col>
                     <van-col span="16">{{subDeptUserData.userInfos.bankCardNo}}</van-col>
diff --git a/yanzhu-ui-app/miniprogram/pages/project_flowable/detailTask/index.wxml b/yanzhu-ui-app/miniprogram/pages/project_flowable/detailTask/index.wxml
index 11973afc..5c50e6b9 100644
--- a/yanzhu-ui-app/miniprogram/pages/project_flowable/detailTask/index.wxml
+++ b/yanzhu-ui-app/miniprogram/pages/project_flowable/detailTask/index.wxml
@@ -70,7 +70,7 @@
         <view class="module_title module_title_padding">
             <view>{{subDeptData.projectName}}</view>
         </view>
-        <view class="inspect_info" wx:if="{{options.category=='1' || options.category=='2' || options.category=='3' || options.category=='4' || options.category=='6' || options.category=='8'}}">
+        <view class="inspect_info" wx:if="{{options.category=='1' || options.category=='2' || options.category=='3' || options.category=='4' || options.category=='5' || options.category=='6' || options.category=='8'}}">
             <view class="inspect_overview_list">
                 <van-row>
                     <van-col span="8"><text class="color_purple">项目单位</text></van-col>
@@ -230,7 +230,7 @@
                     </van-col>
                 </van-row>
             </view>
-            <view class="inspect_overview_list" wx:if="{{options.category!='4'}}">
+            <view class="inspect_overview_list" wx:if="{{options.category!='3' && options.category!='4' && options.category!='5'}}">
                 <van-row>
                     <van-col span="8"><text class="color_purple">单位委托书</text></van-col>
                     <van-col span="16">
@@ -260,19 +260,19 @@
                     <van-col span="16">{{subDeptUserData.userInfos.contactPhone}}</van-col>
                 </van-row>
             </view>
-            <view class="inspect_overview_list" wx:if="{{options.category=='4'}}">
+            <view class="inspect_overview_list" wx:if="{{options.category=='3' || options.category=='4' || options.category=='5'}}">
                 <van-row>
                     <van-col span="8"><text class="color_purple">开户行名称</text></van-col>
                     <van-col span="16">{{subDeptUserData.userInfos.bankName}}</van-col>
                 </van-row>
             </view>
-            <view class="inspect_overview_list" wx:if="{{options.category=='4'}}">
+            <view class="inspect_overview_list" wx:if="{{options.category=='3' || options.category=='4' || options.category=='5'}}">
                 <van-row>
                     <van-col span="8"><text class="color_purple">开户行网点</text></van-col>
                     <van-col span="16">{{subDeptUserData.userInfos.bankOffice}}</van-col>
                 </van-row>
             </view>
-            <view class="inspect_overview_list" wx:if="{{options.category=='4'}}">
+            <view class="inspect_overview_list" wx:if="{{options.category=='3' || options.category=='4' || options.category=='5'}}">
                 <van-row>
                     <van-col span="8"><text class="color_purple">工资银行卡号</text></van-col>
                     <van-col span="16">{{subDeptUserData.userInfos.bankCardNo}}</van-col>
diff --git a/yanzhu-ui-app/miniprogram/pages/project_info/index.js b/yanzhu-ui-app/miniprogram/pages/project_info/index.js
index f19e7f75..2631e2f5 100644
--- a/yanzhu-ui-app/miniprogram/pages/project_info/index.js
+++ b/yanzhu-ui-app/miniprogram/pages/project_info/index.js
@@ -356,7 +356,7 @@ Page({
                 subDeptUserInfo: res.data[0]
             });
              //劳务人员信息
-             if ((app.globalData.subDeptUserData.subDeptType=='1' || app.globalData.subDeptUserData.subDeptType=='4' || app.globalData.subDeptUserData.subDeptType=='5') && app.globalData.subDeptUserData.userPost != '4' && app.globalData.subDeptUserData.userPost != '6' && app.globalData.subDeptUserData.userPost != '8') {
+             if ((app.globalData.subDeptUserData.subDeptType=='1' || app.globalData.subDeptUserData.subDeptType=='4' || app.globalData.subDeptUserData.subDeptType=='5') && app.globalData.subDeptUserData.userPost != '4' && app.globalData.subDeptUserData.userPost != '5' && app.globalData.subDeptUserData.userPost != '6' && app.globalData.subDeptUserData.userPost != '8') {
                 //统计劳务人员信息
                 this.getSubDeptsUsers(app.globalData.useProjectId);
                 this.initSubDeptDaysCharts(app.globalData.useProjectId);
@@ -367,7 +367,7 @@ Page({
                 this.getSubDeptsAttendanceView(app.globalData.useProjectId);
             }
             //人员出勤信息
-            if (app.globalData.subDeptUserData.userPost == '4' || app.globalData.subDeptUserData.userPost == '6' || app.globalData.subDeptUserData.userPost == '8') {
+            if (app.globalData.subDeptUserData.userPost == '4' || app.globalData.subDeptUserData.userPost == '5' || app.globalData.subDeptUserData.userPost == '6' || app.globalData.subDeptUserData.userPost == '8') {
                 //统计劳务人员信息
                 this.getUsersAttendanceView(app.globalData.useProjectId);
             }
diff --git a/yanzhu-ui-app/miniprogram/pages/project_info/index.wxml b/yanzhu-ui-app/miniprogram/pages/project_info/index.wxml
index d99cd4f7..70205925 100644
--- a/yanzhu-ui-app/miniprogram/pages/project_info/index.wxml
+++ b/yanzhu-ui-app/miniprogram/pages/project_info/index.wxml
@@ -143,7 +143,7 @@
 			</view>
 		</view>
 	</view>
-	<view class="echarts_max bt30" wx:if="{{(subDeptUserInfo.subDeptType=='4' || subDeptUserInfo.subDeptType=='5') && subDeptUserInfo.userPost!='4' && subDeptUserInfo.userPost!='6' && subDeptUserInfo.userPost!='8'}}">
+	<view class="echarts_max bt30" wx:if="{{(subDeptUserInfo.subDeptType=='4' || subDeptUserInfo.subDeptType=='5') && subDeptUserInfo.userPost!='4' && subDeptUserInfo.userPost!='5' && subDeptUserInfo.userPost!='6' && subDeptUserInfo.userPost!='8'}}">
 		<view class="echarts_min">
 			<view class="eharts_title module_title_flex">
 				我的二维码
@@ -177,7 +177,7 @@
 		</view>
 	</view>
 
-	<view class="echarts_max" wx:if="{{subDeptUserInfo.userPost=='4' || subDeptUserInfo.userPost=='6' || subDeptUserInfo.userPost=='8'}}">
+	<view class="echarts_max" wx:if="{{subDeptUserInfo.userPost=='4' || subDeptUserInfo.userPost=='5' || subDeptUserInfo.userPost=='6' || subDeptUserInfo.userPost=='8'}}">
 		<view class="echarts_min">
 			<view class="eharts_title module_title_flex">
 				最近出勤
@@ -235,7 +235,7 @@
 </view>
 
 <!-- 底部导航 -->
-<van-tabbar wx:if="{{subDeptUserInfo.userPost!='4' && subDeptUserInfo.userPost!='6' && subDeptUserInfo.userPost!='8'}}" active="{{ active }}" bind:change="onChange" active-color="#ffffff" inactive-color="#7d95d6">
+<van-tabbar wx:if="{{subDeptUserInfo.userPost!='4' && subDeptUserInfo.userPost!='5' && subDeptUserInfo.userPost!='6' && subDeptUserInfo.userPost!='8'}}" active="{{ active }}" bind:change="onChange" active-color="#ffffff" inactive-color="#7d95d6">
 	<van-tabbar-item>
 		<image slot="icon" src="/images/footer_5.png" mode="aspectFit" style="width:40rpx; height: 40rpx;" />
 		<image slot="icon-active" src="/images/foot_5.png" mode="aspectFit" style="width:40rpx; height: 40rpx;" />
diff --git a/yanzhu-ui-app/miniprogram/pages/project_more/index.wxml b/yanzhu-ui-app/miniprogram/pages/project_more/index.wxml
index bf63bb4c..7c665c39 100644
--- a/yanzhu-ui-app/miniprogram/pages/project_more/index.wxml
+++ b/yanzhu-ui-app/miniprogram/pages/project_more/index.wxml
@@ -33,7 +33,7 @@
   </view>
 </view>
 
-<van-tabbar wx:if="{{subDeptUserInfo.userPost!='4'}}" active="{{ active }}" bind:change="onChange" active-color="#ffffff" inactive-color="#7d95d6">
+<van-tabbar wx:if="{{subDeptUserInfo.userPost!='3' && subDeptUserInfo.userPost!='4' && subDeptUserInfo.userPost!='5'}}" active="{{ active }}" bind:change="onChange" active-color="#ffffff" inactive-color="#7d95d6">
   <van-tabbar-item bindtap="XMGK">
     <image
       slot="icon"
diff --git a/yanzhu-ui-app/miniprogram/pages/project_qr/index.js b/yanzhu-ui-app/miniprogram/pages/project_qr/index.js
index 44de4db6..40fee9b3 100644
--- a/yanzhu-ui-app/miniprogram/pages/project_qr/index.js
+++ b/yanzhu-ui-app/miniprogram/pages/project_qr/index.js
@@ -164,6 +164,10 @@ Page({
             "id": "3",
             "text": "班组长"
           });
+          _userPostList.push({
+            "id": "5",
+            "text": "特殊工种"
+          });
           _userPostList.push({
             "id": "6",
             "text": "材料员"
@@ -204,26 +208,36 @@ Page({
   getDictCache(signId) {
     if (signId == '3') {
       // 初始化工种类型
-      findDictCache("pro_craft_type").then(res => {
+      // findDictCache("pro_craft_type").then(res => {
+      //   if (res.code == 200) {
+      //     let craftTypeList = [];
+      //     res.data.forEach(item => {
+      //       if (item.dictValue != "3") {
+      //         craftTypeList.push({
+      //           "id": item.dictValue,
+      //           "text": item.dictLabel
+      //         });
+      //       }
+      //     })
+      //     this.setData({
+      //       craftTypeList
+      //     });
+      //   }
+      // })
+      // 初始化工种岗位
+      findDictCache("pro_craft_post").then(res => {
         if (res.code == 200) {
-          let craftTypeList = [];
+          let list = [];
           res.data.forEach(item => {
-            if (item.dictValue != "3") {
-              craftTypeList.push({
+            if (item.cssClass == '1') {
+              list.push({
                 "id": item.dictValue,
                 "text": item.dictLabel
               });
             }
-          })
-          this.setData({
-            craftTypeList
           });
-        }
-      })
-      // 初始化工种岗位
-      findDictCache("pro_craft_post").then(res => {
-        if (res.code == 200) {
           this.setData({
+            craftPostList:list,
             craftPostAllOrginList: res.data
           });
         }
@@ -1110,8 +1124,41 @@ Page({
    */
   onChageUserPost(e) {
     this.setData({
-      "form.userPost": e.detail.id
+      userPost:e.detail.id,
+      "form.userPost": e.detail.id,
+      "form.craftPost": null
     })
+    if(e.detail.id=='3'){
+      let craftPostList = [];
+      this.data.craftPostAllOrginList.forEach(item => {
+        if (item.cssClass == '1') {
+          craftPostList.push({
+            "id": item.dictValue,
+            "text": item.dictLabel
+          });
+        }
+      })
+      this.setData({
+        craftPostList,
+        "form.craftType": '1',
+        "form.craftPost": null
+      })
+    } else if(e.detail.id=='5'){
+      let craftPostList = [];
+      this.data.craftPostAllOrginList.forEach(item => {
+        if (item.cssClass == '2') {
+          craftPostList.push({
+            "id": item.dictValue,
+            "text": item.dictLabel
+          });
+        }
+      })
+      this.setData({
+        craftPostList,
+        "form.craftType": '2',
+        "form.craftPost": null
+      })
+    }
   },
 
   /**
@@ -1546,11 +1593,11 @@ Page({
       userPost
     } = this.data;
     //数据效验
-    if (userPost == '3' || userPost == '6' || userPost == '8') {
-      if (!form.craftType) {
-        app.toast("请选择工种类型!");
-        return false;
-      }
+    if (userPost == '3' || userPost == '5') {
+      // if (!form.craftType) {
+      //   app.toast("请选择工种类型!");
+      //   return false;
+      // }
       if (!form.craftPost) {
         app.toast("请选择工种岗位!");
         return false;
diff --git a/yanzhu-ui-app/miniprogram/pages/project_qr/index.wxml b/yanzhu-ui-app/miniprogram/pages/project_qr/index.wxml
index 470d39c6..bdffb60b 100644
--- a/yanzhu-ui-app/miniprogram/pages/project_qr/index.wxml
+++ b/yanzhu-ui-app/miniprogram/pages/project_qr/index.wxml
@@ -1,7 +1,7 @@
 <!-- 游客一键登录 -->
 <view wx:if="{{!userPhoneNumber}}" class="page">
     <view class="login_logo">
-        <image src="https://xiangguan.sxyanzhu.com/profile/xmgl/static/sys_logo.png"></image>
+        <image wx:if="{{false}}" src="https://xiangguan.sxyanzhu.com/profile/xmgl/static/sys_logo.png"></image>
     </view>
     <view class="login_title">
         <text>数字工程项目管理系统</text>
@@ -284,7 +284,7 @@
         </view>
     </view>
 
-    <view wx:if="{{userPost=='3' || userPost=='6' || userPost=='8'}}">
+    <view wx:if="{{userPost=='3' || userPost=='5' || userPost=='6' || userPost=='8'}}">
         <view class="header_title">
             <view class="header_title_row">
                 <view class="header_name">{{title}}</view>
@@ -306,17 +306,17 @@
                         <voucher-select columns="{{userPostList}}" placeholder="请选择岗位级别" bindchange="onChageUserPost" selectValue="{{form.userPost}}"></voucher-select>
                     </view>
                 </view>
-                <view class="inspect_info_list">
-                    <view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">班组工种</view>
+                <view class="inspect_info_list" wx:if="{{ userPost=='3' || userPost=='5' }}">
+                    <view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">岗位工种</view>
                     <view class="inspect_info_content">
-                        <van-row>
+                        <!-- <van-row>
                             <van-col span="8">
                                 <voucher-select columns="{{craftTypeList}}" bindchange="onChageCraftType" placeholder="请选择工种类型" selectValue="{{form.craftType}}"></voucher-select>
                             </van-col>
-                            <van-col span="16">
+                            <van-col span="16"> -->
                                 <voucher-select columns="{{craftPostList}}" bindchange="onChageCraftPost" placeholder="请选择工种岗位" selectValue="{{form.craftPost}}"></voucher-select>
-                            </van-col>
-                        </van-row>
+                            <!-- </van-col>
+                        </van-row> -->
                     </view>
                 </view>
                 <view class="inspect_info_list" wx:if="{{false}}">
@@ -357,7 +357,7 @@
                         <file-uploader bindimages="fileUploadUserPicture" limit="{{limit}}" fileUrlArray="{{form.userPicture}}"></file-uploader>
                     </view>
                 </view>
-                <view class="inspect_info_list" wx:if="userPost=='6'">
+                <view class="inspect_info_list" wx:if="{{userPost=='6'}}">
                     <view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">劳务单位委托书
                         <text style="font-size: small; color: antiquewhite;">[需加盖劳务单位的公章委托书照片]</text>
                     </view>
@@ -407,6 +407,26 @@
                         <input placeholder="请填写紧急联系人电话" placeholder-style="color:#6777aa;" bindinput="inputUrgentUserPhone" class="inspect_input_fill_in" maxlength="30" model:value="{{form.contactPhone}}" />
                     </view>
                 </view>
+                <view class="inspect_info_list" wx:if="{{userPost=='5'}}">
+                    <view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">开户银行名称</view>
+                    <view class="inspect_info_content">
+                        <input placeholder="请填写开户银行名称" placeholder-style="color:#6777aa;" bindinput="inputBankName" class="inspect_input_fill_in" maxlength="30" model:value="{{form.bankName}}" />
+                    </view>
+                </view>
+                <view class="inspect_info_list" wx:if="{{userPost=='5'}}">
+                    <view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">开户银行网点
+                        <text style="font-size: small; color: antiquewhite;">[开户银行地址]</text>
+                    </view>
+                    <view class="inspect_info_content">
+                        <input placeholder="请填写开户银行网点" placeholder-style="color:#6777aa;" bindinput="inputBankOffice" class="inspect_input_fill_in" maxlength="30" model:value="{{form.bankOffice}}" />
+                    </view>
+                </view>
+                <view class="inspect_info_list" wx:if="{{userPost=='5'}}">
+                    <view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">工资银行卡号</view>
+                    <view class="inspect_info_content">
+                        <input placeholder="请填写工资银行卡号" placeholder-style="color:#6777aa;" bindinput="inputBankCardNo" class="inspect_input_fill_in" maxlength="30" model:value="{{form.bankCardNo}}" />
+                    </view>
+                </view>
                 <view class="inspect_info_list">
                     <view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">文化程度</view>
                     <view class="inspect_info_content">
diff --git a/yanzhu-ui-app/miniprogram/pages/project_qr/index.wxss b/yanzhu-ui-app/miniprogram/pages/project_qr/index.wxss
index f5f46cc1..6e0cebb8 100644
--- a/yanzhu-ui-app/miniprogram/pages/project_qr/index.wxss
+++ b/yanzhu-ui-app/miniprogram/pages/project_qr/index.wxss
@@ -7,6 +7,7 @@
 .login_logo {
   text-align: center;
   padding: 50rpx 0rpx;
+  height: 120rpx;
 }
 
 .login_logo image {
diff --git a/yanzhu-ui-app/miniprogram/project.private.config.json b/yanzhu-ui-app/miniprogram/project.private.config.json
index eec34099..cef99850 100644
--- a/yanzhu-ui-app/miniprogram/project.private.config.json
+++ b/yanzhu-ui-app/miniprogram/project.private.config.json
@@ -11,7 +11,7 @@
                 {
                     "name": "pages/project_qr/index",
                     "pathName": "pages/project_qr/index",
-                    "query": "QRPID=132&SIGID=4&PARID=40",
+                    "query": "QRPID=132&SIGID=1",
                     "launchMode": "default",
                     "scene": null
                 },
diff --git a/yanzhu-ui-vue3/src/views/flowable/task/myProcess/detail/indexDrawer.vue b/yanzhu-ui-vue3/src/views/flowable/task/myProcess/detail/indexDrawer.vue
index 5cdec0a0..e0fefe1b 100644
--- a/yanzhu-ui-vue3/src/views/flowable/task/myProcess/detail/indexDrawer.vue
+++ b/yanzhu-ui-vue3/src/views/flowable/task/myProcess/detail/indexDrawer.vue
@@ -135,7 +135,7 @@
                         </el-form-item>
                     </el-form>
                 </el-tab-pane>
-                <el-tab-pane label="人员信息" name="users" v-if="dataOptions.category=='1' || dataOptions.category=='2' || dataOptions.category=='3' || dataOptions.category=='4'">
+                <el-tab-pane label="人员信息" name="users" v-if="dataOptions.category=='1' || dataOptions.category=='2' || dataOptions.category=='3' || dataOptions.category=='4' || dataOptions.category=='5' || dataOptions.category=='6' || dataOptions.category=='8'">
                     <el-form label-width="100px" size="small" >
                         <el-form-item label="代理人身份证" v-if="dataOptions.category=='1'">
                             <ImagePreview :src="initData.userInfos.cardImgPos" :width="120" :height="70"/>
@@ -144,7 +144,7 @@
                         <el-form-item label="入场肖像近照" v-if="dataOptions.category=='1'">
                             <ImagePreview :src="initData.userPicture" :width="120" :height="70"/>
                         </el-form-item>
-                        <el-form-item label="单位委托证明" v-if="dataOptions.category!='4'">
+                        <el-form-item label="单位委托证明" v-if="dataOptions.category!='3' && dataOptions.category!='4' && dataOptions.category!='5' && dataOptions.category!='8'">
                             <ImagePreview :src="initData.subDeptPowerPath" :width="120" :height="70"/>
                         </el-form-item>
                         <el-form-item label="委托人姓名" v-if="dataOptions.category=='1'">
@@ -478,7 +478,7 @@
       /** 获取表单数据 */
       const initFormValues = () => {
         let category = parseInt(dataOptions.value.category);
-        if(category==1 || category==2 || category==3 || category==4){
+        if(category==1 || category==2 || category==3 || category==4 || category==5 || category==6 || category==8){
             getProProjectInfoSubdeptsUsers(dataOptions.value.businessKey).then(res =>{
                 if(res.data.userInfos){
                     res.data.userInfos = JSON.parse(res.data.userInfos);
diff --git a/yanzhu-ui-vue3/src/views/flowable/task/todo/detail/indexDrawer.vue b/yanzhu-ui-vue3/src/views/flowable/task/todo/detail/indexDrawer.vue
index 9643a980..0234e93a 100644
--- a/yanzhu-ui-vue3/src/views/flowable/task/todo/detail/indexDrawer.vue
+++ b/yanzhu-ui-vue3/src/views/flowable/task/todo/detail/indexDrawer.vue
@@ -135,7 +135,7 @@
                         </el-form-item>
                     </el-form>
                 </el-tab-pane>
-                <el-tab-pane label="人员信息" name="users" v-if="dataOptions.category=='1' || dataOptions.category=='2' || dataOptions.category=='3' || dataOptions.category=='4'">
+                <el-tab-pane label="人员信息" name="users" v-if="dataOptions.category=='1' || dataOptions.category=='2' || dataOptions.category=='3' || dataOptions.category=='4' || dataOptions.category=='5'  || dataOptions.category=='6'  || dataOptions.category=='8'">
                     <el-form label-width="100px" size="small" >
                         <el-form-item label="代理人身份证" v-if="dataOptions.category=='1'">
                             <ImagePreview :src="initData.userInfos.cardImgPos" :width="120" :height="70"/>
@@ -144,7 +144,7 @@
                         <el-form-item label="入场肖像近照" v-if="dataOptions.category=='1'">
                             <ImagePreview :src="initData.userPicture" :width="120" :height="70"/>
                         </el-form-item>
-                        <el-form-item label="单位委托证明" v-if="dataOptions.category!='4'">
+                        <el-form-item label="单位委托证明" v-if="dataOptions.category!='3' && dataOptions.category!='4' && dataOptions.category!='5' && dataOptions.category!='8'">
                             <ImagePreview :src="initData.subDeptPowerPath" :width="120" :height="70"/>
                         </el-form-item>
                         <el-form-item label="委托人姓名" v-if="dataOptions.category=='1'">
@@ -207,7 +207,7 @@
                         </el-form-item>
                     </el-form>
                 </el-tab-pane>
-                <el-tab-pane label="视频培训" name="video" v-if="dataOptions.category=='1' || dataOptions.category=='2' || dataOptions.category=='3' || dataOptions.category=='4'">
+                <el-tab-pane label="视频培训" name="video" v-if="dataOptions.category=='1' || dataOptions.category=='2' || dataOptions.category=='3' || dataOptions.category=='4'  || dataOptions.category=='5' || dataOptions.category=='46'  || dataOptions.category=='8'">
                     <el-table :data="userEduVideoList">
                         <el-table-column label="播放时间" align="center" prop="playDates" width="180">
                             <template #default="scope">
@@ -224,7 +224,7 @@
                         <el-table-column label="培训级别" align="center" prop="trainLevelName"/>
                     </el-table>
                 </el-tab-pane>
-                <el-tab-pane label="考试情况" name="exams" v-if="dataOptions.category=='1' || dataOptions.category=='2' || dataOptions.category=='3' || dataOptions.category=='4'">
+                <el-tab-pane label="考试情况" name="exams" v-if="dataOptions.category=='1' || dataOptions.category=='2' || dataOptions.category=='3' || dataOptions.category=='4' || dataOptions.category=='5' || dataOptions.category=='6' || dataOptions.category=='8'">
                     <el-row class="task_panel">
                         <el-col :span="6">
                             <el-statistic class="statistic_div">
@@ -621,7 +621,7 @@
       /** 获取表单数据 */
       const initFormValues = () => {
         let category = parseInt(dataOptions.value.category);
-        if(category==1 || category==2 || category==3 || category==4){
+        if(category==1 || category==2 || category==3 || category==4 || category==5 || category==6 || category==8){
             getProProjectInfoSubdeptsUsers(dataOptions.value.businessKey).then(res =>{
                 if(res.data.userInfos){
                     res.data.userInfos = JSON.parse(res.data.userInfos);