JiangPengLi vor 2 Monaten
Ursprung
Commit
58709df058
14 geänderte Dateien mit 1391 neuen und 67 gelöschten Zeilen
  1. 1 1
      projects-service/src/main/java/com/rtrh/projects/modules/projects/enums/SubInfoStatusEnum.java
  2. 2 1
      projects-service/src/main/java/com/rtrh/projects/modules/projects/mapper/SubCameraMapper.xml
  3. 2 1
      projects-service/src/main/java/com/rtrh/projects/modules/projects/mapper/SubInfoMapper.xml
  4. 2 2
      projects-service/src/main/java/com/rtrh/projects/modules/projects/mapper/SubInfoQueryMapper.xml
  5. 1 1
      projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubCameraServiceImpl.java
  6. 2 2
      projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubInfoQueryServiceImpl.java
  7. 19 31
      projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubInfoServiceImpl.java
  8. 7 7
      projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubPreFlowServiceImpl.java
  9. 8 8
      projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubPreNewServiceImpl.java
  10. 22 6
      projects-service/src/main/java/com/rtrh/projects/modules/rolemeun/servicel/impl/SecRoleserviceimpl.java
  11. 1 1
      projects-service/src/main/java/com/rtrh/projects/modules/system/service/impl/WeekAndMonthFileImpl.java
  12. 4 0
      projects/src/main/java/com/rtrh/projects/web/controller/subject/SubInfoController.java
  13. 14 6
      projects/src/main/webapp/vmodules/leftMenu.jsp
  14. 1306 0
      projects/src/main/webapp/vmodules/subject/subInfo/tz/procedure.jsp

+ 1 - 1
projects-service/src/main/java/com/rtrh/projects/modules/projects/enums/SubInfoStatusEnum.java

