diff --git a/wms_pro/hd/.idea/sonarlint/issuestore/index.pb b/wms_pro/hd/.idea/sonarlint/issuestore/index.pb
index 5abd183d..926684a2 100644
--- a/wms_pro/hd/.idea/sonarlint/issuestore/index.pb
+++ b/wms_pro/hd/.idea/sonarlint/issuestore/index.pb
@@ -135,8 +135,6 @@ m
 cnladmin-system/src/main/java/org/nl/wms/flow_manage/flow/controller/model/ActDeModelController.java,f/6/f6b31b91b229f78f8ac36ece953db50bf6d81854
 �
 bnladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/execution/dto/ExecutionQuery.java,a/4/a44b52a4bc649baab711c5bd57004aa22cc2206b
-w
-Gnladmin-system/src/main/java/org/nl/common/domain/entity/PageQuery.java,4/c/4c2e7c33185348f635f5a9dbcc6943e1266cd690
 p
 @nladmin-system/src/main/java/org/nl/common/enums/QueryTEnum.java,f/b/fb1fedd5a3547392fa64608ed6291c9931a5ae3d
 t
@@ -159,11 +157,13 @@ unladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/process/node
 �nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/process/nodeType/source/impl/MappingSourceDataTypeHandler.java,a/3/a3a5a2860090b68804b8fad26d512236f3eae5b4
 �
 Xnladmin-system/src/main/java/org/nl/wms/external_system/acs/service/WmsToAcsService.java,2/0/20d3f5ca66f748f0a2bada36023b0308d4d552c0
-�
-Znladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dto/FormDataQuery.java,9/0/90cde14dd61225ba9c416f9d10269bab669cd1ad
 �
 fnladmin-system/src/main/java/org/nl/wms/flow_manage/flow/controller/execution/ExecutionController.java,0/e/0e30069a5751c50d7cf828ec3c27e091f8565818
 �
 fnladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/execution/IActRuExecutionService.java,6/c/6cccbeca1a92061e0584fff09e8c598223b372a6
 �
-nnladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/execution/impl/ActRuExecutionServiceImpl.java,9/6/96baf0e9c082471a9e3e86559513272d2680fb09
\ No newline at end of file
+nnladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/execution/impl/ActRuExecutionServiceImpl.java,9/6/96baf0e9c082471a9e3e86559513272d2680fb09
+�
+onladmin-system/src/main/java/org/nl/wms/base_manage/class_standard/service/impl/BmClassStandardServiceImpl.java,b/1/b140d08f0cb476ebc6fa39caddd1c7f4819af4c3
+�
+]nladmin-system/src/main/java/org/nl/wms/config_manage/form_struc/service/dao/BmFormStruc.java,0/3/03deb92a49c3f6457dfffe6f76373226a7d40537
\ No newline at end of file
diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/config_manage/form_struc/controller/BmFormStrucController.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/config_manage/form_struc/controller/BmFormStrucController.java
index 3c6c6c0f..214826e0 100644
--- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/config_manage/form_struc/controller/BmFormStrucController.java
+++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/config_manage/form_struc/controller/BmFormStrucController.java
@@ -59,9 +59,10 @@ public class BmFormStrucController {
     @GetMapping
     public ResponseEntity<Object> queryAll(FormStrucQuery query, PageQuery pageQuery){
         //参数判读，参数解析，调用参数入库
-        Page<BmFormStruc> page = iBmFormStrucService.page(pageQuery.build(), query.build());
-        return new ResponseEntity<>(TableDataInfo.build(page),HttpStatus.OK);
+        //Page<BmFormStruc> page = iBmFormStrucService.page(pageQuery.build(), query.build());
+        return new ResponseEntity<>(iBmFormStrucService.queryAll(query,pageQuery),HttpStatus.OK);
     }
+
     @PostMapping
     public ResponseEntity<Object> save(@RequestBody JSONObject param){
         //参数判读，参数解析，调用参数入库
@@ -93,6 +94,17 @@ public class BmFormStrucController {
         return new ResponseEntity<>(list,HttpStatus.OK);
     }
 
+    @GetMapping("/getParentFormTypes")
+    public ResponseEntity<Object> getParentFormTypes(){
+        //参数判读，参数解析，调用参数入库
+        List<Map<String, Object>> select = iBmFormStrucService.listMaps(new QueryWrapper<BmFormStruc>().select("form_type", "form_name").isNull("parent_id").groupBy("form_type"));
+        List<Map> list = new ArrayList<>();
+        for (Map<String, Object> map : select) {
+            list.add(MapOf.of("lable",map.get("form_name"),"value",map.get("form_type")));
+        }
+        return new ResponseEntity<>(list,HttpStatus.OK);
+    }
+
     /**
      * @ONLY:动态表单表头信息
      * 数据结构:{"type":xxx,"name":xxx,"desc":xxx,"item":{"desc":"描述"}}
diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/config_manage/form_struc/service/IBmFormStrucService.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/config_manage/form_struc/service/IBmFormStrucService.java
index 49437f1d..7248e384 100644
--- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/config_manage/form_struc/service/IBmFormStrucService.java
+++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/config_manage/form_struc/service/IBmFormStrucService.java
@@ -18,4 +18,5 @@ public interface IBmFormStrucService extends IService<BmFormStruc> {
     BmFormStruc getFormType(String form_type);
 
     Object queryAll(FormStrucQuery query, PageQuery pageQuery);
+
 }
diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/config_manage/form_struc/service/impl/BmFormStrucServiceImpl.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/config_manage/form_struc/service/impl/BmFormStrucServiceImpl.java
index fccd183d..fd7a1cbf 100644
--- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/config_manage/form_struc/service/impl/BmFormStrucServiceImpl.java
+++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/config_manage/form_struc/service/impl/BmFormStrucServiceImpl.java
@@ -52,7 +52,7 @@ public class BmFormStrucServiceImpl extends ServiceImpl<BmFormStrucMapper, BmFor
     private void findChildren(List<BmFormStruc> records) {
         for (BmFormStruc record : records) {
             LambdaQueryWrapper<BmFormStruc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-            lambdaQueryWrapper.eq(BmFormStruc::getParent_id, record.getForm_type());
+            lambdaQueryWrapper.eq(BmFormStruc::getParent_id, record.getId());
             List<BmFormStruc> list = this.list(lambdaQueryWrapper);
             if (CollectionUtil.isNotEmpty(list)) {
                 record.setHasChildren(true);
diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/controller/PmFormDataController.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/controller/PmFormDataController.java
index ba6daf7e..d2dde30f 100644
--- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/controller/PmFormDataController.java
+++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/controller/PmFormDataController.java
@@ -36,9 +36,14 @@ public class PmFormDataController {
 
     @GetMapping()
     public ResponseEntity<Object> queryAll(FormDataQuery query, PageQuery page) {
-//        Page<PmFormData> result = formDataService.page(page.build(), query.build());
-//        Object o = formDataService.queryAll(query,page);
-        return new ResponseEntity<>(TableDataInfo.build(formDataService.page(page.build(),query.build())), HttpStatus.CREATED);
+        return new ResponseEntity<>(formDataService.queryAll(query,page), HttpStatus.CREATED);
+    }
+
+    @GetMapping("/getSonFormData/{id}")
+    public ResponseEntity<Object> getSonDtlFormData(@PathVariable String id){
+        //参数判读，参数解析，调用参数入库
+        //Page<BmFormStruc> page = iBmFormStrucService.page(pageQuery.build(), query.build());
+        return new ResponseEntity<>(formDataService.getSonDtlFormData(id),HttpStatus.OK);
     }
 
 
diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/IPmFormDataService.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/IPmFormDataService.java
index 8acf2ac5..d4af142f 100644
--- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/IPmFormDataService.java
+++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/IPmFormDataService.java
@@ -1,7 +1,9 @@
 package org.nl.wms.pm_manage.form_data.service;
 
+import org.nl.common.domain.entity.PageQuery;
 import org.nl.wms.pm_manage.form_data.service.dao.PmFormData;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.nl.wms.pm_manage.form_data.service.dto.FormDataQuery;
 import org.nl.wms.sync_manage.service.form_mapping.dao.SyncFormMapping;
 
 import java.util.List;
@@ -20,4 +22,7 @@ public interface IPmFormDataService extends IService<PmFormData> {
 
     List<PmFormData> syncAnalyse(SyncFormMapping mapping, String dataString);
 
+    Object queryAll(FormDataQuery query, PageQuery page);
+
+    Object getSonDtlFormData(String id);
 }
diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/PmFormData.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/PmFormData.java
index 252219d4..d94c3d77 100644
--- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/PmFormData.java
+++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/PmFormData.java
@@ -5,6 +5,7 @@ import java.math.BigDecimal;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
+
 import java.io.Serializable;
 import java.util.List;
 
@@ -23,7 +24,7 @@ import org.nl.common.enums.StatusEnum;
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
-@TableName(value = "pm_form_data",autoResultMap = true)
+@TableName(value = "pm_form_data", autoResultMap = true)
 public class PmFormData implements Serializable {
 
     private static final long serialVersionUID = 1L;
@@ -115,5 +116,8 @@ public class PmFormData implements Serializable {
      */
     private String parent_id;
 
+    @TableField(exist = false)
+    private Boolean hasChildren = false;
+
 
 }
diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/mapper/PmFormDataMapper.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/mapper/PmFormDataMapper.java
index 025fe94c..55142dcf 100644
--- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/mapper/PmFormDataMapper.java
+++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/mapper/PmFormDataMapper.java
@@ -1,7 +1,11 @@
 package org.nl.wms.pm_manage.form_data.service.dao.mapper;
 
+import org.apache.ibatis.annotations.Param;
 import org.nl.wms.pm_manage.form_data.service.dao.PmFormData;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.nl.wms.pm_manage.form_data.service.dto.FormDataQuery;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +17,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface PmFormDataMapper extends BaseMapper<PmFormData> {
 
+    List<PmFormData> query(@Param("query") FormDataQuery query);
+
+//    List<PmFormData> query(@Param("id") String id);
 }
diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/mapper/xml/PmFormDataMapper.xml b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/mapper/xml/PmFormDataMapper.xml
index 0c7aaafd..ba7e1df1 100644
--- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/mapper/xml/PmFormDataMapper.xml
+++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/mapper/xml/PmFormDataMapper.xml
@@ -2,4 +2,42 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.nl.wms.pm_manage.form_data.service.dao.mapper.PmFormDataMapper">
 
+    <resultMap id="BaseResultMap" type="org.nl.wms.pm_manage.form_data.service.dao.PmFormData">
+        <result  property="id" column="id"/>
+        <result  property="code" column="code"/>
+        <result  property="proc_inst_id" column="proc_inst_id"/>
+        <result  property="biz_code" column="biz_code"/>
+        <result  property="biz_id" column="biz_id"/>
+        <result  property="biz_date" column="biz_date"/>
+        <result  property="form_type" column="form_type"/>
+        <result  property="status" column="status"/>
+        <result  property="create_name" column="create_name"/>
+        <result  property="create_time" column="create_time"/>
+        <result  property="material_id" column="material_id"/>
+        <result  property="qty" column="qty"/>
+        <result  property="pcsn" column="pcsn"/>
+        <result  property="vehicle_code" column="vehicle_code"/>
+        <result  property="parent_id" column="parent_id"/>
+        <result  property="form_data" column="form_data" typeHandler="com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler"/>
+        <result  property="unit_id" column="unit_id"/>
+    </resultMap>
+
+    <select id="query" resultMap="BaseResultMap">
+        SELECT
+        child.*
+        FROM
+        pm_form_data child
+        <where>
+            <if test="query.form_type != null and query.form_type != ''">
+                and form_type = #{query.form_type}
+            </if>
+            <if test="query.form_query != null and query.form_query.size() > 0">
+                <foreach collection="query.form_query" item="value" index="key" >
+                    <if test="value != null and value != ''">
+                        and JSON_CONTAINS(child.form_data, '{"${key}":"${value}"}')
+                    </if>
+                </foreach>
+            </if>
+        </where>
+    </select>
 </mapper>
diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dto/FormDataQuery.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dto/FormDataQuery.java
index 817ab372..19c3b0a4 100644
--- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dto/FormDataQuery.java
+++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dto/FormDataQuery.java
@@ -4,6 +4,8 @@ import lombok.Data;
 import org.nl.common.domain.entity.BaseQuery;
 import org.nl.wms.pm_manage.form_data.service.dao.PmFormData;
 
+import java.util.Map;
+
 /*
  * @author ZZQ
  * @Date 2024/5/11 17:46
@@ -12,4 +14,5 @@ import org.nl.wms.pm_manage.form_data.service.dao.PmFormData;
 public class FormDataQuery extends BaseQuery<PmFormData> {
 
     private String form_type;
+    private Map<String,String> form_query;
 }
diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java
index 177aa14a..42b2fd22 100644
--- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java
+++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java
@@ -1,18 +1,26 @@
 package org.nl.wms.pm_manage.form_data.service.impl;
 
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.github.pagehelper.Page;
+import com.github.pagehelper.PageHelper;
 import org.apache.commons.lang3.StringUtils;
+import org.nl.common.TableDataInfo;
+import org.nl.common.domain.entity.PageQuery;
 import org.nl.common.domain.exception.BadRequestException;
 import org.nl.common.utils.*;
 import org.nl.wms.config_manage.form_struc.service.IBmFormStrucService;
 import org.nl.wms.config_manage.form_struc.service.dao.BmFormStruc;
+import org.nl.wms.md_manage.group_dick.service.dao.MdGruopDick;
 import org.nl.wms.pm_manage.form_data.service.dao.PmFormData;
 import org.nl.wms.pm_manage.form_data.service.dao.mapper.PmFormDataMapper;
 import org.nl.wms.pm_manage.form_data.service.IPmFormDataService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.nl.wms.pm_manage.form_data.service.dto.FormDataQuery;
 import org.nl.wms.sync_manage.service.form_mapping.ISyncFormMappingService;
 import org.nl.wms.sync_manage.service.form_mapping.dao.SyncFormMapping;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -25,15 +33,15 @@ import java.util.*;
 /**
  * <p>
  * 表单信息表 服务实现类
- *                  表单结构
- *  ---------------BmFormStruc---------------
- *                      /\
- *                    /   \
- *                  /      \
- *        表单数据 /         \表单同步配置表
- *        PmFormData       BmFormSync
- *   表单回显时：自定义字段通过表单结构获取lebel
- *   表单同步设置时：通过表单结构获取所有字段，进行配置字段映射，或者class处理
+ * 表单结构
+ * ---------------BmFormStruc---------------
+ * /\
+ * /   \
+ * /      \
+ * 表单数据 /         \表单同步配置表
+ * PmFormData       BmFormSync
+ * 表单回显时：自定义字段通过表单结构获取lebel
+ * 表单同步设置时：通过表单结构获取所有字段，进行配置字段映射，或者class处理
  * </p>
  *
  * @author generator
@@ -51,11 +59,11 @@ public class PmFormDataServiceImpl extends ServiceImpl<PmFormDataMapper, PmFormD
 
     @Override
     public Integer syncFormData(String form_type, String dataString) {
-        if (StringUtils.isEmpty(form_type)||StringUtils.isEmpty(dataString)){
+        if (StringUtils.isEmpty(form_type) || StringUtils.isEmpty(dataString)) {
             throw new BadRequestException("请求参数不能为空");
         }
         SyncFormMapping syncFormMapping = iSyncFormMappingService.getOne(new QueryWrapper<SyncFormMapping>().eq("form_type", form_type));
-        if (syncFormMapping == null){
+        if (syncFormMapping == null) {
             throw new BadRequestException("当前表单无同步配置信息");
         }
         List<PmFormData> pmFormDatas = this.syncAnalyse(syncFormMapping, dataString);
@@ -66,15 +74,15 @@ public class PmFormDataServiceImpl extends ServiceImpl<PmFormDataMapper, PmFormD
     @Override
     public List<PmFormData> syncAnalyse(SyncFormMapping formMapping, String sourceString) {
         BmFormStruc one = formStrucService.getOne(new QueryWrapper<BmFormStruc>().eq("form_type", formMapping.getForm_type()));
-        if (one==null){
-            throw new BadRequestException("当前表单无配置信息"+formMapping.getForm_type());
+        if (one == null) {
+            throw new BadRequestException("当前表单无配置信息" + formMapping.getForm_type());
         }
         List<PmFormData> result = new ArrayList<>();
         JSONObject sourceData = JSONObject.parseObject(sourceString);
-        if (StringUtils.isNotEmpty(one.getConvert_json())){
+        if (StringUtils.isNotEmpty(one.getConvert_json())) {
             sourceData = sourceData.getJSONObject(one.getConvert_json());
         }
-        JSONObject target = mappingParse(formMapping.getMapping_json(), one,sourceData );
+        JSONObject target = mappingParse(formMapping.getMapping_json(), one, sourceData);
         Object items = target.remove("item");
         target.put("id", IdUtil.getStringId());
         target.put("code", CodeUtil.getNewCode(formMapping.getForm_type()));
@@ -82,7 +90,7 @@ public class PmFormDataServiceImpl extends ServiceImpl<PmFormDataMapper, PmFormD
         target.put("create_name", SecurityUtils.getCurrentNickName());
         PmFormData mst = target.toJavaObject(PmFormData.class);
         result.add(mst);
-        if (items!=null){
+        if (items != null) {
             JSONArray items_arr = (JSONArray) items;
             for (int i = 0; i < items_arr.size(); i++) {
                 JSONObject itemTarget = items_arr.getJSONObject(i);
@@ -90,7 +98,7 @@ public class PmFormDataServiceImpl extends ServiceImpl<PmFormDataMapper, PmFormD
                 itemTarget.put("code", CodeUtil.getNewCode(formMapping.getForm_type()));
                 itemTarget.put("create_time", DateUtil.now());
                 itemTarget.put("create_name", SecurityUtils.getCurrentNickName());
-                itemTarget.put("parent_id",mst.getId());
+                itemTarget.put("parent_id", mst.getId());
                 PmFormData dtl = itemTarget.toJavaObject(PmFormData.class);
                 result.add(dtl);
             }
@@ -98,13 +106,53 @@ public class PmFormDataServiceImpl extends ServiceImpl<PmFormDataMapper, PmFormD
         return result;
     }
 
-    private JSONObject mappingParse(JSONArray mapping_json, BmFormStruc formStruc, JSONObject sourceData){
+    @Override
+    public Object queryAll(FormDataQuery query, PageQuery pageQuery) {
+        Page<Object> page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize());
+        page.setOrderBy("create_time DESC");
+        List<PmFormData> pmFormData = this.baseMapper.query(query);
+        TableDataInfo<PmFormData> build = TableDataInfo.build(pmFormData);
+        List<PmFormData> content = build.getContent();
+        for (PmFormData formData : content) {
+            LambdaQueryWrapper<PmFormData> lqw = new LambdaQueryWrapper<>();
+            lqw.eq(PmFormData::getParent_id, formData.getId());
+            List<PmFormData> list = this.baseMapper.selectList(lqw);
+            if (CollectionUtil.isNotEmpty(list)) {
+                formData.setHasChildren(true);
+            }
+        }
+        build.setTotalElements(page.getTotal());
+        return build;
+    }
 
-        if (CollectionUtils.isEmpty(sourceData)){
+    @Override
+    public Object getSonDtlFormData(String id) {
+        LambdaQueryWrapper<PmFormData> lqw = new LambdaQueryWrapper<>();
+        lqw.eq(PmFormData::getParent_id, id);
+        return this.list(lqw);
+//        List<PmFormData> pmFormData = this.baseMapper.query(id);
+//        TableDataInfo<PmFormData> build = TableDataInfo.build(pmFormData);
+//        List<PmFormData> content = build.getContent();
+//        for (PmFormData formData : content) {
+//            LambdaQueryWrapper<PmFormData> lqw = new LambdaQueryWrapper<>();
+//            lqw.eq(PmFormData::getParent_id, formData.getId());
+//            List<PmFormData> list = this.baseMapper.selectList(lqw);
+//            if (CollectionUtil.isNotEmpty(list)) {
+//                formData.setHasChildren(true);
+//            }
+//        }
+//        build.setTotalElements(page.getTotal());
+//        return build;
+    }
+
+
+    private JSONObject mappingParse(JSONArray mapping_json, BmFormStruc formStruc, JSONObject sourceData) {
+
+        if (CollectionUtils.isEmpty(sourceData)) {
             throw new BadRequestException("当前业务数据为空");
         }
         //暂时只有两层
-        JSONArray mst_mapping_json = mapping_json.size()>1?(JSONArray)mapping_json.remove(0):mapping_json.getJSONArray(0);
+        JSONArray mst_mapping_json = mapping_json.size() > 1 ? (JSONArray) mapping_json.remove(0) : mapping_json.getJSONArray(0);
         Map<String, JSONObject> fieldMapping = mst_mapping_json.stream().collect(HashMap::new, (formMap, o) -> {
             JSONObject item = (JSONObject) o;
             formMap.put(item.getString("value"), item);
@@ -114,11 +162,11 @@ public class PmFormDataServiceImpl extends ServiceImpl<PmFormDataMapper, PmFormD
         JSONObject data = fieldMapping(fields, fieldMapping, sourceData);
         data.put("form_type",formStruc.getForm_type());
         JSONObject form_param = formStruc.getForm_param();
-        if (form_param!=null){
+        if (form_param != null) {
             JSONObject form_data = fieldMapping(form_param.keySet(), fieldMapping, sourceData);
-            data.put("form_data",form_data);
+            data.put("form_data", form_data);
         }
-        if (formStruc.getHas_child()){
+        if (formStruc.getHas_child()) {
             BmFormStruc itemStruc = formStrucService.getOne(new QueryWrapper<BmFormStruc>().eq("parent_id", formStruc.getId()));
             JSONArray sourceDtls = sourceData.getJSONArray(itemStruc.getConvert_json());
 
@@ -126,28 +174,29 @@ public class PmFormDataServiceImpl extends ServiceImpl<PmFormDataMapper, PmFormD
             for (int i = 0; i < sourceDtls.size(); i++) {
                 dtls.add(this.mappingParse(mapping_json, itemStruc, sourceDtls.getJSONObject(i)));
             }
-            data.put("item",dtls);
+            data.put("item", dtls);
         }
         return data;
     }
-    private JSONObject fieldMapping(Set<String> fields, Map<String, JSONObject> fieldMapping, JSONObject sourceData){
+
+    private JSONObject fieldMapping(Set<String> fields, Map<String, JSONObject> fieldMapping, JSONObject sourceData) {
         Map<String, String> SpelMap = new HashMap<>();
         JSONObject data = new JSONObject();
         for (String field : fields) {
-            if (StringUtils.isNotEmpty(field)){
+            if (StringUtils.isNotEmpty(field)) {
                 JSONObject itemMappingConfig = fieldMapping.get(field);
-                if (itemMappingConfig == null){
+                if (itemMappingConfig == null) {
                     throw new BadRequestException(String.format("当前表单没有配置字段:%s 映射", new String[]{field}));
                 }
-                if (StringUtils.isNotEmpty(itemMappingConfig.getString("skipExpression"))){
+                if (StringUtils.isNotEmpty(itemMappingConfig.getString("skipExpression"))) {
                     //el表达式解析
-                    SpelMap.put(field,itemMappingConfig.getString("skipExpression"));
-                }else {
-                    data.put(field,sourceData.getString(itemMappingConfig.getString("mapping_field")));
+                    SpelMap.put(field, itemMappingConfig.getString("skipExpression"));
+                } else {
+                    data.put(field, sourceData.getString(itemMappingConfig.getString("mapping_field")));
                 }
             }
         }
-        if (!CollectionUtils.isEmpty(SpelMap)){
+        if (!CollectionUtils.isEmpty(SpelMap)) {
             Map<String, String> parse = SpelUtil.parse(sourceData, SpelMap);
             data.putAll(parse);
         }
diff --git a/wms_pro/qd/src/views/wms/pm_manage/form_data/ViewDialog.vue b/wms_pro/qd/src/views/wms/pm_manage/form_data/ViewDialog.vue
new file mode 100644
index 00000000..1b6f6794
--- /dev/null
+++ b/wms_pro/qd/src/views/wms/pm_manage/form_data/ViewDialog.vue
@@ -0,0 +1,226 @@
+<!--suppress ALL -->
+<template>
+  <el-dialog
+    append-to-body
+    title="单据详情"
+    :visible.sync="dialogVisible"
+    fullscreen
+    @close="close"
+    @open="open"
+  >
+    <el-form ref="form" style="border: 1px solid #cfe0df;margin-top: 10px;padding-top: 10px;" :inline="true"
+             :model="form" size="mini" label-width="100px" label-suffix=":">
+      <el-form-item label="单据编号" prop="code">
+        <el-input v-model="form.code" disabled placeholder="系统生成" clearable style="width: 210px"/>
+      </el-form-item>
+      <el-form-item label="单据类型" prop="form_type">
+        <el-input v-model="form.form_type" disabled clearable style="width: 210px"/>
+      </el-form-item>
+      <el-form-item label="业务单据编码" prop="biz_code">
+        <el-input v-model="form.biz_code" disabled clearable style="width: 210px"/>
+      </el-form-item>
+      <el-form-item label="业务单据时间" prop="biz_date">
+        <!--        <el-date-picker v-model="form.biz_date" type="date" placeholder="选择日期" style="width: 210px"-->
+        <!--                        value-format="yyyy-MM-dd" :disabled="true"/>-->
+        <el-input v-model="form.biz_date" disabled clearable style="width: 210px"/>
+      </el-form-item>
+      <el-form-item label="批次" prop="pcsn">
+        <el-input v-model="form.pcsn" disabled clearable style="width: 210px"/>
+      </el-form-item>
+      <el-form-item label="物料数量" prop="qty">
+        <el-input v-model="form.qty" disabled clearable style="width: 210px"/>
+      </el-form-item>
+      <el-form-item label="载具编号" prop="vehicle_code">
+        <el-input v-model="form.vehicle_code" disabled clearable style="width: 210px"/>
+      </el-form-item>
+      <el-form-item label="单据状态" prop="status">
+        <el-input v-model="form.status" disabled clearable style="width: 210px"/>
+      </el-form-item>
+      <el-form-item label="创建时间" prop="create_time">
+        <!--        <el-date-picker v-model="form.create_time" type="date" placeholder="选择日期" style="width: 210px"-->
+        <!--                        value-format="yyyy-MM-dd" :disabled="true"/>-->
+        <el-input v-model="form.create_time" disabled clearable style="width: 210px"/>
+      </el-form-item>
+      <template v-for="(col,index) in cols">
+        <el-form-item label="col.lable" prop="bill_code">
+          <label slot="label">{{ col.lable }}:</label>
+          <el-input disabled v-model="form.form_data[col.value]" :value="col.value" clearable style="width: 210px"/>
+        </el-form-item>
+      </template>
+    </el-form>
+    <div class="crud-opts2">
+      <span class="role-span2">单据明细</span>
+    </div>
+    <el-card class="box-card" shadow="never" :body-style="{padding:'0'}">
+      <!--表格渲染-->
+      <el-table
+        ref="table"
+        :data="tableDtl"
+        style="width: 100%;"
+        max-height="300"
+        size="mini"
+        border
+        :highlight-current-row="true"
+        :header-cell-style="{background:'#f5f7fa',color:'#606266'}"
+        @current-change="handleDtlCurrentChange"
+      >
+        <el-table-column prop="code" label="单据编码" show-overflow-tooltip width="120"/>
+        <el-table-column prop="form_type" label="单据类型" show-overflow-tooltip width="120"/>
+        <el-table-column prop="biz_code" label="业务单据编码" show-overflow-tooltip width="120"/>
+        <el-table-column prop="biz_date" label="业务单据时间" show-overflow-tooltip width="130"/>
+        <el-table-column prop="material_id" label="物料id" show-overflow-tooltip width="120"/>
+        <el-table-column prop="pcsn" label="批次" show-overflow-tooltip width="120"/>
+        <el-table-column prop="qty" label="物料数量" show-overflow-tooltip/>
+        <el-table-column prop="vehicle_code" label="载具编号" show-overflow-tooltip width="120"/>
+        <el-table-column prop="status" label="单据状态" show-overflow-tooltip width="120"/>
+        <el-table-column prop="proc_inst_id" label="对应流程实例id" show-overflow-tooltip width="120"/>
+        <el-table-column prop="parent_id" label="父单据数据id" show-overflow-tooltip width="120"/>
+        <el-table-column width="130" show-overflow-tooltip v-for="(item, index) in cols" :key="item.value"
+                         :label="item.lable">
+          <template slot-scope="scope">{{ scope.row.form_data[item.value] }}</template>
+        </el-table-column>
+        <el-table-column prop="create_time" label="创建时间"/>
+      </el-table>
+    </el-card>
+  </el-dialog>
+</template>
+
+<script>
+
+import {crud} from '@crud/crud'
+import crudFormData, {getSonFormData} from './formData'
+import formstruc from '@/views/wms/config_manage/formStruc/formstruc'
+
+export default {
+  name: 'ViewDialog',
+  components: {formstruc},
+  mixins: [crud()],
+  dicts: ['ST_INV_CP_IN_TYPE', 'product_area', 'IO_BILL_STATUS', 'task_status', 'SCH_TASK_TYPE_DTL', 'PCS_SAL_TYPE'],
+  props: {
+    dialogShow: {
+      type: Boolean,
+      default: false
+    },
+    rowmst: {
+      type: Object
+    }
+  },
+  data() {
+    return {
+      cols: [],
+      dialogVisible: false,
+      tableDtl: [],
+      tabledis: [],
+      billtypelist: [],
+      storlist: [],
+      currentdtl: null,
+      currentDis: {},
+      form: {}
+    }
+  },
+  watch: {
+    dialogShow: {
+      handler(newValue) {
+        this.dialogVisible = newValue
+      }
+    },
+    rowmst: {
+      handler(newValue) {
+        this.form = newValue
+      }
+    }
+  },
+  methods: {
+    open() {
+
+    },
+    setForm(row) {
+      this.dialogVisible = true
+      this.form = row
+      formstruc.getHeader(this.form.form_type).then(res => {
+        this.cols = res
+      })
+      this.queryTableDtl(row.id)
+    },
+    close() {
+      this.dialogVisible = false
+    },
+    stateFormat(row, column) {
+      return this.dict.label.IO_BILL_STATUS[row.bill_status]
+    },
+    taskdtl_typeFormat(row) {
+      return this.dict.label.SCH_TASK_TYPE_DTL[row.taskdtl_type]
+    },
+    task_statusFormat(row) {
+      return this.dict.label.task_status[row.task_status]
+    },
+    work_statusFormat(row) {
+      return this.dict.label.work_status[row.work_status]
+    },
+    handleDtlCurrentChange(current) {
+      if (current !== null) {
+        this.tabledis = []
+        this.currentdtl = current
+        this.queryTableDdis()
+      } else {
+        this.tabledis = []
+        this.currentdtl = {}
+      }
+    },
+    invtypeFormat(row, column) {
+      for (const item of this.billtypelist) {
+        if (item.code === row.source_bill_type) {
+          return item.name
+        }
+      }
+    },
+    handleDisCurrentChange(current) {
+      this.currentDis = current
+    },
+    queryTableDtl(id) {
+      crudFormData.getSonFormData(id).then(res => {
+        this.tableDtl = res
+      })
+    },
+    queryTableDdis() {
+      if (this.currentdtl !== null) {
+        crudProductIn.getIosInvDis({'iostorinvdtl_id': this.currentdtl.iostorinvdtl_id}).then(res => {
+          this.tabledis = res
+        }).catch(() => {
+          this.tabledis = []
+        })
+      }
+    },
+    formatStatus(row) {
+      return this.dict.label.task_status[row.task_status]
+    },
+    formatBaseType(row) {
+      return this.dict.label.PCS_SAL_TYPE[row.base_bill_type]
+    }
+  }
+}
+</script>
+
+<style>
+.crud-opts2 {
+  padding: 0;
+  display: -webkit-flex;
+  display: flex;
+  align-items: center;
+}
+
+.crud-opts2 .el-dialog__title2 {
+  line-height: 24px;
+  font-size: 20px;
+  color: #303133;
+}
+
+.crud-opts2 .role-span2 {
+  padding: 0px 0px 20px 0px;
+}
+
+.crud-opts2 {
+  padding: 10px 0px 0px 50px;
+}
+
+</style>
diff --git a/wms_pro/qd/src/views/wms/pm_manage/form_data/formData.js b/wms_pro/qd/src/views/wms/pm_manage/form_data/formData.js
index f22c78d8..dc84c7ca 100644
--- a/wms_pro/qd/src/views/wms/pm_manage/form_data/formData.js
+++ b/wms_pro/qd/src/views/wms/pm_manage/form_data/formData.js
@@ -31,5 +31,19 @@ export function getFormType() {
   })
 }
 
+export function getParentFormTypes() {
+  return request({
+    url: 'api/bmFormStruc/getParentFormTypes',
+    method: 'get',
+  })
+}
 
-export default { add, edit, del, getFormType }
+export function getSonFormData(id) {
+  return request({
+    url: 'api/pmFormData/getSonFormData/' + id,
+    method: 'get',
+  })
+}
+
+
+export default {add, edit, del, getFormType, getParentFormTypes, getSonFormData}
diff --git a/wms_pro/qd/src/views/wms/pm_manage/form_data/index.vue b/wms_pro/qd/src/views/wms/pm_manage/form_data/index.vue
index 98dcc42c..ca7176a4 100644
--- a/wms_pro/qd/src/views/wms/pm_manage/form_data/index.vue
+++ b/wms_pro/qd/src/views/wms/pm_manage/form_data/index.vue
@@ -27,24 +27,13 @@
                 :label="item.label"
               />
             </el-select>
-            <!--            <el-select-->
-            <!--              v-model="query.form_type"-->
-            <!--              placeholder="请选择单据类型"-->
-            <!--              clearable-->
-            <!--              filterable-->
-            <!--              size="mini"-->
-            <!--              class="filter-item"-->
-            <!--              style="width: 185px;"-->
-            <!--            >-->
-            <!--              <el-option-->
-            <!--                v-for="item in fromTypes"-->
-            <!--                :key="item.value"-->
-            <!--                :label="item.label"-->
-            <!--                :value="item.value"-->
-            <!--              >-->
-            <!--              </el-option>-->
-            <!--            </el-select>-->
           </el-form-item>
+          <template v-if="hideShowDialog" v-for="(col,index) in cols">
+            <el-form-item label="col.lable">
+              <label slot="label">{{ col.lable }}:</label>
+              <el-input v-model="query.form_query[col.value]" :value="col.value" clearable style="width: 210px"/>
+            </el-form-item>
+          </template>
           <rrOperation :crud="crud"/>
         </el-form>
       </div>
@@ -68,21 +57,38 @@
         >
           导入
         </el-button>
+        <!--        <el-button-->
+        <!--          slot="right"-->
+        <!--          class="filter-item"-->
+        <!--          icon="el-icon-view"-->
+        <!--          size="mini"-->
+        <!--          @click="hideShow"-->
+        <!--        >-->
+        <!--        </el-button>-->
+        <el-button
+          slot="right"
+          class="filter-item"
+          icon="el-icon-view"
+          size="mini"
+          @click="hideShow"
+        >
+        </el-button>
       </crudOperation>
+
       <!--表格渲染-->
       <el-table
         ref="table"
         v-loading="crud.loading"
         lazy
-        :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
         :data="crud.data"
-        row-key="id"
-        @select="crud.selectChange"
-        @select-all="crud.selectAllChange"
-        @selection-change="crud.selectionChangeHandler"
       >
         <el-table-column type="selection" width="55"/>
-        <el-table-column prop="code" label="单据编码" show-overflow-tooltip width="120"/>
+        <el-table-column prop="code" label="单据编码" show-overflow-tooltip width="120">
+          <template slot-scope="scope">
+            <el-link v-if="scope.row.hasChildren" type="warning" @click="toView(scope.row)">{{ scope.row.code }}</el-link>
+            <span v-else>{{ scope.row.code }}</span>
+          </template>
+        </el-table-column>
         <el-table-column prop="form_type" label="单据类型" show-overflow-tooltip width="120"/>
         <el-table-column prop="biz_code" label="业务单据编码" show-overflow-tooltip width="120"/>
         <el-table-column prop="biz_date" label="业务单据时间" show-overflow-tooltip width="130"/>
@@ -93,8 +99,9 @@
         <el-table-column prop="status" label="单据状态" show-overflow-tooltip width="120"/>
         <el-table-column prop="proc_inst_id" label="对应流程实例id" show-overflow-tooltip width="120"/>
         <el-table-column prop="parent_id" label="父单据数据id" show-overflow-tooltip width="120"/>
-        <el-table-column width="130" show-overflow-tooltip  v-for="(item, index) in cols" :key="item.value"  :label="item.lable" >
-          <template slot-scope="scope">{{scope.row.form_data[item.value]}}</template>
+        <el-table-column width="130" show-overflow-tooltip v-for="(item, index) in cols" :key="item.value"
+                         :label="item.lable">
+          <template slot-scope="scope">{{ scope.row.form_data[item.value] }}</template>
         </el-table-column>
         <el-table-column prop="create_time" label="创建时间"/>
         <el-table-column
@@ -119,20 +126,20 @@
       <!--分页组件-->
       <pagination/>
     </div>
-    <!--    <UploadDialog :dialog-show.sync="uploadShow" @tableChanged3="crud.toQuery()"/>-->
+    <ViewDialog ref="viewDialog"/>
   </div>
 </template>
 
 <script>
 import crudFormData from './formData'
 import CRUD, {crud, form, header, presenter} from '@crud/crud'
-import Treeselect, {LOAD_CHILDREN_OPTIONS} from '@riophae/vue-treeselect'
-import '@riophae/vue-treeselect/dist/vue-treeselect.css'
 import crudOperation from '@crud/CRUD.operation'
 import udOperation from '@crud/UD.operation'
 import rrOperation from '@crud/RR.operation'
 import pagination from '@crud/Pagination'
 import formstruc from '@/views/wms/config_manage/formStruc/formstruc'
+import ViewDialog from './ViewDialog'
+
 // import UploadDialog from './UploadDialog'
 
 let defaultForm = {
@@ -156,7 +163,7 @@ let defaultForm = {
 export default {
   name: 'FormData',
   dicts: ['base_data'],
-  components: {pagination, crudOperation, rrOperation, udOperation, Treeselect},
+  components: {pagination, crudOperation, rrOperation, udOperation, ViewDialog},
   mixins: [presenter(), header(), form(defaultForm), crud()],
   cruds() {
     return CRUD({
@@ -168,39 +175,45 @@ export default {
       optShow: {
         add: true,
         reset: true
+      },
+      query: {
+        form_data: {}
       }
     })
   },
   data() {
     return {
-      cols:[],
+      cols: [],
       classes: [],
       uploadShow: false,
       fromTypes: [],
       permission: {},
-      rules: {}
+      rules: {},
+      hideShowDialog: false
     }
   },
   created() {
     // 获取分类
     this.getFromTypes()
-    // this.crud.toQuery()
 
   },
   mounted() {
   },
   methods: {
     [CRUD.HOOK.beforeRefresh]() {
-      if (this.fromTypes.length > 0){
+      if (this.fromTypes.length > 0) {
         formstruc.getHeader(this.query.form_type).then(res => {
           this.cols = res
+          res.forEach(a => {
+            this.$set(this.query, 'form_query', {})
+          })
         })
         return true
       }
       return false
     },
     getFromTypes() {
-      crudFormData.getFormType().then((res) => { // 获取分类名称，查询根据分类编码查找对应分支树
+      crudFormData.getParentFormTypes().then((res) => { // 获取分类名称，查询根据分类编码查找对应分支树
         this.fromTypes = res
         if (this.fromTypes.length > 0) {
           this.$set(this.query, 'form_type', this.fromTypes[0].value)
@@ -208,10 +221,20 @@ export default {
         }
       })
     },
+    hideShow() {
+      if (this.hideShowDialog) {
+        //this.$set(this.query, 'form_query', {})
+      }
+      this.hideShowDialog = !this.hideShowDialog
+    },
+    toView(row) {
+      if (row !== null) {
+        this.$refs.viewDialog.setForm(row)
+      }
+    },
   }
 }
 </script>
 
 <style scoped>
-
 </style>