@@ -38,7 +38,7 @@ public enum SubInfoStatusEnum {
 
     public static String getDesc(String code) {
         SubInfoStatusEnum anEnum = getEnum(code);
-        return anEnum != null ? getEnum(code).desc : null;
+        return anEnum != null ? getEnum(code).desc : "";
     }
 
     public static List<String> getValidCodeList() {

+ 2 - 1
projects-service/src/main/java/com/rtrh/projects/modules/projects/mapper/SubCameraMapper.xml

@@ -16,7 +16,8 @@
         a.logic_delete_flag = 0
         AND b.logic_delete_flag = 0
         AND a.title != 'HSIPC'
-        and b.indus_kind in('210','99','2')
+--         and b.indus_kind in('210','99','2')
+        and b.status in('1','2','3','9')
         <if test="subId != null and subId != ''">
             AND a.sub_id = #{subId}
         </if>

+ 2 - 1
projects-service/src/main/java/com/rtrh/projects/modules/projects/mapper/SubInfoMapper.xml

@@ -160,7 +160,8 @@
         WHERE
         --             sc.logic_delete_flag = 0
         si.logic_delete_flag = 0
-        and si.indus_kind in('210','99','2')
+--         and si.indus_kind in('210','99','2')
+        AND si.status in('1','2','3','9')
         AND si.longitude is not null
         AND si.latitude is not null
         AND si.subject_id  in

+ 2 - 2
projects-service/src/main/java/com/rtrh/projects/modules/projects/mapper/SubInfoQueryMapper.xml

@@ -50,8 +50,8 @@
         wamf.logic_delete_flag = 0
         and src.logic_delete_flag = 0
         AND (wamf.file_type = '101' or wamf.file_type = '102' or wamf.file_type = '203')
-        AND a.status!= '0'
-
+--         AND a.status!= '0'
+        AND a.status in ('1','2','3','9')
 
 
                 <if test="subName!= null and subName!= ''">

+ 1 - 1
projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubCameraServiceImpl.java

@@ -391,7 +391,7 @@ public class SubCameraServiceImpl implements SubCameraService {
 	}
 
     @Override
-    @TargetDataSource(value = "secondary")
+    // @TargetDataSource(value = "secondary")
     public List<Map<String, Object>> cameraTreeNew(String subId) {
         List<Map<String, Object>> result = new ArrayList<>();
         List<CameraTreeVO> cameraTreeData = subCameraMapper.cameraTreeNew(subId);

+ 2 - 2
projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubInfoQueryServiceImpl.java

@@ -2789,7 +2789,7 @@ public class SubInfoQueryServiceImpl implements SubInfoQueryService {
 
 
     @Override
-    @TargetDataSource(value = "secondary")
+    // @TargetDataSource(value = "secondary")
     public Page pageGraphicProgress(Page page, LoginUserVO loginUserVO, SubInfoQueryTzVO queryTzVO) {
 
         // 设置 ProjectStatusEnum.TEMPSAVE 的值
@@ -3214,7 +3214,7 @@ public class SubInfoQueryServiceImpl implements SubInfoQueryService {
     }
 
     @Override
-    @TargetDataSource(value="secondary")
+    // @TargetDataSource(value="secondary")
     public List<SubSmartVO> smartSiteQuery(String subjectId) {
 
         Calendar calendar = Calendar.getInstance();

+ 19 - 31
projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubInfoServiceImpl.java

@@ -1216,6 +1216,7 @@ public class SubInfoServiceImpl implements SubInfoService {
         sql.append(" left join t_systable ts1 on ts1.id=a.indus_kind ");
 
         sql.append(" where a.logic_delete_flag =0 ");
+        sql.append(" and a.status in (1,2,3,9) ");
 
 		/*if(Objects.equals("ADMIN", loginUserVO.getId())) {
 
@@ -3350,7 +3351,7 @@ public class SubInfoServiceImpl implements SubInfoService {
                 "\tWHERE\n" +
                 "\t\to.`status` =1 \n" +
                 " \t\t  and o.sub_unit_id is not null" +
-                " AND EXISTS ( SELECT 1 FROM sub_info s where s.id = o.sub_id ) " +
+                " AND EXISTS ( SELECT 1 FROM sub_info s where s.id = o.sub_id and s.status in (1,2,3,9)) " +
                 "\t\tAND o.status_conf >=1 \n" +
                 "\t\tAND o.status_conf !=3 \n" +
                 "\t\tAND o.logic_delete_flag = 0 \n" +
@@ -3376,7 +3377,7 @@ public class SubInfoServiceImpl implements SubInfoService {
                 "\t\tAND o.status_conf >= 1 \n" +
                 "\t\tAND o.logic_delete_flag = 0 \n" +
                 " \t\t  and o.sub_unit_id is not null" +
-                " AND EXISTS ( SELECT 1 FROM sub_info s where s.id = o.sub_id ) " +
+                " AND EXISTS ( SELECT 1 FROM sub_info s where s.id = o.sub_id and s.status in (1,2,3,9)) " +
                 "\t\tAND DATE_FORMAT( o.date_plan, \"%Y%m\" )>= \"" + queryVO.getTBeginDate() + "\" \n" +
                 "\t\tAND DATE_FORMAT( o.date_plan, \"%Y%m\" )<= \"" + queryVO.getTEndDate() + "\" \n" +
                 this.getWhereSql(queryVO) +
@@ -3409,7 +3410,7 @@ public class SubInfoServiceImpl implements SubInfoService {
                 "\t\t\tAND o.status_conf >= 1 \n" +
                 "\t\t\tAND o.logic_delete_flag = 0 \n" +
                 " \t\t  and o.sub_unit_id is not null" +
-                " AND EXISTS ( SELECT 1 FROM sub_info s where s.id = o.sub_id ) " +
+                " AND EXISTS ( SELECT 1 FROM sub_info s where s.id = o.sub_id and s.status in (1,2,3,9) ) " +
                 "\t\tAND DATE_FORMAT( o.date_plan, \"%Y%m\" )>= \"" + queryVO.getBeginDate() + "\" \n" +
                 "\t\tAND DATE_FORMAT( o.date_plan, \"%Y%m\" )<= \"" + queryVO.getEndDate() + "\" \n" +
                 this.getWhereSql(queryVO) +
@@ -3436,7 +3437,7 @@ public class SubInfoServiceImpl implements SubInfoService {
                 "\t\tAND o.status_conf >=1 \n" +
                 "\t\tAND o.logic_delete_flag = 0 \n" +
                 " \t\t  and o.sub_unit_id is not null" +
-                " AND EXISTS ( SELECT 1 FROM sub_info s where s.id = o.sub_id ) " +
+                " AND EXISTS ( SELECT 1 FROM sub_info s where s.id = o.sub_id and s.status in (1,2,3,9)) " +
                 "\t\tAND DATE_FORMAT( o.date_plan, \"%Y%m\" )>= \"" + queryVO.getHBeginDate() + "\" \n" +
                 "\t\tAND DATE_FORMAT( o.date_plan, \"%Y%m\" )<= \"" + queryVO.getHEndDate() + "\" \n" +
                 this.getWhereSql(queryVO) +
@@ -3580,7 +3581,7 @@ public class SubInfoServiceImpl implements SubInfoService {
                 "\tWHERE\n" +
                 "\t\to.`status` =1 \n" +
                 " \t\t  and o.sub_unit_id is not null" +
-                " AND EXISTS ( SELECT 1 FROM sub_info s where s.id = o.sub_id ) " +
+                " AND EXISTS ( SELECT 1 FROM sub_info s where s.id = o.sub_id and s.status in(1,2,3,9)) " +
                 "\t\tAND o.status_conf >=1 \n" +
                 "\t\tAND o.status_conf !=3 \n" +
                 "\t\tAND o.logic_delete_flag = 0 \n" +
@@ -3606,7 +3607,7 @@ public class SubInfoServiceImpl implements SubInfoService {
                 "\t\tAND o.status_conf >= 1 \n" +
                 "\t\tAND o.logic_delete_flag = 0 \n" +
                 " \t\t  and o.sub_unit_id is not null" +
-                " AND EXISTS ( SELECT 1 FROM sub_info s where s.id = o.sub_id ) " +
+                " AND EXISTS ( SELECT 1 FROM sub_info s where s.id = o.sub_id and s.status in(1,2,3,9)) " +
                 "\t\tAND DATE_FORMAT( o.date_plan, \"%Y%m\" )>= \"" + queryVO.getTBeginDate() + "\" \n" +
                 "\t\tAND DATE_FORMAT( o.date_plan, \"%Y%m\" )<= \"" + queryVO.getTEndDate() + "\" \n" +
                 this.getWhereSql(queryVO) +
@@ -3638,7 +3639,7 @@ public class SubInfoServiceImpl implements SubInfoService {
                 "\t\t\tAND o.status_conf >= 1 \n" +
                 "\t\t\tAND o.logic_delete_flag = 0 \n" +
                 " \t\t  and o.sub_unit_id is not null" +
-                " AND EXISTS ( SELECT 1 FROM sub_info s where s.id = o.sub_id ) " +
+                " AND EXISTS ( SELECT 1 FROM sub_info s where s.id = o.sub_id and s.status in(1,2,3,9)) " +
                 "\t\t\tAND DATE_FORMAT( o.date_plan, \"%Y%m\" )>= \"" + queryVO.getBeginDate() + "\" \n" +
                 "\t\t\tAND DATE_FORMAT( o.date_plan, \"%Y%m\" )<= \"" + queryVO.getEndDate() + "\" \n" +
                 this.getWhereSql(queryVO) +
@@ -3666,7 +3667,7 @@ public class SubInfoServiceImpl implements SubInfoService {
                 "\t\tAND o.status_conf >=1 \n" +
                 "\t\tAND o.logic_delete_flag = 0 \n" +
                 " \t\t  and o.sub_unit_id is not null" +
-                " AND EXISTS ( SELECT 1 FROM sub_info s where s.id = o.sub_id ) " +
+                " AND EXISTS ( SELECT 1 FROM sub_info s where s.id = o.sub_id and s.status in(1,2,3,9)) " +
                 "\t\tAND DATE_FORMAT( o.date_plan, \"%Y%m\" )>= \"" + queryVO.getHBeginDate() + "\" \n" +
                 "\t\tAND DATE_FORMAT( o.date_plan, \"%Y%m\" )<= \"" + queryVO.getHEndDate() + "\" \n" +
                 this.getWhereSql(queryVO) +
@@ -3751,7 +3752,7 @@ public class SubInfoServiceImpl implements SubInfoService {
                 "\t\tWHERE\n" +
                 "\t\t\to.logic_delete_flag = 0 \n" +
                 " \t\t  and o.sub_unit_id is not null" +
-                " AND EXISTS ( SELECT 1 FROM sub_info s where s.id = o.sub_id ) " +
+                " AND EXISTS ( SELECT 1 FROM sub_info s where s.id = o.sub_id and s.status in(1,2,3,9)) " +
                 "\t\tAND DATE_FORMAT( o.date_plan, \"%Y%m\" )>= \"" + queryVO.getBeginDate() + "\" \n" +
                 "\t\tAND DATE_FORMAT( o.date_plan, \"%Y%m\" )<= \"" + queryVO.getEndDate() + "\" \n" +
                 this.getWhereSql(queryVO) +
@@ -3789,7 +3790,7 @@ public class SubInfoServiceImpl implements SubInfoService {
                 "\t\t\t\tAND o.status_conf != 3 \n" +
                 "\t\t\t\tAND o.logic_delete_flag = 0 \n" +
                 " \t\t  and o.sub_unit_id is not null" +
-                " AND EXISTS ( SELECT 1 FROM sub_info s where s.id = o.sub_id ) " +
+                " AND EXISTS ( SELECT 1 FROM sub_info s where s.id = o.sub_id and s.status in(1,2,3,9)) " +
                 "\t\tAND DATE_FORMAT( o.date_plan, \"%Y%m\" )>= \"" + queryVO.getBeginDate() + "\" \n" +
                 "\t\tAND DATE_FORMAT( o.date_plan, \"%Y%m\" )<= \"" + queryVO.getEndDate() + "\" \n" +
                 this.getWhereSql(queryVO) +
@@ -3931,7 +3932,7 @@ public class SubInfoServiceImpl implements SubInfoService {
                 "\tWHERE\n" +
                 "\t\to.`status` =1 \n" +
                 " \t\t  and o.sub_unit_id is not null" +
-                " AND EXISTS ( SELECT 1 FROM sub_info s where s.id = o.sub_id ) " +
+                " AND EXISTS ( SELECT 1 FROM sub_info s where s.id = o.sub_id and s.status in (1,2,3,9)) " +
                 "\t\tAND o.status_conf >=1 \n" +
                 "\t\tAND o.logic_delete_flag = 0 \n" +
                 "\t\tAND DATE_FORMAT( o.date_plan, \"%Y%m\" )>= \"" + queryVO.getBeginDate() + "\" \n" +
@@ -3956,7 +3957,7 @@ public class SubInfoServiceImpl implements SubInfoService {
                 "\t\tAND o.status_conf >= 1 \n" +
                 "\t\tAND o.logic_delete_flag = 0 \n" +
                 " \t\t  and o.sub_unit_id is not null" +
-                " AND EXISTS ( SELECT 1 FROM sub_info s where s.id = o.sub_id ) " +
+                " AND EXISTS ( SELECT 1 FROM sub_info s where s.id = o.sub_id and s.status in (1,2,3,9)) " +
                 "\t\tAND DATE_FORMAT( o.date_plan, \"%Y%m\" )>= \"" + queryVO.getTBeginDate() + "\" \n" +
                 "\t\tAND DATE_FORMAT( o.date_plan, \"%Y%m\" )<= \"" + queryVO.getTEndDate() + "\" \n" +
                 this.getWhereSql(queryVO) +
@@ -4151,7 +4152,7 @@ public class SubInfoServiceImpl implements SubInfoService {
                 "\t\tAND o.status_conf >=1 \n" +
                 "\t\tAND o.status_conf !=3 \n" +
                 " \t\t  and o.sub_unit_id is not null" +
-                " AND EXISTS ( SELECT 1 FROM sub_info s where s.id = o.sub_id ) " +
+                " AND EXISTS ( SELECT 1 FROM sub_info s where s.id = o.sub_id and s.status in(1,2,3,9)) " +
                 "\t\tAND o.logic_delete_flag = 0 \n" +
                 "\t\tAND DATE_FORMAT( o.date_plan, \"%Y%m\" )>= \"" + queryVO.getBeginDate() + "\" \n" +
                 "\t\tAND DATE_FORMAT( o.date_plan, \"%Y%m\" )<= \"" + queryVO.getEndDate() + "\" \n" +
@@ -4175,7 +4176,7 @@ public class SubInfoServiceImpl implements SubInfoService {
                 "\t\tAND o.status_conf >= 1 \n" +
                 "\t\tAND o.logic_delete_flag = 0 \n" +
                 " \t\t  and o.sub_unit_id is not null" +
-                " AND EXISTS ( SELECT 1 FROM sub_info s where s.id = o.sub_id ) " +
+                " AND EXISTS ( SELECT 1 FROM sub_info s where s.id = o.sub_id and s.status in(1,2,3,9)) " +
                 "\t\tAND DATE_FORMAT( o.date_plan, \"%Y%m\" )>= \"" + queryVO.getTBeginDate() + "\" \n" +
                 "\t\tAND DATE_FORMAT( o.date_plan, \"%Y%m\" )<= \"" + queryVO.getTEndDate() + "\" \n" +
                 this.getWhereSql(queryVO) +
@@ -4207,7 +4208,7 @@ public class SubInfoServiceImpl implements SubInfoService {
                 "\t\t\tAND o.status_conf >= 1 \n" +
                 "\t\t\tAND o.logic_delete_flag = 0 \n" +
                 " \t\t  and o.sub_unit_id is not null" +
-                " AND EXISTS ( SELECT 1 FROM sub_info s where s.id = o.sub_id ) " +
+                " AND EXISTS ( SELECT 1 FROM sub_info s where s.id = o.sub_id and s.status in(1,2,3,9)) " +
                 "\t\t\tAND DATE_FORMAT( o.date_plan, \"%Y%m\" )>= \"" + queryVO.getBeginDate() + "\" \n" +
                 "\t\t\tAND DATE_FORMAT( o.date_plan, \"%Y%m\" )<= \"" + queryVO.getEndDate() + "\" \n" +
                 this.getWhereSql(queryVO) +
@@ -4234,7 +4235,7 @@ public class SubInfoServiceImpl implements SubInfoService {
                 "\t\tAND o.status_conf >=1 \n" +
                 "\t\tAND o.logic_delete_flag = 0 \n" +
                 " \t\t  and o.sub_unit_id is not null" +
-                " AND EXISTS ( SELECT 1 FROM sub_info s where s.id = o.sub_id ) " +
+                " AND EXISTS ( SELECT 1 FROM sub_info s where s.id = o.sub_id and s.status in(1,2,3,9)) " +
                 "\t\tAND DATE_FORMAT( o.date_plan, \"%Y%m\" )>= \"" + queryVO.getHBeginDate() + "\" \n" +
                 "\t\tAND DATE_FORMAT( o.date_plan, \"%Y%m\" )<= \"" + queryVO.getHEndDate() + "\" \n" +
                 this.getWhereSql(queryVO) +
@@ -4380,7 +4381,7 @@ public class SubInfoServiceImpl implements SubInfoService {
                 "\t\t\tWHERE\n" +
                 "\t\t\t\to.logic_delete_flag = 0 \n" +
                 "\t\t\t\tAND o.sub_unit_id IS NOT NULL \n" +
-                " AND EXISTS ( SELECT 1 FROM sub_info s where s.id = o.sub_id ) " +
+                " AND EXISTS ( SELECT 1 FROM sub_info s where s.id = o.sub_id and s.status in(1,2,3,9)) " +
                 "\t\tAND DATE_FORMAT( o.date_plan, \"%Y%m\" )>= \"" + queryVO.getBeginDate() + "\" \n" +
                 "\t\tAND DATE_FORMAT( o.date_plan, \"%Y%m\" )<= \"" + queryVO.getEndDate() + "\" \n" +
                 this.getWhereSql(queryVO) +
@@ -5494,20 +5495,7 @@ public class SubInfoServiceImpl implements SubInfoService {
 
             //设置项目状态
             if (StringUtil.isNotEmpty(e.getStatus())) {
-                String status = e.getStatus();
-                if (status.equals("1")) {
-                    e.setStatus("储备");
-                } else if (status.equals("2")) {
-                    e.setStatus("新建");
-                } else if (status.equals("3")) {
-                    e.setStatus("在建");
-                } else if (status.equals("9")) {
-                    e.setStatus("投产");
-                }else if (status.equals("5")) {
-                    e.setStatus("移除项目");
-                }else {
-                    e.setStatus("");
-                }
+                e.setStatus(SubInfoStatusEnum.getDesc(e.getStatus()));
             }
 
             //设置行业

+ 7 - 7
projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubPreFlowServiceImpl.java

@@ -68,14 +68,14 @@ public class SubPreFlowServiceImpl implements SubPreFlowService {
 	}
 
 	@Override
-	@TargetDataSource("secondary")
+	// @TargetDataSource("secondary")
 	public List<SubPreFlow> getList() {
-		Object o = HttpClientUtil.fgwGetRequest("/outApi/remote/getSubPreFlowList");
-		if (o != null) {
-			return JSON.parseArray(JSON.toJSONString(o), SubPreFlow.class);
-		}
-		return new ArrayList<>();
-		// return subPreFlowMapper.getList();
+		// Object o = HttpClientUtil.fgwGetRequest("/outApi/remote/getSubPreFlowList");
+		// if (o != null) {
+		// 	return JSON.parseArray(JSON.toJSONString(o), SubPreFlow.class);
+		// }
+		// return new ArrayList<>();
+		return subPreFlowMapper.getList();
 	}
 
 	@Override

+ 8 - 8
projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubPreNewServiceImpl.java

@@ -1585,18 +1585,18 @@ public class SubPreNewServiceImpl implements SubPreNewService {
     }
 
     @Override
-    @TargetDataSource("secondary")
+    // @TargetDataSource("secondary")
     public List<SubPreNew> findBySubId(String subId) {
-        Object o = HttpClientUtil.fgwGetRequest("/outApi/remote/findPreNewBySubId?subId=" + subId);
-        if (o != null) {
-            return JSON.parseArray(JSON.toJSONString(o), SubPreNew.class);
-        }
-        return new ArrayList<>();
-        // return subPreNewMapper.findBySubId(subId);
+        // Object o = HttpClientUtil.fgwGetRequest("/outApi/remote/findPreNewBySubId?subId=" + subId);
+        // if (o != null) {
+        //     return JSON.parseArray(JSON.toJSONString(o), SubPreNew.class);
+        // }
+        // return new ArrayList<>();
+        return subPreNewMapper.findBySubId(subId);
     }
 
     @Override
-    @TargetDataSource("secondary")
+    // @TargetDataSource("secondary")
     public void saveBatch(List<SubPreNew> list) {
         // subPreNewMapper.saveBatch(list);
         HttpClientUtil.fgwPostRequest("/outApi/remote/saveBatchSubPreNew", list);

+ 22 - 6
projects-service/src/main/java/com/rtrh/projects/modules/rolemeun/servicel/impl/SecRoleserviceimpl.java

@@ -2,7 +2,9 @@ package com.rtrh.projects.modules.rolemeun.servicel.impl;
 
 import java.util.*;
 
+import com.alibaba.fastjson.JSON;
 import com.rtrh.projects.modules.account.mapper.MeunInfoMapper;
+import com.rtrh.projects.util.HttpClientUtil;
 import com.rtrh.projects.util.TargetDataSource;
 import org.hibernate.criterion.Criterion;
 import org.hibernate.criterion.DetachedCriteria;
@@ -191,16 +193,25 @@ public class SecRoleserviceimpl implements SecRoleservice {
     }
 
     @Override
-    @TargetDataSource("secondary")
+    // @TargetDataSource("secondary")
     public SecRole getByFgwId(String id) {
-
-        return secRoleMapper.getByFgwId(id);
+        Object o = HttpClientUtil.fgwGetRequest("/outApi/remote/getRoleById?id=" + id);
+        if (o!=null){
+            return JSON.parseObject(JSON.toJSONString(o), SecRole.class);
+        }
+        return null;
+        // return secRoleMapper.getByFgwId(id);
     }
 
 	@Override
     @TargetDataSource("secondary")
 	public List<String> queryMenuCodesByRoleId(String id, MenuType type) {
-		return secRoleMapper.queryMenuCodeByRoleId(id, type.getCode());
+        Object o = HttpClientUtil.fgwGetRequest("/outApi/remote/queryMenuCodesByRoleId", new HashMap<String, String>() {{
+            put("id", id);
+            put("type", String.valueOf(type.getCode()));
+        }});
+        return o != null ? JSON.parseArray(JSON.toJSONString(o), String.class) : new ArrayList<>();
+        // return secRoleMapper.queryMenuCodeByRoleId(id, type.getCode());
 	}
 
 	@Override
@@ -226,10 +237,15 @@ public class SecRoleserviceimpl implements SecRoleservice {
     }
 
     @Override
-    @TargetDataSource("secondary")
+    // @TargetDataSource("secondary")
     public List<MeunInfo> queryMenuByFgwParent() {
         Map<String,Object> param = new HashMap<>();
         param.put("lastcode", "1000");
-        return meunInfoMapper.findByParam(param);
+        Object o = HttpClientUtil.fgwPostRequest("/outApi/remote/getMenuByParent", param);
+        if (o!=null){
+            return JSON.parseArray(JSON.toJSONString(o), MeunInfo.class);
+        }
+        return null;
+        // return meunInfoMapper.findByParam(param);
     }
 }

+ 1 - 1
projects-service/src/main/java/com/rtrh/projects/modules/system/service/impl/WeekAndMonthFileImpl.java

@@ -125,7 +125,7 @@ public class WeekAndMonthFileImpl implements WeekAndMonthFileService {
     }
 
 	@Override
-    @TargetDataSource("secondary")
+    // @TargetDataSource("secondary")
 	public Page pageBySub(Page page, String type, String subId) {
         PageHelper.startPage(page.getPageNo(), page.getPageSize());
         List<Integer> fileTypes = new ArrayList<>();

+ 4 - 0
projects/src/main/java/com/rtrh/projects/web/controller/subject/SubInfoController.java

@@ -357,6 +357,10 @@ public class SubInfoController extends BaseController {
         return new ModelAndView("/vmodules/subject/subInfo/tz/main.jsp");
     }
 
+    @GetMapping(value = "/procedure")
+    public ModelAndView procedure(ModelMap model) {
+        return new ModelAndView("/vmodules/subject/subInfo/procedure.jsp");
+    }
 
     /**
      * @param model

+ 14 - 6
projects/src/main/webapp/vmodules/leftMenu.jsp

@@ -166,6 +166,14 @@
                             before: function () {
                                 window.localStorage.removeItem("TzQueryParam_end_${loginUserId}")
                             }
+                        },
+                        {
+                            txt: '手续管理',
+                            code: '405',
+                            url: 'subject/subInfo/procedure',
+                            before: function () {
+                                window.localStorage.removeItem("TzQueryParam_end_${loginUserId}")
+                            }
                         }
                     ]
                 },
@@ -258,12 +266,12 @@
                             url: 'graphicProgress/list'
                             // url: 'register/underConstruction'
                         },
-                        {
-                            txt: '月航拍全景',
-                            code: '707',
-                            url: 'aerial/list'
-                            // url: 'register/underConstruction'
-                        }
+                        // {
+                        //     txt: '月航拍全景',
+                        //     code: '707',
+                        //     url: 'aerial/list'
+                        //     // url: 'register/underConstruction'
+                        // }
 
                     ]
                 },

+ 1306 - 0
projects/src/main/webapp/vmodules/subject/subInfo/tz/procedure.jsp

@@ -0,0 +1,1306 @@
+<%@ page language="java" contentType="text/html; charset=UTF-8"
+         pageEncoding="UTF-8" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<!DOCTYPE html>
+<html>
+<head>
+    <jsp:include page="../../../common/common-meta-include.jsp"></jsp:include>
+    <jsp:include page="../../../common/common-js-include.jsp"></jsp:include>
+    <jsp:include page="../../../common/common-css-include.jsp"></jsp:include>
+    <!--[if lt IE 9]>
+    <script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
+    <script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
+    <![endif]-->
+    <style type="text/css">
+        .layui-table-view .layui-table td {
+            border-right: 1px solid #DDD !important;
+        }
+
+        .layui-table-body .layui-table-cell {
+            padding: 5px !important;
+        }
+
+        .layui-table-header .layui-table-cell {
+            height: 42px !important;
+        }
+
+        .qianse {
+            color: #666666;
+        }
+
+        .lanse {
+            color: #1869F6;
+        }
+
+        .shense {
+            color: #111111;
+        }
+
+        .no-wrap {
+            white-space: nowrap;
+        }
+
+        .lanse-first {
+            color: #1C56A3;
+            font-size: 12px;
+            font-family: "Times New Roman", Times, serif;
+        }
+
+        .layui-table-col-special .layui-table-cell {
+            display: flex;
+            justify-content: space-between;
+        }
+
+        .queryTimeType {
+            margin-top: -4px;
+            position: absolute;
+        }
+
+        .hiddenParam,
+        .hiddenParams {
+            display: none;
+        }
+
+        .morePan {
+            position: absolute;
+            margin-left: 11px;
+        }
+
+        .morePan a {
+            color: #2C6EC6;
+        }
+
+        .table_box .table_process {
+            height: fit-content;
+            max-height: 60vh;
+            overflow-x: scroll;
+            overflow-y: scroll;
+        }
+
+        .layui-table-body::-webkit-scrollbar {
+            width: 0px;
+            /*height: 10px;*/
+        }
+
+        .table_box,
+        .table_box .table_process {
+            overflow: visible;
+        }
+
+        .layui-form-select dl {
+            height: 230px;
+        }
+
+        /* 针对特定 select 的样式 */
+        .custom-select + .layui-form-select dl {
+            height: auto; /* 恢复默认高度 */
+            max-height: 150px; /* 设置一个合适的高度 */
+        }
+
+        .layui-table-cell .cut {
+            display: -webkit-box; /* 使用旧版的弹性盒子布局 */
+            -webkit-box-orient: vertical; /* 设置为垂直方向排列 */
+            overflow: hidden; /* 隐藏溢出内容 */
+            text-overflow: ellipsis; /* 使用省略号表示溢出内容 */
+            -webkit-line-clamp: 2; /* 显示的行数 */
+        }
+        .search_pop .layui-layer-content {
+            overflow: visible;
+        }
+    </style>
+</head>
+<body>
+<div id="app"></div>
+<template id="template">
+    <div class="layui-layout layui-layout-admin pd0">
+        <!-- 内容区域 -->
+        <div class="right_title">
+            <div class="txt">项目总库 <div class="top-breadcrumb"></div></div>
+            <div class="layui-collapse search_form">
+                <div class="layui-colla-item">
+                    <div class="layui-colla-content layui-show">
+                        <form class="layui-form" lay-filter="searchForm" id="searchForm">
+                            <input type="hidden" name="queryType" value="1">
+                            <div class="layui-row">
+                                <div class="layui-col-xs3 layui-col-sm3 layui-col-md3">
+                                    <div class="layui-form-item">
+                                        <label class="layui-form-label label-longers required">项目名称</label>
+                                        <div class="layui-input-block">
+                                            <input type="text" name="subName" placeholder="请输入" autocomplete="off"
+                                                   class="layui-input">
+                                        </div>
+                                    </div>
+                                </div>
+                                <div class="layui-col-xs3 layui-col-sm3 layui-col-md3">
+                                    <div class="layui-form-item">
+                                        <label class="layui-form-label required label-longers">项目属地</label>
+                                        <div class="layui-input-block">
+                                            <select name="subjectId">
+                                                <option value="">请选择</option>
+                                                <c:forEach items="${JSDD }" var="hy">
+                                                    <option value="${hy.code }">${hy.title }</option>
+                                                </c:forEach>
+                                            </select>
+                                        </div>
+                                    </div>
+                                </div>
+                                <div class="layui-col-xs3 layui-col-sm3 layui-col-md3">
+                                    <div class="layui-form-item">
+                                        <label class="layui-form-label required label-longers">行业类别</label>
+                                        <div class="layui-input-block">
+                                            <%--                                            <div id="indusKind"></div>--%>
+                                            <select name="indusKind">
+                                                <option value="">请选择</option>
+                                                <c:forEach items="${HYFL }" var="hy">
+                                                    <option value="${hy.code }">${hy.title}
+                                                    <c:forEach items="${hy.children }" var="hy2">
+                                                        <option value="${hy2.code }">&ensp;&ensp;${hy2.title}
+                                                    </c:forEach>
+                                                    </option>
+                                                </c:forEach>
+                                            </select>
+                                        </div>
+                                    </div>
+                                </div>
+                                <div class="layui-col-xs3 layui-col-sm3 layui-col-md3 hiddenParam">
+                                    <div class="layui-form-item">
+                                        <label class="layui-form-label required label-longers">四库</label>
+                                        <div class="layui-input-block">
+                                            <div id="subInfoStatus"></div>
+                                        </div>
+                                    </div>
+                                </div>
+                                <div class="layui-col-xs3 layui-col-sm3 layui-col-md3 hiddenParam">
+                                    <div class="layui-form-item">
+                                        <label class="layui-form-label label-longers">项目单位</label>
+                                        <div class="layui-input-block">
+                                            <input type="text" name="sbdw" placeholder="请输入项目项目单位名称"
+                                                   autocomplete="off"
+                                                   class="layui-input">
+                                        </div>
+                                    </div>
+                                </div>
+                                <div class="layui-col-xs3 layui-col-sm3 layui-col-md3 hiddenParams">
+                                    <div class="layui-form-item">
+                                        <label class="layui-form-label"></label>
+                                        <div class="layui-input-block">
+                                            <button type="button" class="layui-btn layui-btn-normal" @click="search">查询
+                                            </button>
+                                            <span class="morePan" @click="showMore"><a v-if="!showMoreFlag">更多  <ion-icon
+                                                    name="chevron-forward-outline"></ion-icon></a><a
+                                                    v-if="showMoreFlag">收起 V</a></span>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class="layui-row">
+
+                            </div>
+                        </form>
+
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div class="table_box" style="padding-top: 0;">
+            <div class="table_process" style="position: relative">
+
+                <div style="position: relative; display: inline-block" @mouseover="openExport" @mouseout="choseExport">
+                    <div class="export">
+                        <img src="${WebSite.asset}/css/images/left/export.svg"/>
+                        <span>导出</span>
+                    </div>
+                    <div class="export-item" v-if="showExport" :style="{ top: '-93px' }">
+                        <button type="button" class="" @click="exportTotalExcel">汇总导出</button>
+                        <button type="button" class="" @click="exportFixDetailExcel">项目明细导出</button>
+                        <button type="button" class="" @click="exportAnalysis">分析报告导出</button>
+                        <%--                        <button type="button" class="" @click="exportMoreExcel">自定义导出</button>--%>
+                    </div>
+                </div>
+                <div style="position: relative; display: inline-block">
+                    <div class="export" id="uploadBtn">
+                        <img src="${WebSite.asset}/css/images/left/export.svg"/>
+                        <span>导入</span>
+                    </div>
+                </div>
+                请先导出文件,再点击导入上传修改后的数据!
+                <table id="table1" lay-filter="test"></table>
+                <div class="pagination-box" id="pagination"></div>
+            </div>
+        </div>
+        <div style="height: 20px;"></div>
+    </div>
+</template>
+<div id="setReason" style="display: none;">
+    <form class="layui-form" lay-filter="reasonForm">
+        <div class="layui-row">
+            <div class="layui-col-xs6 layui-col-sm6">
+                <div class="layui-form-item">
+                    <label class="layui-form-label">已开工未入库原因:</label>
+                    <div class="layui-input-block">
+                        <textarea name="reasonNoRk" maxlength="200" style="height: 50px;width: 80%;" id="reasonNoRk"
+                                  autocomplete="off" class="layui-textarea"></textarea>
+                    </div>
+                </div>
+            </div>
+            <div class="layui-col-xs6 layui-col-sm6">
+                <div class="layui-form-item">
+                    <label class="layui-form-label">已入库无投资原因:</label>
+                    <div class="layui-input-block">
+                        <textarea name="reasonNoAmt" maxlength="200" style="height: 50px;width: 80%;" id="reasonNoAmt"
+                                  autocomplete="off" class="layui-textarea"></textarea>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div class="layui-row">
+            <div class="layui-col-xs6 layui-col-sm6">
+                <div class="layui-form-item">
+                    <label class="layui-form-label">是否入统:</label>
+                    <div class="layui-input-block">
+                        <input type="radio" name="isRk" value="0" title="否" checked="checked"/>
+                        <input type="radio" name="isRk" value="1" title="是"/>
+                    </div>
+                </div>
+            </div>
+            <div class="layui-col-xs6 layui-col-sm6">
+                <div class="layui-form-item">
+                    <label class="layui-form-label">未开工建设原因:</label>
+                    <div class="layui-input-block">
+                        <textarea name="reasonNoKg" maxlength="200" style="height: 50px;width: 80%;" id="reasonNoKg"
+                                  autocomplete="off" class="layui-textarea"></textarea>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div class="layui-row">
+            <div class="layui-col-xs6 layui-col-sm6">
+                <div class="layui-form-item">
+                    <label class="layui-form-label">存在的问题:</label>
+                    <div class="layui-input-block">
+                        <textarea name="reasonq" maxlength="200" style="height: 50px;width: 80%;" id="reasonq"
+                                  autocomplete="off" class="layui-textarea"></textarea>
+                    </div>
+                </div>
+            </div>
+            <div class="layui-col-xs6 layui-col-sm6">
+                <div class="layui-form-item">
+                    <label class="layui-form-label">已开工进度慢原因:</label>
+                    <div class="layui-input-block">
+                        <textarea name="reasonJd" maxlength="200" style="height: 50px;width: 80%;" id="reasonJd"
+                                  autocomplete="off" class="layui-textarea"></textarea>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </form>
+</div>
+
+
+<div id="problem" class="layuimini-main" style="display: none;">
+    <form class="layui-form" lay-filter="problemForm">
+        <div class="layui-row">
+            <div class="layui-col-xs12 layui-col-sm12">
+                <div class="layui-form-item">
+                    <label class="layui-form-label">状态:</label>
+                    <div class="layui-input-block block-width">
+                        <input type="radio" name="statusF" value="2" title="红灯" checked="checked"/>
+                        <input type="radio" name="statusF" value="1" title="黄灯"/>
+                        <input type="radio" name="statusF" value="0" title="绿灯"/>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div class="layui-row">
+            <div class="layui-col-xs12 layui-col-sm12">
+                <div class="layui-form-item">
+                    <label class="layui-form-label">问题描述:</label>
+                    <div class="layui-input-block block-width">
+                        <textarea name="status_reason" maxlength="400" style="height: 300px;width: 80%;"
+                                  id="problemReason" autocomplete="off" class="layui-textarea"></textarea>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div class="layui-row">
+            <div class="layui-col-xs12 layui-col-sm12">
+                <div class="layui-form-item">
+                    <label class="layui-form-label">要求解决日期:</label>
+                    <div class="layui-input-block  block-width" style="width: 25%">
+                        <input type="text" id="dateConfirm" name="dateConfirm" autocomplete="off" class="layui-input">
+                    </div>
+                </div>
+            </div>
+        </div>
+    </form>
+</div>
+
+<div id="toBack" class="layuimini-main" style="display: none;">
+    <form class="layui-form" lay-filter="toBackForm">
+        <div class="layui-row">
+            <div class="layui-col-xs12 layui-col-sm12">
+                <div class="layui-form-item">
+                    <label class="layui-form-label" style="width: 100px">退回到状态:</label>
+                    <div class="layui-input-block">
+                        <input type="radio" name="status" value="1" title="项目前期" checked="checked"/>
+                        <input type="radio" name="status" value="6" title="待开工"/>
+                        <input type="radio" name="status" value="7" title="施工中"/>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </form>
+</div>
+
+<script type="text/html" id="subName">
+    <span lay-event="toDetail" title="{{d.subName}}">{{d.subName}}</span>
+</script>
+
+<script type="text/html" id="mainName">
+    <span lay-event="toManagerUnit" title="{{d.mainName}}">{{d.mainName}}</span>
+</script>
+
+<script type="text/html" id="unitName">
+    <span lay-event="toQcc" title="{{d.unitName}}">{{d.unitName}}</span>
+</script>
+
+
+<script type="text/html" id="date">
+    <div title="">
+        <div class="line"><span class="qianse">计划开工:</span> <span class="shense">{{d.beginDate}}</span>
+
+        </div>
+        <div class="line"><span class="qianse">计划竣工:</span> <span class="shense">{{d.endDate}}</span>
+
+        </div>
+    </div>
+</script>
+
+
+<script type="text/html" id="amtTotal">
+    <div title="">
+        <span class="qianse">总投资金额:</span><span class="lanse">{{d.amtTotal}}</span> 万元<br/>
+    </div>
+</script>
+
+
+<script type="text/html" id="zjly">
+    <div title="">
+        <span class="lanse">{{d.zjlyName}}</span>
+    </div>
+</script>
+
+
+<script type="text/html" id="abcSpan">
+    {{# if(d.abc == "A") { }}
+    <span style="font-size:16px;font-weigh:500 !important;color: #26B520">{{d.abc||''}}</span>
+    {{#} }}
+    {{# if(d.abc == "B") { }}
+    <span style="font-size:16px;font-weigh:500 !important;color: #1869F6">{{d.abc||''}}</span>
+    {{#} }}
+    {{# if(d.abc == "C") { }}
+    <span style="font-size:16px;font-weigh:500 !important;color: #FF9600">{{d.abc||''}}</span>
+    {{#} }}
+</script>
+<%-- table操作按钮 --%>
+<%-- table操作按钮 --%>
+<script type="text/html" id="toolBar">
+    <div class="toolBar">
+        <span title="项目查询" lay-event="toDetail" class="no-wrap">项目查询</span>
+        {{# if("${currUser.edit}" == 'true'||( d.propKind == '3' && "${currUser.id}" == d.create_user_id )) { }}
+        <span title="编辑" lay-event="toEditSubInfo" class="no-wrap">&nbsp;编辑</span>
+        {{#} }}
+        <span title="红黄灯" lay-event="toEditLight" class="no-wrap">红黄灯</span>
+        <span title="转库" lay-event="move" class="no-wrap">转库</span>
+        {{# if(d.status != '5') { }}
+        <span title="移出4库" lay-event="removeFour" class="no-wrap">移出4库</span>
+        {{#} }}
+        {{# if(d.status == '5') { }}
+        <span title="取消移除" lay-event="cancelRemove" class="no-wrap">取消移除</span>
+        {{#} }}
+    </div>
+</script>
+
+<script type="text/html" id="imageDiv">
+    <div style="width:50px;height:50px" onclick="showImage(this)">
+        {{# if(d.fileId != null && d.fileId != '') { }}
+        <img src="${domain}/static/file/{{d.fileId}}/showfile" realUrl="${domain}/static/file/{{d.fileId}}/showfile"
+             width="50px" height="50px"/>
+        {{#} }}
+    </div>
+</script>
+
+
+<script type="text/html" id="offsetLight">
+    {{#if(d.offset >= -30 && d.offset <= -10 ) { }}
+    <span style="color: yellow"><image class="light-rgb"
+                                       src="${WebSite.asset}/css/images/bigScreen/light-yellow.png"></image></span>
+    {{#} else if(d.offset < -30) { }}
+    <span style="color: red"><image class="light-rgb"
+                                    src="${WebSite.asset}/css/images/bigScreen/light-red.png"></image></span>
+    {{#}}}
+    {{#if(d.offset !="" || d.offset != undefined || d.offset != null) { }}
+    {{#if(d.offset<0) { }}
+    <span class="grey">{{d.offset||"--"}}%</span>
+    {{# } }}
+    {{#if(d.offset>0) { }}
+    <span class="green">{{d.offset||"--"}}%</span>
+    {{# } }}
+    {{# } }}
+</script>
+
+
+<script type="text/html" id="openLight">
+
+
+    {{# var computedPer1 = function(beginDate){
+
+    var beginDate =new Date(beginDate);
+    var beginDate7 =new Date(beginDate);
+    var beginDate3 =new Date(beginDate);
+    beginDate7.setDate(beginDate7.getDate()-7);
+    beginDate3.setDate(beginDate3.getDate()-3);
+
+    var newDate =  new Date();
+    if(newDate.getTime() >=beginDate7.getTime()  && newDate.getTime() <=beginDate3.getTime()){
+    return "yellow";
+    }else if(newDate.getTime() >=beginDate3.getTime() && newDate.getTime()  <=  beginDate.getTime()  ){
+    return "red";
+    }else{
+    return "-";
+    }
+    };
+    }}
+
+    {{#if(computedPer1(d.beginDate)=="yellow" ) { }}
+    <span style="color: yellow">  <image style="width:20px;height:20px;margin: auto;"
+                                         src="${WebSite.asset}/css/images/bigScreen/light-yellow.png"></image></span>
+    {{#} else if(computedPer1(d.beginDate)=="red") { }}
+    <span style="color: red">   <image style="width:20px;height:20px;margin: auto;"
+                                       src="${WebSite.asset}/css/images/bigScreen/light-red.png"></image></span>
+    {{#}}}
+</script>
+<script type="text/html" id="moveForm">
+    <div class="layui-form" style="padding: 20px;">
+        <div class="layui-form-item" style="display: flex; align-items: center;">
+            <label class="layui-form-label" style="text-align: right; width: 90px;">当前状态:</label>
+            <div class="layui-input-block" style="flex: 1; max-width: calc(100% - 120px);">
+                <input type="text" name="currentState" value="储备库" disabled class="layui-input">
+            </div>
+        </div>
+        <div class="layui-form-item" style="display: flex; align-items: center;">
+            <label class="layui-form-label" style="text-align: right; width: 90px;">转库到:</label>
+            <div class="layui-input-block" style="flex: 1; max-width: calc(100% - 120px);">
+                <select class="custom-select" lay-filter="moveStatus" lay-verify="required">
+                    <option value="">请选择</option>
+                    <c:forEach items="${subInfoStatus }" var="item">
+                        <option value="${item.code}">${item.desc}</option>
+                    </c:forEach>
+                </select>
+            </div>
+        </div>
+        <div class="layui-form-item" style="display: flex; align-items: center;">
+            <label class="layui-form-label" style="text-align: right; width: 90px;"></label>
+            <div class="layui-input-block" style="flex: 1; max-width: calc(100% - 120px); text-align: right;">
+                <button type="button" class="layui-btn layui-btn-primary layui-border" onclick="vm.closeAllLayers()">取消</button>
+                <button type="button" class="layui-btn moveConfirm" onclick="vm.confirmMove()">确认转库</button>
+            </div>
+        </div>
+    </div>
+</script>
+
+<script>
+    layui.use('element', function () {
+        let element = layui.element;
+    });
+    let vm = new Vue({
+        el: "#app",
+        template: "#template",
+        data: {
+            subInfoStatusData: [],
+            JSDD: [],
+            winH: 0,
+            dataList: [],
+            startDate: "",
+            endDate: "",
+            tableName: 'test',
+            cacheName: 'TzQueryParam_cb_${currUser.id}',
+            pageNo: 1,
+            kind: {},
+            beginRate: {},
+            showMoreFlag: false,
+            light: null,
+            sort: {field: "abc", type: ""},
+            pageSize: 10,
+            showExport: false,
+            moveDbParam:{
+                status: "",
+                id: ""
+            }
+        },
+        mounted: function () {
+            this.init()
+        },
+        methods: {
+            // 红黄灯
+            toEditLight(obj){
+                let self = this;
+                App.openLayer({
+                    title: "红黄灯设置",
+                    content: App.getUrl("/subject/subInfo/light?subId=" + obj.data.id),
+                    width: 500,
+                    height: 400,
+                    end: function() {
+                        self.getData();
+                    }
+                })
+            },
+            closeAllLayers() {
+                layui.layer.closeAll(); // 关闭所有弹框
+            },
+            confirmMove: function () {
+                let param = this.moveDbParam
+                // 数据验证
+                if (!param || !param.status) {
+                    App.msg.error("请选择转库状态");
+                    return;
+                }
+                // param.statusName = this.getStatusName(param.status)
+                param.statusName = this.subInfoStatusData.find(item => item.value === param.status).name
+                let self = this;
+                self.closeAllLayers();
+                App.msg.confirm(`是否转入` + param.statusName + `库?`, () => {
+                    App.postJson("/api/subject/subInfo/moveDb", {id: param.id, status: param.status}, (res) => {
+                        if (res.success) {
+                            App.msg.success("转库成功");
+                            self.getData()
+                        } else {
+                            App.msg.error(res.message || "转库失败,请重试");
+                        }
+                    })
+                });
+            },
+            removeFour(obj){
+                let self = this;
+                App.msg.confirm(`是否移除`, () => {
+                    App.postJson("/api/subject/subInfo/removeFour", {id: obj.data.id}, (res) => {
+                        if (res.success) {
+                            App.msg.success("移除成功");
+                            self.getData()
+                        } else {
+                            App.msg.error(res.message || "移除失败,请重试");
+                        }
+                    })
+                })
+            },
+            cancelRemove(obj){
+                let self = this;
+                App.msg.confirm(`是否取消`, () => {
+                    App.postJson("/api/subject/subInfo/cancelRemove", {id: obj.data.id}, (res) => {
+                        if (res.success) {
+                            App.msg.success("取消成功");
+                            self.getData()
+                        } else {
+                            App.msg.error(res.message || "取消失败,请重试");
+                        }
+                    })
+                })
+            },
+            move(obj) {
+                this.moveDbParam.id = obj.data.id
+                const formTemplate = document.getElementById('moveForm').innerHTML;
+                layer.open({
+                    type: 1,
+                    title: '转库',
+                    content: formTemplate,
+                    area: ['350px', '300px'],
+                    skin: 'search_pop',
+                    success: function (layero, index) {
+                        layui.form.render();
+                    }
+                });
+            },
+            init: function () {
+                let self = this;
+                layui.form.on("select(moveStatus)", function (data) {
+                    self.moveDbParam.status = data.value;
+                });
+
+                // 文件上传
+                layui.upload.render({
+                    elem: '#uploadBtn',
+                    url: App.getUrl("/api/subject/subInfo/importXmzkDetailExcel"),
+                    accept: 'file', // 普通文件
+                    exts: 'xls|xlsx', // 限制文件类型
+                    done: function (res) {
+                        if (res.success === true) {
+                            self.getData();
+                            layui.layer.msg('导入成功!');
+                        } else {
+                            layui.layer.msg('导入失败:' + res.message, {icon: 5});
+                        }
+                    },
+                    error: function (res) {
+                        layui.layer.msg('上传失败,请稍后再试' + res.message, {icon: 5});
+                    }
+                });
+
+                App.postJson("/api/dict/query/index", {}, function (res) {
+                    self.JSDD = res.data.JSDD;
+                })
+
+                this.winH = document.body.clientHeight;
+                var nowdate = new Date();
+                nowdate.setMonth(nowdate.getMonth() + 1);
+                var y = nowdate.getFullYear();
+                var m = nowdate.getMonth() + 1;
+                var d = nowdate.getDate();
+                layui.laydate.render({
+                    elem: '#startTime',
+                    range: '~',
+                    theme: layDateTheme,
+                    /*     value: y + "-01-01 ~ " + y + "-12-31"*/
+                });
+                var formatwdate = y + '-' + m + '-' + d;
+                layui.laydate.render({
+                    elem: '#dateConfirm',
+                    theme: layDateTheme,
+                    value: formatwdate
+                });
+                /*  $("#month").val(new Date().getMonth() + 1);*/
+                var xmlx = [];
+                <c:forEach items="${XMLX}" var="xm">
+                xmlx.push({value: "${xm.code}", name: "${xm.title}"});
+                </c:forEach>
+
+
+                <%--var indusKindData = [];--%>
+                <%--<c:forEach items="${HYFL}" var="xm">--%>
+                <%--var childData = [];--%>
+                <%--<c:forEach items="${xm.children}" var="c">--%>
+                <%--childData.push({--%>
+                <%--    value: "${c.code}",--%>
+                <%--    name: "${c.title}",--%>
+                <%--})--%>
+                <%--</c:forEach>--%>
+                <%--indusKindData.push(--%>
+                <%--    {--%>
+                <%--        value: "${xm.code}",--%>
+                <%--        name: "${xm.title}",--%>
+                <%--        children: childData--%>
+                <%--    });--%>
+                <%--</c:forEach>--%>
+                <%--this.indusKind = layui.xmSelect.render({--%>
+                <%--    el: "#indusKind",--%>
+                <%--    language: 'zn',--%>
+                <%--    data: indusKindData,--%>
+                <%--});--%>
+
+
+                // var subInfoStatusData = [];
+                <c:forEach items="${subInfoStatus}" var="xm">
+                self.subInfoStatusData.push({value: "${xm.code}", name: "${xm.desc}"});
+                </c:forEach>
+                this.subInfoStatus = layui.xmSelect.render({
+                    el: "#subInfoStatus",
+                    language: 'zn',
+                    data: self.subInfoStatusData
+                });
+                console.log(self.subInfoStatusData)
+                layui.laydate.render({
+                    elem: '#year',
+                    type: 'year',
+                    theme: layDateTheme,
+                    /*                value: new Date().getFullYear()*/
+                })
+                var params = window.localStorage.getItem(this.cacheName);
+                if (params) {
+                    layui.form.val("searchForm", JSON.parse(params));
+                }
+                <%--if(${isHydw}) {--%>
+                <%--	this.light = layui.xmSelect.render({--%>
+                <%--		el: "#light",--%>
+                <%--		language:'zn',--%>
+                <%--		data: [--%>
+                <%--			{value: '0', name:'绿灯'},--%>
+                <%--			{value: '1', name:'黄灯'},--%>
+                <%--			{value: '2', name:'红灯'}--%>
+                <%--		]--%>
+                <%--	})--%>
+                <%--}--%>
+                this.getData();
+                window.addEventListener('message', this.receiveMessage, false);
+                window.parent.postMessage('init loaded')
+                window.toDetail = this.toDetail;
+                window.levelList = this.levelList;
+                window.showImage = this.showImage;
+                $(".hiddenParams").show();
+            },
+            leaderSupervise: function (obj) {
+
+                App.openLayer({
+                    title: "督办信息",
+                    content: App.getUrl("/meetingRecords/leaderMeeting?subId=" + obj.data.id),
+                    height: "600",
+                    width: "800"
+                })
+
+            },
+            setIsNew: function (obj) {
+                var self = this;
+                App.msg.confirm("是否移入新建库?", function () {
+                    App.postJson("/api/subject/subInfo/setIsNew", {subId: obj.data.id}, function (res) {
+                        if (res.success) {
+                            App.msg.success("设置成功");
+                            self.getData();
+                            layer.close(index);
+                        }
+                    });
+                });
+            },
+            showImage: function (that) {
+                var imageUrl = $(that).find("img").eq(0).attr("realUrl");
+                if (imageUrl) {
+                    // layer.open({
+                    // 	type: 2,
+                    // 	content: imageUrl,
+                    // 	area: ['500px', '1000px'],
+                    // 	offset: 'auto',
+                    // 	success: function(obj,index){
+                    // 		layer.full(index);
+                    // 	}
+                    // })
+                    layer.photos({
+                        photos: {
+                            "title": "",
+                            "id": "",
+                            "start": 0,
+                            "data": [
+                                {
+                                    "alt": "",
+                                    "pid": "",
+                                    "src": imageUrl,
+                                    "thumb": imageUrl
+                                }
+                            ]
+                        },
+                        anim: 5,
+                        closeBtn: "1",
+                        success: function () {
+                            //以鼠标位置为中心的图片滚动放大缩小
+                            $(document).on("mousewheel", ".layui-layer-photos", function (ev) {
+                                var oImg = this;
+                                var ev = event || window.event;//返回WheelEvent
+                                //ev.preventDefault();
+                                var delta = ev.detail ? ev.detail > 0 : ev.wheelDelta < 0;
+                                var ratioL = (ev.clientX - oImg.offsetLeft) / oImg.offsetWidth,
+                                    ratioT = (ev.clientY - oImg.offsetTop) / oImg.offsetHeight,
+                                    ratioDelta = !delta ? 1 + 0.1 : 1 - 0.1,
+                                    w = parseInt(oImg.offsetWidth * ratioDelta),
+                                    h = parseInt(oImg.offsetHeight * ratioDelta),
+                                    l = Math.round(ev.clientX - (w * ratioL)),
+                                    t = Math.round(ev.clientY - (h * ratioT));
+                                $(".layui-layer-photos").css({
+                                    width: w, height: h
+                                    , left: l, top: t
+                                });
+                                $("#layui-layer-photos").css({width: w, height: h});
+                                $("#layui-layer-photos>img").css({width: w, height: h});
+                            });
+                        }
+                        , end: function () { //销毁回调
+
+                        }
+
+                    });
+                }
+            },
+            setQueryForm2: function () {
+                $("#searchForm").find(".layui-form-item").parent()
+                    .removeClass("layui-col-xs3").removeClass("layui-col-sm3").removeClass("layui-col-md3")
+                    .addClass("layui-col-xs5").addClass("layui-col-sm5").addClass("layui-col-md5");
+            },
+            setQueryForm4: function () {
+                $("#searchForm").find(".layui-form-item").parent()
+                    .removeClass("layui-col-xs5").removeClass("layui-col-sm5").removeClass("layui-col-md5")
+                    .addClass("layui-col-xs3").addClass("layui-col-sm3").addClass("layui-col-md3");
+            },
+            showMore: function () {
+                this.showMoreFlag = !this.showMoreFlag;
+                if (this.showMoreFlag) {
+                    $(".hiddenParam").show();
+                } else {
+                    $(".hiddenParam").hide();
+                }
+                /*      var self = this;
+
+                    layer.open({
+                          title: "查询条件",
+                          type: 1,
+                          area: ['800px', ''],
+                          offset:0,
+                          shade: 0.1,
+                          shadeClose: true,
+                          content: $("#searchForm"),
+                          btn: ["查询"],
+                          yes: function (index) {
+                              self.search();
+                              layer.close(index);
+                          },
+                          success: function () {
+                              self.setQueryForm2();
+                              $(".hiddenParam").show();
+                              $(".hiddenParams").hide();
+                          },
+                          end: function () {
+                              self.setQueryForm4();
+                              $(".hiddenParam").hide();
+                              $(".hiddenParams").show();
+                          }
+                      })*/
+            },
+            getSearchParams: function () {
+                var param = layui.form.getValue("searchForm");
+                if (param.rangeDate) {
+                    param.beginDate = param.rangeDate.split(" ~ ")[0];
+                    param.endDate = param.rangeDate.split(" ~ ")[1];
+                    param.rangeDate = null;
+                }
+                if (this.light) {
+                    param.light = this.light.getValue("valueStr");
+                }
+                if (this.indusKind) {
+                    param.indusKind = this.indusKind.getValue("valueStr");
+                }
+                if (this.subInfoStatus) {
+                    param.statusList = this.subInfoStatus.getValue("valueList").map(item => item.value);
+                }
+                delete (param.select);
+                /*     param.kind = this.kind.getValue("value").sort().join(",");*/
+                return param;
+            },
+            getData: function () {
+                var self = this;
+                var param = this.getSearchParams();
+                console.log("param====getData",param)
+                param.pageNo = this.pageNo;
+                param.pageSize = this.pageSize;
+                param.orderBy = this.sort.field;
+                param.orderType = this.sort.type || "asc";
+                // 查询 table 数据列表
+                // App.postJson("/api/subInfo/query/all", param, function (res) {
+                //     self.dataList = res.rows;
+                //     self.loadPage(res.total);
+                //     self.loadTable();
+                // });
+
+                // 表格分页数据
+                App.postJson("/api/subInfo/query/queryPage", param, function (res) {
+                    self.dataList = res.rows;
+                    self.loadPage(res.total);
+                    self.loadTable();
+                });
+
+                // 统计数据
+                // App.postJson("/api/subInfo/query/statistics", param, function (res) {
+                //     if (res.success) {
+                //         self.beginRate = res.data;
+                //         self.beginRate.hyflList = self.beginRate.hyflData;
+                //         self.beginRate.jsddList = self.beginRate.jsddData;
+                //     }
+                // });
+
+                /*App.postJson("/api/subInfo/query/beginRate", param, function (res) {
+                    if (res.success) {
+                        self.beginRate = res.data;
+                        self.beginRate.hyflList = self.beginRate.hyflData.split(";");
+                        self.beginRate.tzlxList = self.beginRate.tzlxData.split(";");
+                        self.beginRate.jsddList = self.beginRate.jsddData.split(";");
+                        if (res.data.total != 0) {
+                            self.beginRate.beginRate = (res.data.beginNum * 100 / res.data.total).toFixed(2);
+                        } else {
+                            self.beginRate.beginRate = 0;
+                        }
+                        if (res.data.yearAmt != 0) {
+                            self.beginRate.amtRate = (res.data.yearAmtSj * 100 / res.data.yearAmt).toFixed(2);
+                        } else if (res.data.yearAmtSj != 0) {
+                            self.beginRate.amtRate = 100;
+                        } else {
+                            self.beginRate.amtRate = 0;
+                        }
+                        if (res.data.total != 0) {
+                            self.beginRate.noRate = (res.data.noNum * 100 / res.data.total).toFixed(2) + '%';
+                            self.beginRate.beginRate = (res.data.beginNum * 100 / res.data.total).toFixed(2) + '%';
+                            self.beginRate.endRate = (res.data.endNum * 100 / res.data.total).toFixed(2) + '%';
+                            self.beginRate.stopRate = (res.data.stopNum * 100 / res.data.total).toFixed(2) + '%';
+                            self.beginRate.aRate = (res.data.aNum * 100 / res.data.total).toFixed(2) + '%';
+                            self.beginRate.bRate = (res.data.bNum * 100 / res.data.total).toFixed(2) + '%';
+                            self.beginRate.cRate = (res.data.cNum * 100 / res.data.total).toFixed(2) + '%';
+                        } else {
+                            self.beginRate.noRate = "0%";
+                            self.beginRate.beginRate = "0%";
+                            self.beginRate.endRate = "0%";
+                            self.beginRate.stopRate = "0%";
+                            self.beginRate.aRate = "0%";
+                            self.beginRate.bRate = "0%";
+                            self.beginRate.cRate = "0%";
+                        }
+                    } else {
+                        self.beginRate.beginRate = 0;
+                        self.beginRate.amtRate = 0;
+                    }
+                });*/
+            },
+            getStatusName: function (status) {
+                const statusMap = {
+                    '0': '待处理',
+                    '1': '储备',
+                    '2': '新建',
+                    '3': '在建',
+                    '5': '移除项目',
+                    '9': '投产'
+                };
+                return statusMap[status] || '未知状态';
+            },
+            adjustFrozenRowHeight: function () {
+                $(".layui-table-body tr").each(function (index, val) {
+                    const fixedRow = $(".layui-table-fixed .layui-table-body table tr")[index];
+                    $(fixedRow).height($(val).height());
+                });
+            },
+            loadTable: function () {
+                this.dataList.forEach(item => {
+                    item.statusName = this.getStatusName(item.status);
+                });
+
+                const self = this;
+                layui.table.render({
+                    elem: '#table1',
+                    even: true,
+                    autoSort: false,
+                    initSort: self.sort,
+                    cols: [[
+                        {type: 'numbers', align: 'center', width: 44, title: '序号',fixed: 'left'},
+                        {field: 'subName', title: '项目名称', minWidth: 200, templet: '#subName',fixed: 'left'},
+                        {field: 'subjectName', title: '项目所在地', width: 100},
+                        {field: 'content', title: '建设内容', minWidth: 100,
+                            templet: function (row) {
+                                return row.content ? '<span class="cut" title="' + row.content + '">' + row.content + '</span>' : '';
+                            }},
+                        {
+                            field: 'amtTotal',
+                            title: '总投资',
+                            width: 100,
+                            templet: d => `<span class="new-roman">` + (d.amtTotal / 10000).toFixed(2) + `</span>` + "亿元",
+                        },
+                        {field: 'statusName', title: '状态', width: 60},
+                        {field: 'beginDate', title: '计划开工日期', minWidth: 100,
+                            templet: (d)=> `<span class="new-roman">` +  d.beginDate + `</span>`
+                        },
+                        {field: 'endDate', title: '计划完工日期', minWidth: 100,
+                            templet: (d)=> `<span class="new-roman">` +  d.endDate + `</span>`
+                        },
+                        {title: '操作', width: 160, toolbar: '#toolBar', fixed: 'right'},
+                    ]],
+                    fixed: true,
+                    height: $(window).height() - $('#table1').offset().top - 50,
+                    data: self.dataList,
+                    done: function () {
+                        self.adjustFrozenRowHeight();
+                    }
+                });
+
+                layui.table.on('tool(' + this.tableName + ')', obj => {
+                    const { event } = obj;
+                    if (typeof self[event] === 'function') {
+                        self[event](obj);
+                    } else {
+                        console.warn(`未定义的事件: ${event}`);
+                    }
+                });
+
+                layui.table.on('sort(' + this.tableName + ')', function (obj) {
+                    self.sort = obj;
+                    self.getData();
+                });
+            },
+            toBack: function (obj) {
+                layer.open({
+                    type: 1,
+                    title: "退回",
+                    content: $("#toBack"),
+                    area: ['600px', ''],
+                    btn: ["保存", "取消"],
+                    yes: function (index) {
+                        var data = layui.form.val("toBackForm");
+                        var status = data.status;
+                        if (status != undefined) {
+                            if (parseInt(obj.data.status) <= parseInt(data.status)) {
+                                App.msg.warn("只能退回下级状态,请检查!!!!");
+                                return;
+                            }
+
+                        }
+                        App.postJson("/api/subject/subInfo/toTemp", {
+                            subId: obj.data.id,
+                            status: data.status
+                        }, function (res) {
+                            if (res.success) {
+                                layer.msg("成功", {icon: 6, time: 1000});
+                                //
+                                window.location.href = App.getUrl("subject/subInfo/projTz?type=4");
+                            }
+                        });
+
+                    },
+                    close: function (index) {
+                        layer.close(index);
+                    }
+                })
+            },
+            isNoHide: function (obj) {
+                var self = this;
+                App.msg.confirm("是否移除在建库?", function () {
+                    App.postJson("/api/subject/subInfo/setBackIsHide", {subId: obj.data.id}, function (res) {
+                        if (res.success) {
+                            App.msg.success("设置成功");
+                            self.getData();
+                            layer.close(index);
+                        }
+                    });
+                });
+            },
+            isHide: function (obj) {
+                var self = this;
+                App.msg.confirm("是否移入在建库?", function () {
+                    App.postJson("/api/subject/subInfo/setIsHide", {subId: obj.data.id}, function (res) {
+                        if (res.success) {
+                            App.msg.success("设置成功");
+                            self.getData();
+                            layer.close(index);
+                        }
+                    });
+                });
+            },
+            loadPage: function (totalCount) {
+                var self = this;
+                layui.laypage.render({
+                    elem: 'pagination',
+                    count: totalCount,
+                    curr: self.pageNo,
+                    limit: self.pageSize,
+                    layout: ['count', 'prev', 'page', 'next', 'skip'],
+                    jump: function (obj, first) {
+                        //首次不执行
+                        if (!first) {
+                            self.pageNo = obj.curr;
+                            self.getData();
+                        }
+                    }
+                });
+            },
+            yearPlan: function (obj) {
+                window.location.href = App.getUrl("amtPlan/detail?subId=" + obj.data.id);
+            },
+            setSubReason: function (obj) {
+                var self = this;
+                layui.form.val("reasonForm", obj.data);
+                layer.open({
+                    type: 1,
+                    title: "项目原因录入",
+                    content: $("#setReason"),
+                    area: ['880px', '560px'],
+                    btn: ["保存", "取消"],
+                    yes: function (index) {
+                        var reason = layui.form.val("reasonForm");
+                        reason.subId = obj.data.id;
+                        App.postJson("/api/subject/subInfo/setSubReason", reason, function (res) {
+                            if (res.success) {
+                                App.msg.success("设置成功");
+                                self.getData();
+                                layer.close(index);
+                            }
+                        });
+                    },
+                    close: function (index) {
+                        layer.close(index);
+                    }
+                })
+            },
+            problem: function (obj) {
+                var self = this;
+                obj.data.status_reason = "";
+                layui.form.val("problemForm", obj.data);
+                layer.open({
+                    type: 1,
+                    title: "问题督办",
+                    content: $("#problem"),
+                    area: ['800px', '600px'],
+                    btn: ["保存", "取消"],
+                    yes: function (index) {
+                        var reason = layui.form.val("problemForm");
+                        reason.subId = obj.data.id;
+
+                        if (reason.statusF == "2" || reason.statusF == "1") {
+                            if (reason.status_reason == "" || reason.status_reason == undefined) {
+                                layer.msg("红灯,黄灯必须输入原因");
+                                return;
+                            }
+                        }
+                        App.postJson("/api/subject/subInfo/setStatus", {
+                            subId: obj.data.id,
+                            statusFgw: reason.statusF,
+                            reason: reason.status_reason,
+                            dateConfirm: reason.dateConfirm
+                        }, function (res) {
+                            if (res.success) {
+                                App.msg.success("设置成功");
+                                self.getData();
+                                layer.close(index);
+                            }
+                        });
+                    },
+                    close: function (index) {
+                        layer.close(index);
+                    }
+                })
+            },
+            exportTotalExcel: function () {
+                var param = this.getSearchParams();
+                App.common.utils.downFile(App.getUrl("subInfoExport/exportTotalExcelByStatus"), "POST", param, "项目情况表(总库).xlsx", "导出失败");
+            },
+            exportFixDetailExcel: function () {
+                var param = this.getSearchParams();
+                console.log("param====",param)
+                App.common.utils.downFile(App.getUrl("/subInfoExport/exportXmzkDetailExcel"), "POST", param, "项目明细表(总库).xlsx", "导出失败");
+            },
+            exportAnalysis: function () {
+                var param = this.getSearchParams();
+                App.common.utils.downFile(App.getUrl("/subInfoExport/xmzkAnalysisExport"), "POST", param, "“四个一批”工业项目情况分析报告.docx", "导出失败");
+            },
+            exportDetailExcel: function () {
+                var param = this.getSearchParams();
+                App.common.utils.downFile(App.getUrl("subInfoExport/exportDetailExcel"), "POST", param, "项目明细表(总库).xlsx", "导出失败");
+            },
+            exportExcel: function () {
+                var param = this.getSearchParams();
+                App.common.utils.downFile(App.getUrl("subInfoExport/exportSumExcel"), "POST", param, "项目情况表.xlsx", "导出失败");
+            },
+            exportExcelByIndusKind: function () {
+                var param = this.getSearchParams();
+                App.common.utils.downFile(App.getUrl("subInfoExport/exportExcelByIndusKind"), "POST", param, "项目情况表(按所属行业统计).xlsx", "导出失败");
+            },
+            exportSchedulingExcel: function () {
+                var param = this.getSearchParams();
+                App.common.utils.downFile(App.getUrl("subInfoExport/exportSchedulingExcel"), "POST", param, "项目调度表.xlsx", "导出失败");
+            },
+            /* exportExcel2: function(){
+                var param = this.getSearchParams();
+                 App.common.utils.downFile(App.getUrl("subInfoExport/exportExcelTz"),"POST", param,"项目详情信息表.xlsx", "导出失败");
+            }, */
+            exportMoreExcel: function () {
+                top.window.getSearchParams = this.getSearchParams;
+                App.openLayer({
+                    title: "自定义导出",
+                    content: App.getUrl("/subInfoExport/index"),
+                    height: "800",
+                    width: "1000"
+                })
+            },
+            toQcc: function (obj) {
+                window.open('https://www.qcc.com/web/search?key=' + obj.data.unitName, '_blank')
+            },
+
+            toManagerUnit: function (obj) {
+                //详情
+                var index = layer.open({
+                    type: 2,
+                    title: '',
+                    area: ['1000px', '800px'],
+                    // /subject/subInfo/editSubInfo
+                    content: App.getUrl("/subject/subInfo/manageUnit?subId=" + obj.data.id + "&queryType=3"),
+                });
+                layui.layer.full(index);
+            },
+            toDetail: function (obj) {
+                //详情
+                var index = layer.open({
+                    type: 2,
+                    title: '',
+                    area: ['1000px', '800px'],
+                    content: App.getUrl("/subject/subInfo/detailView2?layer=true&subId=" + obj.data.id + "&lastUrl=" + window.location.href),
+                });
+                layui.layer.full(index);
+            },
+            /*            toDetail: function (obj) {
+                            //详情
+                            var index = layer.open({
+                                type: 2,
+                                title: '',
+                                area: ['1000px', '800px'],
+                                content: App.getUrl("/subject/subInfo/detailView?layer=true&subId=" + obj.data.id + "&lastUrl=" + window.location.href),
+                            });
+                            layui.layer.full(index);
+                        },*/
+            levelList: function (field, title, val) {
+                //详情
+                var param = field + "," + title + "," + val
+                var params = encodeURIComponent(JSON.stringify(this.getSearchParams()));
+                var index = top.layer.open({
+                    type: 2,
+                    title: '',
+                    area: ['90%', '90%'],
+                    content: App.getUrl("/subject/subInfo/levelList?layer=true&type=" + this.getSearchParams().queryType + "&curParam=" + param + "&params=" + params),
+                });
+                //top.layer.full(index);
+            },
+            print: function (obj) {
+                window.open(App.getUrl("/subject/apply/downPdf?subId=" + obj.data.id));
+            },
+            toEditSubInfo: function (obj) {
+                window.location.href = App.getUrl("/subject/subInfo/editSubInfo2?subId=" + obj.data.id + "&queryType=3");
+            },
+            preNew: function (obj) {
+                window.location.href = App.getUrl("/subPreNew/todo?subId=" + obj.data.id);
+            },
+            toTh: function (obj) {
+                if (obj.data.statusJh == null || obj.data.statusJh == '0' || obj.data.statusJh == '1') {
+                    App.msg.confirm("是否需要退回到暂存状态?", function () {
+                        App.postJson("/api/subject/subInfo/toTemp", {subId: obj.data.id, status: "0"}, function (res) {
+                            if (res.success) {
+                                layer.msg("成功", {icon: 6, time: 1000});
+                                //
+                                window.location.href = App.getUrl("subject/subInfo/projTz");
+                            }
+                        });
+                    })
+                } else {
+                    App.msg.warn("已做过开工申报,需要走变更流程");
+                }
+            },
+            search: function () {
+                var param = layui.form.getValue("searchForm");
+                window.localStorage.setItem(this.cacheName, JSON.stringify(param));
+                this.pageNo = 1;
+                this.getData();
+            },
+            openExport: function () {
+                this.showExport = true;
+                console.log('移入了')
+            },
+            choseExport: function () {
+                this.showExport = false;
+                console.log('移出了')
+            },
+            receiveMessage (e) {
+                console.log('cb receiveMessage: ', e.data)
+                if (e.data.topBreadcrumb) {
+                    $(".top-breadcrumb").html(e.data.topBreadcrumb)
+                }
+            }
+        }
+    });
+</script>
+
+</body>
+</html>