diff --git a/wms_pro/hd/.idea/sonarlint/issuestore/4/0/400fbf00a1743bc1972994d7dffce150f50044f7 b/wms_pro/hd/.idea/sonarlint/issuestore/4/0/400fbf00a1743bc1972994d7dffce150f50044f7
deleted file mode 100644
index d43fefd4..00000000
--- a/wms_pro/hd/.idea/sonarlint/issuestore/4/0/400fbf00a1743bc1972994d7dffce150f50044f7
+++ /dev/null
@@ -1,4 +0,0 @@
-
-u	java:S116"[Rename this field "local_table_name" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(�ֵ������
-�
-java:S1128"dRemove this unused import 'org.nl.wms.base_manage.field_mapping.service.dao.BmExternalFieldMapping'.(����8�����1
\ No newline at end of file
diff --git a/wms_pro/hd/.idea/sonarlint/issuestore/8/9/89eeb13258719f34694cb541337f127c3bcaeda1 b/wms_pro/hd/.idea/sonarlint/issuestore/8/9/89eeb13258719f34694cb541337f127c3bcaeda1
deleted file mode 100644
index 52b27263..00000000
--- a/wms_pro/hd/.idea/sonarlint/issuestore/8/9/89eeb13258719f34694cb541337f127c3bcaeda1
+++ /dev/null
@@ -1,3 +0,0 @@
-
-G
-java:S1602B",Remove useless curly braces around statement(��������
\ No newline at end of file
diff --git a/wms_pro/hd/.idea/sonarlint/issuestore/index.pb b/wms_pro/hd/.idea/sonarlint/issuestore/index.pb
index acd4404a..b2f499c5 100644
--- a/wms_pro/hd/.idea/sonarlint/issuestore/index.pb
+++ b/wms_pro/hd/.idea/sonarlint/issuestore/index.pb
@@ -27,10 +27,6 @@ gnladmin-system/src/main/java/org/nl/wms/system_manage/service/coderule/impl/Sys
 lnladmin-system/src/main/java/org/nl/wms/system_manage/controller/permission/SysDataPermissionController.java,1/1/11978d8ffa97bb119d9c27e2ba034b73db067e4b
 _
 /nladmin-system/src/main/java/org/nl/AppRun.java,1/0/10e40d67bd7d0818c5483704f020703d1bef8378
-�
-[nladmin-system/src/main/java/org/nl/wms/base_manage/material/service/dto/MaterialQuery.java,4/0/400fbf00a1743bc1972994d7dffce150f50044f7
-�
-anladmin-system/src/main/java/org/nl/wms/base_manage/material/controller/BmMaterialController.java,8/9/89eeb13258719f34694cb541337f127c3bcaeda1
 �
 enladmin-system/src/main/java/org/nl/wms/base_manage/supplier/service/dao/mapper/BmSupplierMapper.java,8/5/85dbedfade54927efe168608601c3aefd87bec15
 �
@@ -137,8 +133,6 @@ unladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/process/node
 Xnladmin-system/src/main/java/org/nl/wms/external_system/acs/service/WmsToAcsService.java,2/0/20d3f5ca66f748f0a2bada36023b0308d4d552c0
 �
 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
 �
 onladmin-system/src/main/java/org/nl/wms/base_manage/class_standard/service/impl/BmClassStandardServiceImpl.java,b/1/b140d08f0cb476ebc6fa39caddd1c7f4819af4c3
 �
@@ -185,8 +179,6 @@ gnladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/mapper/
 Wnladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/PmFormData.java,6/b/6b1cc623ef87736e8a936dc1ca0c0b2c653fb82a
 �
 fnladmin-system/src/main/java/org/nl/wms/flow_manage/flow/controller/execution/ExecutionController.java,0/e/0e30069a5751c50d7cf828ec3c27e091f8565818
-�
-cnladmin-system/src/main/java/org/nl/wms/flow_manage/flow/controller/model/ActDeModelController.java,f/6/f6b31b91b229f78f8ac36ece953db50bf6d81854
 �
 ]nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/config/InitFlowConfig.java,7/5/758c32dcd4ffc4e615e513ba6feb54def23e084a
 �
@@ -214,4 +206,44 @@ cnladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/converter/Bp
 w
 Gnladmin-system/src/main/java/org/nl/common/domain/entity/BaseQuery.java,f/0/f062b578de11e2952654784226f11bae7019cd76
 �
-[nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dto/StructattrQuery.java,c/8/c82a62a04d41331b300a120923e2949be6b68bb3
\ No newline at end of file
+[nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dto/StructattrQuery.java,c/8/c82a62a04d41331b300a120923e2949be6b68bb3
+�
+dnladmin-system/src/main/java/org/nl/wms/stor_manage/struct/controller/StIvtStructattrController.java,a/b/abf5637a5a0d3b1f78e4a21306cffd484e9011f5
+�
+gnladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/impl/StIvtStructattrServiceImpl.java,2/4/244e466911a3a496e08587100bdf062fd7e13ed4
+�
+hnladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dao/mapper/StIvtStructattrMapper.java,f/9/f94bd5c2e5469d880023b16729b09dca7eccdca4
+�
+[nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dao/StIvtStructattr.java,e/5/e584c062454e373b331c75c111b2fd6543e9c6dc
+�
+_nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/IStIvtStructattrService.java,b/1/b10dff3efd70a39f23a25125ca4669d404c03bbb
+�
+knladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dao/mapper/xml/StIvtStructattrMapper.xml,d/3/d3143bfeb3b1a633f41056e1c3d660d3ac2e1b14
+u
+Enladmin-system/src/main/java/org/nl/config/mybatis/CodeGenerator.java,d/a/da94e2f9402ad75ef272f2e95148c573aee9a1ff
+�
+Ynladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/service/dao/SchBaseTask.java,4/a/4a2188ff934d5838c3361cc66d54b717f4ae8b43
+p
+@nladmin-system/src/main/java/org/nl/common/enums/StatusEnum.java,d/a/da2cfc661b6ccefab91ec1ba98461be21c19e65a
+�
+\nladmin-system/src/main/java/org/nl/wms/system_manage/controller/dict/SysDictController.java,3/a/3a80eecf978aec3f47fcfb62925c4e9bc24bd471
+�
+enladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/service/impl/SchBaseTaskServiceImpl.java,d/7/d75ac1c2c3c2e5ce56355f91aecccc4dc7b58e4d
+�
+]nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/service/ISchBaseTaskService.java,9/d/9d0436677d004c5ce485ddbb8f4ba57bf9efe393
+�
+fnladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/service/dao/mapper/SchBaseTaskMapper.java,b/5/b5c97852157076b62f277a89f3a91de547e658b9
+�
+inladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/service/dao/mapper/xml/SchBaseTaskMapper.xml,8/2/82abf35a15b6b99c49b8bff42ed7d48ae3c35782
+�
+^nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/service/dto/SchBaseTaskQuery.java,5/1/51a4fbcc58b8b420ef22a116990b3cb695ed46fe
+�
+Ynladmin-system/src/main/java/org/nl/wms/dispatch_manage/dispatch/TaskDispatchService.java,5/6/56270e92dcf49eabaa4b489e407879d7891295f6
+�
+bnladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/controller/SchBaseTaskController.java,f/f/ff212f1da42fe37170690dbb3fde617bd6d4ea4d
+�
+]nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/AgvTaskHandler.java,4/8/48d893d6babffa6fbccdae11c1603e05cc0d1140
+�
+bnladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/StackingTaskHandler.java,c/a/caa59130099a147acf733a484dae55badb122e24
+�
+`nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/TaskStatusHandler.java,f/4/f4d6da57d25a0f0b8fd7caeadffca82408ea455b
\ No newline at end of file
diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/base_manage/bsrealstorattr/service/dao/mapper/xml/StIvtBsrealstorattrMapper.xml b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/base_manage/bsrealstorattr/service/dao/mapper/xml/StIvtBsrealstorattrMapper.xml
index 2c08669a..65180ec7 100644
--- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/base_manage/bsrealstorattr/service/dao/mapper/xml/StIvtBsrealstorattrMapper.xml
+++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/base_manage/bsrealstorattr/service/dao/mapper/xml/StIvtBsrealstorattrMapper.xml
@@ -19,6 +19,7 @@
     <select id="getStor" resultType="com.alibaba.fastjson.JSONObject">
         SELECT
             CONVERT(stor_id , CHAR ) AS stor_id,
+            stor_code,
             stor_name
         FROM
             st_ivt_bsrealstorattr
diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/base_manage/material/service/dto/MaterialQuery.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/base_manage/material/service/dto/MaterialQuery.java
index 8a3d80da..b882fcec 100644
--- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/base_manage/material/service/dto/MaterialQuery.java
+++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/base_manage/material/service/dto/MaterialQuery.java
@@ -14,13 +14,11 @@ import org.nl.wms.base_manage.material.service.dao.MdMeMaterialbase;
 public class MaterialQuery extends BaseQuery<MdMeMaterialbase> {
 
 
-    private String local_table_name;
     private String search;
 
     @Override
     public void paramMapping() {
-        super.doP.put("local_table_name", QParam.builder().k(new String[]{"local_table_name"}).type(QueryTEnum.EQ).build());
-        super.doP.put("search", QParam.builder().k(new String[]{"local_field_name", "external_field_name"}).type(QueryTEnum.EQ).build());
+        super.doP.put("search", QParam.builder().k(new String[]{"material_code","material_name"}).type(QueryTEnum.EQ).build());
     }
 
 
diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/early_manage/controller/early_msg/AlmEarlyMsgController.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/early_manage/controller/early_msg/AlmEarlyMsgController.java
index ce03e8c3..a922f9d0 100644
--- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/early_manage/controller/early_msg/AlmEarlyMsgController.java
+++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/early_manage/controller/early_msg/AlmEarlyMsgController.java
@@ -1,9 +1,19 @@
 package org.nl.wms.early_manage.controller.early_msg;
 
 
-import org.springframework.web.bind.annotation.RequestMapping;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.nl.common.TableDataInfo;
+import org.nl.common.domain.entity.PageQuery;
+import org.nl.wms.early_manage.service.early_inv.dao.AlmEarlyInv;
+import org.nl.wms.early_manage.service.early_msg.IAlmEarlyMsgService;
+import org.nl.wms.early_manage.service.early_msg.dao.AlmEarlyMsg;
+import org.nl.wms.early_manage.service.early_msg.dto.AlmMsgQuery;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
 
-import org.springframework.web.bind.annotation.RestController;
+import java.util.Arrays;
 
 /**
  * <p>
@@ -18,7 +28,23 @@ import org.springframework.web.bind.annotation.RestController;
 >>>>>>> 4d92078988aaae9ca50b029b3d3f00ded39a2bfc:wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/early_manage/controller/early_msg/AlmEarlyMsgController.java
  */
 @RestController
-@RequestMapping("/almEarlyMsg")
+@RequestMapping("/api/almEarlyMsg")
 public class AlmEarlyMsgController {
+
+    @Autowired
+    private IAlmEarlyMsgService almEarlyMsgService;
+
+    @GetMapping
+    public ResponseEntity<Object> getAll(AlmMsgQuery query, PageQuery page) {
+        return new ResponseEntity<>(almEarlyMsgService.getAll(page,query), HttpStatus.OK);
+    }
+
+    @DeleteMapping("/delete")
+    public ResponseEntity<Object> delete(@RequestBody String[] ids) {
+        if (ids.length > 0) {
+            almEarlyMsgService.removeByIds(Arrays.asList(ids));
+        }
+        return new ResponseEntity<>(HttpStatus.OK);
+    }
 }
 
diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/early_manage/controller/inv_early/AlmEarlyInvController.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/early_manage/controller/inv_early/AlmEarlyInvController.java
index 99bfed9b..c1170d57 100644
--- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/early_manage/controller/inv_early/AlmEarlyInvController.java
+++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/early_manage/controller/inv_early/AlmEarlyInvController.java
@@ -2,13 +2,21 @@ package org.nl.wms.early_manage.controller.inv_early;
 
 
 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.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.nl.common.TableDataInfo;
 import org.nl.common.domain.entity.PageQuery;
 import org.nl.common.utils.IdUtil;
 import org.nl.common.utils.SecurityUtils;
+import org.nl.wms.base_manage.material.service.IMdMeMaterialbaseService;
+import org.nl.wms.base_manage.material.service.dao.MdMeMaterialbase;
+import org.nl.wms.base_manage.material.service.dto.MaterialQuery;
 import org.nl.wms.early_manage.service.early_dtl.IAlmEarlyDtlService;
+import org.nl.wms.early_manage.service.early_dtl.dao.AlmEarlyDtl;
 import org.nl.wms.early_manage.service.early_dtl.dto.AlmDtlQuery;
 import org.nl.wms.early_manage.service.early_inv.IAlmEarlyInvService;
 import org.nl.wms.early_manage.service.early_inv.dao.AlmEarlyInv;
@@ -19,16 +27,19 @@ import org.springframework.http.ResponseEntity;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
-/**
-订单：1000
-生产订单：1000
-        150--------------------------
-          |                         |
-          |---300 150 150         150 第一天
-              400                     第二天
-             300                     第三天
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 订单：1000
+ * 生产订单：1000
+ * 150--------------------------
+ * |                         |
+ * |---300 150 150         150 第一天
+ * 400                     第二天
+ * 300                     第三天
+ **/
 
-**/
 /**
  * <p>
  * 安全库存报警配置表 前端控制器
@@ -45,17 +56,37 @@ public class AlmEarlyInvController {
     private IAlmEarlyInvService iAlmEarlyInvService;
     @Autowired
     private IAlmEarlyDtlService iAlmEarlyDtlService;
+    @Autowired
+    private IMdMeMaterialbaseService materialbaseService;
 
     @GetMapping
     public ResponseEntity<Object> getAll(AlmInvQuery query, PageQuery page) {
         Page<AlmEarlyInv> page1 = iAlmEarlyInvService.page(page.build(), query.build());
         return new ResponseEntity<>(TableDataInfo.build(iAlmEarlyInvService.page(page.build(), query.build())), HttpStatus.OK);
     }
+
     @GetMapping("/dtl")
     public ResponseEntity<Object> getDtl(AlmDtlQuery query, PageQuery page) {
-        return new ResponseEntity<>(TableDataInfo.build(iAlmEarlyDtlService.page(page.build(),query.build())), HttpStatus.OK);
+        return new ResponseEntity<>(TableDataInfo.build(iAlmEarlyDtlService.page(page.build(), query.build())), HttpStatus.OK);
     }
 
+    @GetMapping("/dtl/{id}")
+    public ResponseEntity<Object> getDtl(@PathVariable String id) {
+        List<AlmEarlyDtl> list = iAlmEarlyDtlService.list(new LambdaQueryWrapper<AlmEarlyDtl>().eq(AlmEarlyDtl::getAlm_id, id));
+        JSONArray array = new JSONArray();
+        for (AlmEarlyDtl almEarlyDtl : list) {
+            JSONObject jsonObject = new JSONObject();
+            jsonObject.put("alm_id", almEarlyDtl.getAlm_id());
+            jsonObject.put("material_id", almEarlyDtl.getMaterial_id());
+            MdMeMaterialbase materialbase = materialbaseService.getById(almEarlyDtl.getMaterial_id());
+            jsonObject.put("material_code", materialbase.getMaterial_code());
+            jsonObject.put("material_name", materialbase.getMaterial_name());
+            jsonObject.put("material_spec", materialbase.getMaterial_spec());
+            jsonObject.put("material_model", materialbase.getMaterial_model());
+            array.add(jsonObject);
+        }
+        return new ResponseEntity<>(array, HttpStatus.OK);
+    }
 
     @PostMapping
     public ResponseEntity<Object> create(@Validated @RequestBody JSONObject dto) {
@@ -66,5 +97,39 @@ public class AlmEarlyInvController {
         iAlmEarlyInvService.save(inv);
         return new ResponseEntity<>(HttpStatus.CREATED);
     }
+
+    @PostMapping("/update")
+    public ResponseEntity<Object> update(@Validated @RequestBody JSONObject dto) {
+        AlmEarlyInv inv = dto.toJavaObject(AlmEarlyInv.class);
+        inv.setCreate_time(DateUtil.now());
+        iAlmEarlyInvService.updateById(inv);
+        return new ResponseEntity<>(HttpStatus.CREATED);
+    }
+
+    @PostMapping("/saveDtl")
+    public ResponseEntity<Object> saveDtl(@Validated @RequestBody JSONObject dto) {
+        String id = dto.getString("id");
+        LambdaUpdateWrapper<AlmEarlyDtl> luw = new LambdaUpdateWrapper<>();
+        luw.eq(AlmEarlyDtl::getAlm_id, id);
+        iAlmEarlyDtlService.remove(luw);
+        JSONArray jsonArray = dto.getJSONArray("tableData");
+        for (int i = 0; i < jsonArray.size(); i++) {
+            JSONObject jsonObject = jsonArray.getJSONObject(i);
+            String material_id = jsonObject.getString("material_id");
+            AlmEarlyDtl almEarlyDtl = new AlmEarlyDtl();
+            almEarlyDtl.setAlm_id(id);
+            almEarlyDtl.setMaterial_id(material_id);
+            iAlmEarlyDtlService.save(almEarlyDtl);
+        }
+        return new ResponseEntity<>(HttpStatus.CREATED);
+    }
+
+    @DeleteMapping("/delete")
+    public ResponseEntity<Object> delete(@RequestBody String[] ids) {
+        if (ids.length > 0) {
+            iAlmEarlyInvService.removeByIds(Arrays.asList(ids));
+        }
+        return new ResponseEntity<>(HttpStatus.OK);
+    }
 }
 
diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/early_manage/service/early_inv/dto/AlmInvQuery.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/early_manage/service/early_inv/dto/AlmInvQuery.java
index 44caf01f..7794cedc 100644
--- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/early_manage/service/early_inv/dto/AlmInvQuery.java
+++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/early_manage/service/early_inv/dto/AlmInvQuery.java
@@ -16,7 +16,7 @@ public class AlmInvQuery extends BaseQuery<AlmEarlyInv> {
 
     @Override
     public void paramMapping() {
-        super.doP.put("search", QParam.builder().k(new String[]{"local_field_name", "external_field_name"}).type(QueryTEnum.EQ).build());
+        super.doP.put("search", QParam.builder().k(new String[]{"alm_name"}).type(QueryTEnum.EQ).build());
     }
 
 
diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/early_manage/service/early_msg/IAlmEarlyMsgService.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/early_manage/service/early_msg/IAlmEarlyMsgService.java
index b869aee6..14bd5bff 100644
--- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/early_manage/service/early_msg/IAlmEarlyMsgService.java
+++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/early_manage/service/early_msg/IAlmEarlyMsgService.java
@@ -1,7 +1,9 @@
 package org.nl.wms.early_manage.service.early_msg;
 
+import org.nl.common.domain.entity.PageQuery;
 import org.nl.wms.early_manage.service.early_msg.dao.AlmEarlyMsg;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.nl.wms.early_manage.service.early_msg.dto.AlmMsgQuery;
 
 /**
  * <p>
@@ -13,4 +15,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IAlmEarlyMsgService extends IService<AlmEarlyMsg> {
 
+    Object getAll(PageQuery page, AlmMsgQuery query);
 }
diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/early_manage/service/early_msg/dto/AlmMsgQuery.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/early_manage/service/early_msg/dto/AlmMsgQuery.java
new file mode 100644
index 00000000..7805c1ac
--- /dev/null
+++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/early_manage/service/early_msg/dto/AlmMsgQuery.java
@@ -0,0 +1,30 @@
+package org.nl.wms.early_manage.service.early_msg.dto;
+
+import lombok.Data;
+import org.nl.common.domain.entity.BaseQuery;
+import org.nl.common.domain.entity.QParam;
+import org.nl.common.enums.QueryTEnum;
+import org.nl.wms.early_manage.service.early_msg.dao.AlmEarlyMsg;
+
+/*
+ * @author ZZQ
+ * @Date 2023/5/4 19:49
+ */
+@Data
+public class AlmMsgQuery extends BaseQuery<AlmEarlyMsg> {
+
+    private String early_type;
+    private String stor_code;
+    private String vehicle_code;
+    private String material_code;
+
+    @Override
+    public void paramMapping() {
+        super.doP.put("early_type", QParam.builder().k(new String[]{"early_type"}).type(QueryTEnum.EQ).build());
+        super.doP.put("stor_code", QParam.builder().k(new String[]{"stor_code"}).type(QueryTEnum.EQ).build());
+        super.doP.put("vehicle_code", QParam.builder().k(new String[]{"vehicle_code"}).type(QueryTEnum.LK).build());
+        super.doP.put("material_code", QParam.builder().k(new String[]{"material_code"}).type(QueryTEnum.LK).build());
+    }
+
+
+}
diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/early_manage/service/early_msg/impl/AlmEarlyMsgServiceImpl.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/early_manage/service/early_msg/impl/AlmEarlyMsgServiceImpl.java
index db2f558e..a10ef86b 100644
--- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/early_manage/service/early_msg/impl/AlmEarlyMsgServiceImpl.java
+++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/early_manage/service/early_msg/impl/AlmEarlyMsgServiceImpl.java
@@ -1,11 +1,25 @@
 package org.nl.wms.early_manage.service.early_msg.impl;
 
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.nl.common.TableDataInfo;
+import org.nl.common.domain.entity.PageQuery;
+import org.nl.wms.base_manage.material.service.IMdMeMaterialbaseService;
+import org.nl.wms.base_manage.material.service.dao.MdMeMaterialbase;
 import org.nl.wms.early_manage.service.early_msg.dao.AlmEarlyMsg;
 import org.nl.wms.early_manage.service.early_msg.dao.mapper.AlmEarlyMsgMapper;
 import org.nl.wms.early_manage.service.early_msg.IAlmEarlyMsgService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.nl.wms.early_manage.service.early_msg.dto.AlmMsgQuery;
+import org.nl.wms.flow_manage.flow.service.execution.dao.ActRuExecution;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * <p>
  * 仓库报警消息表 服务实现类
@@ -17,4 +31,29 @@ import org.springframework.stereotype.Service;
 @Service
 public class AlmEarlyMsgServiceImpl extends ServiceImpl<AlmEarlyMsgMapper, AlmEarlyMsg> implements IAlmEarlyMsgService {
 
+    @Autowired
+    private IMdMeMaterialbaseService materialbaseService;
+
+    @Override
+    public Object getAll(PageQuery page, AlmMsgQuery query) {
+//        totalElements
+//        content
+        //判断是否存在子实例
+        Page<AlmEarlyMsg> almMsgQueryPage = this.page(page.build(), query.build());
+        long total = almMsgQueryPage.getTotal();
+        List<AlmEarlyMsg> records = almMsgQueryPage.getRecords();
+        JSONArray jsonArray = JSONArray.parseArray(JSONArray.toJSONString(records));
+        for (int i = 0; i < jsonArray.size(); i++) {
+            JSONObject jsonObject = jsonArray.getJSONObject(i);
+            MdMeMaterialbase material = materialbaseService.getById(jsonObject.getString("material_id"));
+            if (ObjectUtil.isNotEmpty(material)){
+                jsonObject.put("material_code",material.getMaterial_code());
+                jsonObject.put("material_name",material.getMaterial_name());
+            }
+        }
+        JSONObject json = new JSONObject();
+        json.put("totalElements",total);
+        json.put("content",jsonArray);
+        return json;
+    }
 }
diff --git a/wms_pro/qd/src/views/wms/early_manage/early_data/UploadDialog.vue b/wms_pro/qd/src/views/wms/early_manage/early_data/UploadDialog.vue
index eb9cfcde..f66c7aec 100644
--- a/wms_pro/qd/src/views/wms/early_manage/early_data/UploadDialog.vue
+++ b/wms_pro/qd/src/views/wms/early_manage/early_data/UploadDialog.vue
@@ -38,7 +38,7 @@
 </template>
 
 <script>
-import crudClassstandard from './formstruc'
+import crudClassstandard from './almEarlyMsg'
 import CRUD, { crud } from '@crud/crud'
 import { download2 } from '@/api/data'
 import { downloadFile } from '@/utils'
diff --git a/wms_pro/qd/src/views/wms/early_manage/early_data/formstruc.js b/wms_pro/qd/src/views/wms/early_manage/early_data/almEarlyMsg.js
similarity index 72%
rename from wms_pro/qd/src/views/wms/early_manage/early_data/formstruc.js
rename to wms_pro/qd/src/views/wms/early_manage/early_data/almEarlyMsg.js
index 3f6d1330..a1438ed1 100644
--- a/wms_pro/qd/src/views/wms/early_manage/early_data/formstruc.js
+++ b/wms_pro/qd/src/views/wms/early_manage/early_data/almEarlyMsg.js
@@ -2,7 +2,7 @@ import request from '@/utils/request'
 
 export function add(data) {
   return request({
-    url: 'api/bmFormStruc',
+    url: 'api/almEarlyMsg',
     method: 'post',
     data
   })
@@ -10,15 +10,15 @@ export function add(data) {
 
 export function del(ids) {
   return request({
-    url: 'api/bmFormStruc/delete',
-    method: 'get',
+    url: 'api/almEarlyMsg/delete',
+    method: 'delete',
     data: ids
   })
 }
 
 export function edit(data) {
   return request({
-    url: 'api/bmFormStruc/update',
+    url: 'api/almEarlyMsg/update',
     method: 'post',
     data
   })
@@ -26,7 +26,7 @@ export function edit(data) {
 
 export function getTypes(params) {
   return request({
-    url: 'api/bmFormStruc/getTypes',
+    url: 'api/almEarlyMsg/getTypes',
     method: 'get',
     params
   })
diff --git a/wms_pro/qd/src/views/wms/early_manage/early_data/index.vue b/wms_pro/qd/src/views/wms/early_manage/early_data/index.vue
index 87506597..26cb1d44 100644
--- a/wms_pro/qd/src/views/wms/early_manage/early_data/index.vue
+++ b/wms_pro/qd/src/views/wms/early_manage/early_data/index.vue
@@ -11,9 +11,9 @@
           label-width="90px"
           label-suffix=":"
         >
-          <el-form-item label="表单类型">
+          <el-form-item label="消息类型">
             <el-select
-              v-model="query.form_type"
+              v-model="query.early_type"
               placeholder="请选择类型"
               clearable
               filterable
@@ -28,7 +28,27 @@
               </el-option>
             </el-select>
           </el-form-item>
-          <rrOperation :crud="crud" />
+          <el-form-item label="仓库编码">
+            <el-select
+              v-model="query.stor_code"
+              placeholder="请选择类型"
+              clearable
+              filterable
+              size="mini"
+              class="filter-item"
+              style="width: 185px;">
+              <el-option
+                v-for="item in storList"
+                :key="item.stor_id"
+                :label="item.stor_code"
+                :value="item.stor_code">
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="载具编码">
+            <el-input clearable v-model="query.vehicle_code" style="width: 185px;"/>
+          </el-form-item>
+          <rrOperation :crud="crud"/>
         </el-form>
       </div>
       <!--如果想在工具栏加入更多按钮，可以使用插槽方式， slot = 'left' or 'right'-->
@@ -42,33 +62,33 @@
         :title="crud.status.title"
         width="600px"
       >
-        <el-form ref="form" :model="form"  size="mini" label-width="80px">
+        <el-form ref="form" :model="form" size="mini" label-width="80px">
           <el-row>
             <el-col :span="8">
               <el-form-item label="表单类型" prop="class_code">
-                <el-input v-model="form.form_type" style="width: 120px;" />
+                <el-input v-model="form.form_type" style="width: 120px;"/>
               </el-form-item>
             </el-col>
             <el-col :span="8">
               <el-form-item label="表单名称" prop="class_name">
-                <el-input v-model="form.form_name" style="width: 120px;" />
+                <el-input v-model="form.form_name" style="width: 120px;"/>
               </el-form-item>
             </el-col>
           </el-row>
           <el-row>
-            <el-col >
+            <el-col>
               <el-form-item label="表单描述" prop="class_name">
-                <el-input v-model="form.form_desc" style="width: 370px;" />
+                <el-input v-model="form.form_desc" style="width: 370px;"/>
               </el-form-item>
             </el-col>
-            <el-col >
+            <el-col>
               <el-form-item label="表单对应字段" prop="class_name">
-                <el-input v-model="form.convert_field" style="width: 370px;" />
+                <el-input v-model="form.convert_field" style="width: 370px;"/>
               </el-form-item>
             </el-col>
           </el-row>
           <el-row>
-            <el-col >
+            <el-col>
               <el-form-item label="是否含有子表" prop="class_name">
                 <el-radio-group v-model="form.has_child" style="width: 140px">
                   <el-radio label=true>是</el-radio>
@@ -94,49 +114,49 @@
           <el-row>
             <el-col :span="8">
               <el-form-item label="业务表id映射" prop="class_desc">
-                <el-input v-model="form.biz_id" style="width: 120px;" />
+                <el-input v-model="form.biz_id" style="width: 120px;"/>
               </el-form-item>
             </el-col>
             <el-col :span="8">
               <el-form-item label="业务表编码映射" prop="class_desc">
-                <el-input v-model="form.biz_code" style="width: 120px;" />
+                <el-input v-model="form.biz_code" style="width: 120px;"/>
               </el-form-item>
             </el-col>
             <el-col :span="8">
               <el-form-item label="业务表单据类型映射" prop="class_desc">
-                <el-input v-model="form.biz_form_type" style="width: 120px;" />
+                <el-input v-model="form.biz_form_type" style="width: 120px;"/>
               </el-form-item>
             </el-col>
             <el-col :span="8">
               <el-form-item label="业务表时间映射" prop="class_desc">
-                <el-input v-model="form.bus_data" style="width: 120px;" />
+                <el-input v-model="form.bus_data" style="width: 120px;"/>
               </el-form-item>
             </el-col>
           </el-row>
           <el-row>
             <el-col :span="8">
               <el-form-item label="业务表状态映射" prop="class_desc">
-                <el-input v-model="form.biz_status" style="width: 120px;" />
+                <el-input v-model="form.biz_status" style="width: 120px;"/>
               </el-form-item>
             </el-col>
             <el-col :span="8">
               <el-form-item label="物料id映射" prop="class_desc">
-                <el-input v-model="form.material_id" style="width: 120px;" />
+                <el-input v-model="form.material_id" style="width: 120px;"/>
               </el-form-item>
             </el-col>
             <el-col :span="8">
               <el-form-item label="物料数量映射" prop="class_desc">
-                <el-input v-model="form.qty" style="width: 120px;" />
+                <el-input v-model="form.qty" style="width: 120px;"/>
               </el-form-item>
             </el-col>
             <el-col :span="8">
               <el-form-item label="物料批次映射" prop="class_desc">
-                <el-input v-model="form.pcsn" style="width: 120px;" />
+                <el-input v-model="form.pcsn" style="width: 120px;"/>
               </el-form-item>
             </el-col>
           </el-row>
           <el-form-item label="自定义映射" prop="class_desc">
-            <el-input type="textarea" v-model="form.form_param" style="width: 370px;" />
+            <el-input type="textarea" v-model="form.form_param" style="width: 370px;"/>
           </el-form-item>
         </el-form>
         <div slot="footer" class="dialog-footer">
@@ -149,98 +169,84 @@
         ref="table"
         v-loading="crud.loading"
         lazy
-        :load="getClassDatas"
-        :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 prop="form_type" label="表单类型" min-width="150"/>
-        <el-table-column prop="form_name" label="表单名称" min-width="150"/>
-        <el-table-column prop="form_desc" label="描述" min-width="150"/>
-        <el-table-column prop="create_time" label="创建时间" min-width="150"/>
-        <el-table-column prop="has_child" :formatter="booleanFormat" label="是否关联子表" />
-        <el-table-column prop="parent_id" label="父表id" min-width="150"/>
-        <el-table-column prop="biz_id" label="业务单据id映射" />
-        <el-table-column prop="biz_code" label="业务单据code映射" />
-        <el-table-column prop="biz_form_type" label="业务单据type映射" />
-        <el-table-column prop="biz_date" label="业务单据时间映射" />
-        <el-table-column prop="status" label="业务单据状态映射" />
-        <el-table-column prop="material_id" label="物料id映射" min-width="120"/>
-        <el-table-column prop="qty" label="物料数量映射" min-width="120"/>
-        <el-table-column prop="pcsn" label="物料批次映射" min-width="120"/>
-        <el-table-column show-overflow-tooltip prop="form_param"  :formatter="jsonFormat" label="自定义字段映射" />
+        <el-table-column type="selection" width="55"/>
+        <el-table-column prop="early_type" label="消息类型" min-width="150" show-tooltip-when-overflow>
+        </el-table-column>
+        <el-table-column prop="is_read" label="是否处理" min-width="150" :formatter="formatIsRead" show-tooltip-when-overflow>
+        </el-table-column>
+        <el-table-column prop="stor_code" label="仓库编码" min-width="150" show-tooltip-when-overflow/>
+        <el-table-column prop="vehicle_code" label="载具编码" min-width="150" show-tooltip-when-overflow/>
+        <el-table-column v-if="false" prop="material_id" label="物料标识" min-width="150" show-tooltip-when-overflow/>
+        <el-table-column prop="material_code" label="物料编码" min-width="150" show-tooltip-when-overflow/>
+        <el-table-column prop="material_name" label="物料名称" min-width="150" show-tooltip-when-overflow/>
+        <el-table-column prop="pcsn" label="物料批次" min-width="150" show-tooltip-when-overflow/>
+        <el-table-column prop="qty" label="库存数量" min-width="150" show-tooltip-when-overflow/>
+        <el-table-column show-overflow-tooltip prop="ext_json" :formatter="jsonFormat" label="扩展信息" show-tooltip-when-overflow/>
+        <el-table-column prop="create_time" label="创建时间" min-width="150" show-tooltip-when-overflow/>
         <el-table-column
           label="操作"
           width="250px"
           align="center"
+          fixed="right"
         >
           <template slot-scope="scope">
             <udOperation
               style="display: inline"
               :data="scope.row"
               :permission="permission"
-              :disabled-edit="scope.row.is_modify === '0'"
-              :disabled-dle="scope.row.is_modify === '0'"
+              :disabled-edit="true"
               msg="确定删除吗,如果存在下级节点则一并删除，此操作不能撤销！"
             />
-            <el-button slot="right" size="mini" type="text" icon="el-icon-circle-plus-outline" @click="crud.toAddAndData(addSibling(scope.row))">新增同级</el-button>
-            <el-button slot="right" size="mini" type="text" icon="el-icon-circle-plus" @click="crud.toAddAndData(addChildren(scope.row))">新增子级</el-button>
           </template>
         </el-table-column>
       </el-table>
       <!--分页组件-->
-      <pagination />
+      <pagination/>
     </div>
     <UploadDialog :dialog-show.sync="uploadShow" @tableChanged3="crud.toQuery()"/>
   </div>
 </template>
 
 <script>
-import formstruc from './formstruc'
-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 almEarlyMsg from './almEarlyMsg'
+import CRUD, {crud, form, header, presenter} from '@crud/crud'
 import crudOperation from '@crud/CRUD.operation'
 import udOperation from '@crud/UD.operation'
 import rrOperation from '@crud/RR.operation'
 import pagination from '@crud/Pagination'
 import UploadDialog from './UploadDialog'
+import crudStorattr from '@/views/wms/base_manage/stor/storattr'
+
 
 const defaultForm = {
-  form_type: null,
-  form_name: null,
-  form_desc: null,
-  create_time: null,
-  create_id: null,
-  biz_id: null,
-  biz_code: null,
-  biz_form_type: null,
-  biz_date: null,
-  biz_status: null,
+  id: null,
+  early_type: null,
+  stor_code: null,
+  vehicle_code: null,
   material_id: null,
-  qty: null,
   pcsn: null,
-  form_param: null,
-  has_child: false,
-  parent_id: null
+  qty: null,
+  create_time: null,
+  is_read: null,
+  ext_json: null
 }
 export default {
   name: 'FormStruc',
   dicts: ['base_data'],
-  components: {UploadDialog, pagination, crudOperation, rrOperation, udOperation, Treeselect },
+  components: {UploadDialog, pagination, crudOperation, rrOperation, udOperation},
   mixins: [presenter(), header(), form(defaultForm), crud()],
   cruds() {
     return CRUD({
       title: '基础类别',
-      url: 'api/bmFormStruc',
+      url: 'api/almEarlyMsg',
       idField: 'id',
       sort: 'id,desc',
-      crudMethod: { ...formstruc },
+      crudMethod: {...almEarlyMsg},
       optShow: {
-        add: true,
+        add: false,
         reset: true
       }
     })
@@ -250,18 +256,16 @@ export default {
       classes: [],
       uploadShow: false,
       form_types: [],
-      permission: {}
+      permission: {},
+      storList: [],
     }
   },
   created() {
-    this.getFormSelect() // 获取分类
+    crudStorattr.getStor({}).then(res => {
+      this.storList = res
+    })
   },
   methods: {
-    getFormSelect() {
-      formstruc.getTypes().then((res) => { // 获取分类名称，查询根据分类编码查找对应分支树
-        this.form_types = res
-      })
-    },
     booleanFormat(row, index) {
       if (row.has_child) {
         return '是'
@@ -274,6 +278,9 @@ export default {
         return JSON.stringify(row.form_param)
       }
       return ''
+    },
+    formatIsRead(row, column, cellValue) {
+      return cellValue ? '已处理' : '未处理';
     }
   }
 }
diff --git a/wms_pro/qd/src/views/wms/early_manage/early_inv/EditDialog.vue b/wms_pro/qd/src/views/wms/early_manage/early_inv/EditDialog.vue
new file mode 100644
index 00000000..45be2f98
--- /dev/null
+++ b/wms_pro/qd/src/views/wms/early_manage/early_inv/EditDialog.vue
@@ -0,0 +1,206 @@
+<template>
+  <el-dialog
+    :visible.sync="dialogVisible"
+    append-to-body
+    fullscreen
+    title="安全库存方案"
+    @close="close"
+    @open="open"
+  >
+    <el-card class="box-card" shadow="never">
+      <el-form ref="form" :inline="true" :model="form" :rules="rules" disabled label-width="180px" size="mini">
+        <el-form-item label="方案名称">
+          <el-input v-model="form.alm_name" style="width: 200px;"/>
+        </el-form-item>
+        <el-form-item label="仓库编码">
+          <el-input v-model="form.stor_code" style="width: 200px;"/>
+        </el-form-item>
+        <el-form-item label="安全库存数量">
+          <el-input v-model="form.safety_qty" style="width: 200px;"/>
+        </el-form-item>
+        <el-form-item label="安全库存天数">
+          <el-input v-model="form.safety_day" style="width: 200px;"/>
+        </el-form-item>
+        <el-form-item label="表达式">
+          <el-input v-model="form.expression" style="width: 200px;"/>
+        </el-form-item>
+        <el-form-item label="报警通知类型">
+          <el-input v-model="form.notice_type" style="width: 200px;"/>
+        </el-form-item>
+        <el-form-item label="描述">
+          <el-input type="textarea" v-model="form.remark" style="width: 200px;"/>
+        </el-form-item>
+      </el-form>
+    </el-card>
+    <div class="crud-opts2" style="margin-top: 30px;margin-bottom: 15px">
+      <span class="role-span">物料列表</span>
+      <span class="crud-opts-right2">
+        <!--左侧插槽-->
+        <slot name="left"/>
+        <el-button
+          slot="left"
+          class="filter-item"
+          type="primary"
+          icon="el-icon-plus"
+          size="mini"
+          @click="queryDtl()"
+        >
+          添加物料
+        </el-button>
+      </span>
+
+    </div>
+    <!--表格渲染-->
+    <el-table
+      ref="table"
+      :data="form.tableData"
+      :header-cell-style="{background:'#f5f7fa',color:'#606266'}"
+      :highlight-current-row="true"
+      border
+      max-height="300"
+      style="width: 100%;"
+    >
+      <el-table-column v-if="false" label="物料ID" prop="material_id"/>
+      <el-table-column label="物料编码" prop="material_code"/>
+      <el-table-column label="物料名称" prop="material_name"/>
+      <el-table-column label="物料规格" prop="material_spec"/>
+      <el-table-column label="物料型号" prop="material_model"/>
+      <el-table-column align="center" label="操作" width="160" fixed="right">
+        <template scope="scope">
+          <el-button
+            type="danger"
+            class="filter-item"
+            size="mini"
+            icon="el-icon-delete"
+            @click.native.prevent="deleteRow(scope.$index, form.tableData)"
+          />
+        </template>
+      </el-table-column>
+    </el-table>
+    <span slot="footer" class="dialog-footer">
+      <el-button type="primary" @click="dialogVisible = false">关  闭</el-button>
+      <el-button type="primary" @click="submit">保  存</el-button>
+    </span>
+    <MaterialDtl :dialog-show.sync="dtlShow" ref="dtlRef" @tableChanged="tableChanged"/>
+  </el-dialog>
+</template>
+
+<script>
+import {crud} from '@crud/crud'
+import '@riophae/vue-treeselect/dist/vue-treeselect.css'
+import MaterialDtl from './MaterialDtl'
+import crudEarly from './early'
+
+export default {
+  name: 'EditDialog',
+  components: {MaterialDtl},
+  dicts: ['PDM_BI_SHIFTTYPE', 'MPS_BD_ORDERSTATUS', 'PDM_BI_ORDERTYPE', 'IS_OR_NOT'],
+  mixins: [crud()],
+  props: {
+    dialogShow: {
+      type: Boolean,
+      default: false
+    },
+    bussConfig: {
+      type: Object
+    },
+    openParam: {
+      type: Object
+    }
+  },
+  data() {
+    return {
+      dialogVisible: false,
+      form: {
+        id: null,
+        alm_name: null,
+        stor_code: null,
+        safety_qty: null,
+        safety_day: null,
+        expression: null,
+        notice_type: null,
+        ext_json: null,
+        is_used: null,
+        remark: null,
+        tableData: [],
+      },
+      dtlShow: false,
+      rules: {}
+    }
+  },
+  watch: {
+    dialogShow: {
+      handler(newValue) {
+        this.dialogVisible = newValue
+      }
+    }
+  },
+  methods: {
+    setForm(row) {
+      crudEarly.getDtl(row.id).then(res => {
+        this.form.tableData = res
+      })
+      this.dialogVisible = true
+      this.form.id = row.id
+      this.form.alm_name = row.alm_name
+      this.form.stor_code = row.stor_code
+      this.form.safety_qty = row.safety_qty
+      this.form.safety_day = row.safety_day
+      this.form.expression = row.expression
+      this.form.notice_type = row.notice_type
+      this.form.ext_json = row.ext_json
+    },
+    open() {
+    },
+    close() {
+      this.$emit('editChanged')
+    },
+    submit() {
+      crudEarly.saveDtl(this.form).then(res => {
+        this.$emit('editChanged')
+        this.dialogVisible = false
+        this.crud.notify('保存成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
+      })
+    },
+    async queryDtl() {
+      this.$refs.dtlRef.setForm(this.form.tableData)
+      this.dtlShow = true
+    },
+    deleteRow(index, rows) {
+      rows.splice(index, 1)
+    },
+    tableChanged(rows) {
+      const uniqueKey = 'material_id';
+      const newDataMap = new Map(rows.map(row => [row[uniqueKey], row]));
+      if (this.form.tableData.length > 0) {
+        rows.forEach(row => {
+          if (!this.form.tableData.some(dataRow => dataRow[uniqueKey] === row[uniqueKey])) {
+            this.form.tableData.push(row);
+          }
+        });
+      } else {
+        this.form.tableData = rows.slice(); // 将 rows 中的数据复制到 tableData 中
+      }
+    }
+
+  }
+}
+</script>
+
+<style>
+.crud-opts2 {
+  padding: 0 0;
+  display: -webkit-flex;
+  display: flex;
+  align-items: center;
+}
+
+.crud-opts2 .crud-opts-right2 {
+  margin-left: auto;
+  padding: 4px 4px;
+}
+
+.input-with-select {
+  background-color: #fff;
+}
+</style>
diff --git a/wms_pro/qd/src/views/wms/early_manage/early_inv/MaterialDtl.vue b/wms_pro/qd/src/views/wms/early_manage/early_inv/MaterialDtl.vue
new file mode 100644
index 00000000..3a600d5c
--- /dev/null
+++ b/wms_pro/qd/src/views/wms/early_manage/early_inv/MaterialDtl.vue
@@ -0,0 +1,165 @@
+<!--suppress ALL -->
+<template>
+  <el-dialog
+    title="物料信息"
+    append-to-body
+    :visible.sync="dialogVisible"
+    destroy-on-close
+    :show-close="false"
+    width="1000px"
+    @close="close"
+    @open="open"
+  >
+    <el-row>
+      <el-form
+        :inline="true"
+        class="demo-form-inline"
+        label-position="right"
+        label-width="80px"
+        label-suffix=":"
+      >
+        <el-form-item label="模糊查询">
+          <el-input
+            v-model="query.search"
+            clearable
+            style="width: 200px"
+            size="mini"
+            placeholder="输入物料编码或名称"
+            prefix-icon="el-icon-search"
+            class="filter-item"
+            @keyup.enter.native="crud.toQuery"
+          />
+        </el-form-item>
+        <rrOperation/>
+
+      </el-form>
+    </el-row>
+    <!--表格渲染-->
+    <el-table
+      ref="table"
+      v-loading="crud.loading"
+      :data="crud.data"
+      style="width: 100%;"
+      border
+      :header-cell-style="{background:'#f5f7fa',color:'#606266'}"
+      @select="select"
+      @selection-change="handleSelectionChange"
+    >
+      <el-table-column type="selection" width="55"/>
+      <el-table-column prop="material_code" label="物料编码" width="160"/>
+      <el-table-column prop="material_name" label="物料名称" width="180" show-overflow-tooltip/>
+      <el-table-column prop="material_spec" label="物料规格" width="140"/>
+      <el-table-column prop="material_model" label="物料型号"/>
+      <el-table-column prop="class_name" label="物料分类" width="140"/>
+      <el-table-column prop="unit_name" label="计量单位"/>
+      <el-table-column prop="net_weight" label="单重(g)"/>
+      <el-table-column prop="product_series_name" label="系列"/>
+    </el-table>
+    <!--分页组件-->
+    <pagination/>
+    <span slot="footer" class="dialog-footer">
+      <el-button slot="left" type="info" @click="dialogVisible = false">关闭</el-button>
+      <el-button slot="left" type="primary" @click="submit">保存</el-button>
+    </span>
+  </el-dialog>
+</template>
+
+<script>
+
+import CRUD, {header, presenter} from '@crud/crud'
+import rrOperation from '@crud/RR.operation'
+import pagination from '@crud/Pagination'
+
+export default {
+  name: 'AddDtl',
+  components: {rrOperation, pagination},
+  cruds() {
+    return CRUD({
+      title: '物料信息', idField: 'material_id', url: 'api/bmMaterial',
+      optShow: {
+        add: false,
+        edit: false,
+        del: false,
+        reset: true,
+        download: false
+      }
+    })
+  },
+  mixins: [presenter(), header()],
+  props: {
+    dialogShow: {
+      type: Boolean,
+      default: false
+    },
+    openParam: {
+      type: String
+    }
+  },
+  data() {
+    return {
+      dialogVisible: false,
+      opendtlParam: '',
+      rows: [],
+      cacheRows: []
+    }
+  },
+  watch: {
+    dialogShow: {
+      handler(newValue, oldValue) {
+        this.dialogVisible = newValue
+      }
+    },
+    openParam: {
+      handler(newValue, oldValue) {
+        this.opendtlParam = newValue
+      }
+    }
+  },
+  methods: {
+    [CRUD.HOOK.afterRefresh]() {
+      this.selectRows(this.cacheRows)
+    },
+    open() {
+      this.crud.toQuery()
+    },
+    close() {
+      this.crud.resetQuery(false)
+      this.$emit('update:dialogShow', false)
+    },
+    selectRows(rows) {
+      const materialIds = rows.map(item => item.material_id);
+      this.$nextTick(() => {
+        this.crud.data.forEach(row => {
+          if (materialIds.includes(row.material_id)) {
+            this.$refs.table.toggleRowSelection(row, true);
+          }
+        });
+      });
+      this.crud.resetQuery(false)
+    },
+    setForm(rows) {
+      this.cacheRows = rows
+      this.selectRows(rows)
+    },
+    submit() {
+      this.rows = this.$refs.table.selection
+      if (this.rows.length <= 0) {
+        this.$message('请先勾选物料信息')
+        return
+      }
+      console.log(this.cacheRows)
+      this.crud.resetQuery(false)
+      this.$emit('update:dialogShow', false)
+      this.$emit('tableChanged', this.rows)
+    },
+    select(selections) {
+      console.log("+++")
+      console.log(selections)
+
+    },
+    handleSelectionChange(selections) {
+      const unselectedRowsIds = this.cacheRows.flat().map(row => row.material_code).filter(material_code => !selections.map(row => row.material_code).includes(material_code));
+    }
+  }
+}
+</script>
diff --git a/wms_pro/qd/src/views/wms/early_manage/early_inv/ViewDialog.vue b/wms_pro/qd/src/views/wms/early_manage/early_inv/ViewDialog.vue
index c3181dcb..2dc0f675 100644
--- a/wms_pro/qd/src/views/wms/early_manage/early_inv/ViewDialog.vue
+++ b/wms_pro/qd/src/views/wms/early_manage/early_inv/ViewDialog.vue
@@ -10,16 +10,25 @@
     <el-card class="box-card" shadow="never">
       <el-form ref="form" :inline="true" :model="form" :rules="rules" disabled label-width="180px" size="mini">
         <el-form-item label="方案名称">
-          <el-input v-model="form.alm_name" style="width: 200px;" />
+          <el-input v-model="form.alm_name" style="width: 200px;"/>
         </el-form-item>
-        <el-form-item label="通知类型">
-          <el-input v-model="form.notice_type" style="width: 200px;" />
+        <el-form-item label="仓库编码">
+          <el-input v-model="form.stor_code" style="width: 200px;"/>
+        </el-form-item>
+        <el-form-item label="安全库存数量">
+          <el-input v-model="form.safety_qty" style="width: 200px;"/>
+        </el-form-item>
+        <el-form-item label="安全库存天数">
+          <el-input v-model="form.safety_day" style="width: 200px;"/>
+        </el-form-item>
+        <el-form-item label="表达式">
+          <el-input v-model="form.expression" style="width: 200px;"/>
+        </el-form-item>
+        <el-form-item label="报警通知类型">
+          <el-input v-model="form.notice_type" style="width: 200px;"/>
         </el-form-item>
         <el-form-item label="描述">
-          <el-input v-model="form.remark" style="width: 200px;" />
-        </el-form-item>
-        <el-form-item label="是否启用">
-          <el-input v-model="form.is_used" style="width: 200px;" />
+          <el-input type="textarea" v-model="form.remark" style="width: 200px;"/>
         </el-form-item>
       </el-form>
     </el-card>
@@ -34,14 +43,18 @@
     <!--表格渲染-->
     <el-table
       ref="table"
-      :data="tableData"
+      :data="form.tableData"
       :header-cell-style="{background:'#f5f7fa',color:'#606266'}"
       :highlight-current-row="true"
       border
       max-height="300"
       style="width: 100%;"
     >
-      <el-table-column label="物料编码" prop="material_id" />
+      <el-table-column v-if="false" label="物料ID" prop="material_id"/>
+      <el-table-column label="物料编码" prop="material_code"/>
+      <el-table-column label="物料名称" prop="material_name"/>
+      <el-table-column label="物料规格" prop="material_spec"/>
+      <el-table-column label="物料型号" prop="material_model"/>
     </el-table>
     <span slot="footer" class="dialog-footer">
       <el-button type="primary" @click="dialogVisible = false">关  闭</el-button>
@@ -52,6 +65,8 @@
 <script>
 import { crud } from '@crud/crud'
 import '@riophae/vue-treeselect/dist/vue-treeselect.css'
+import crudEarly from './early'
+
 
 export default {
   name: 'ViewDialog',
@@ -73,54 +88,19 @@ export default {
   data() {
     return {
       dialogVisible: false,
-      auto_confirm: [{ value: '1', label: '自动确认' }, { value: '2', label: '定时确认' }, {
-        value: '3',
-        label: '人工确认'
-      }],
-      trueorfalse: [{ value: true, label: '是' }, { value: false, label: '否' }],
-      reportStatus: [{ value: '1', label: '创建记录' }, { value: '2', label: '报工完成' }, {
-        value: '3',
-        label: '审核完成'
-      }],
       form: {
-        sale_id: null,
-        class_name: null,
-        workorder_id: null,
-        workorder_code: null,
-        producedeviceorder_code: null,
-        shift_type_scode: null,
-        workprocedure_id: null,
-        produce_date: null,
-        plan_qty: null,
-        real_qty: null,
-        report_qty: null,
-        material_id: null,
-        material_code: null,
-        material_weight: null,
-        planproducestart_date: null,
-        planproduceend_date: null,
-        realproducestart_date: null,
-        realproduceend_date: null,
-        order_status: null,
-        is_needmove: null,
-        order_type_scode: null,
-        create_id: null,
-        create_name: null,
-        create_time: null,
-        update_optid: null,
-        update_optname: null,
-        update_time: null,
-        sysdeptid: null,
-        syscompanyid: null,
-        is_delete: null,
-        material_name: null,
-        device_id: null,
-        is_canupdate_update: null,
-        material_spec: null
+        id: null,
+        alm_name: null,
+        stor_code: null,
+        safety_qty: null,
+        safety_day: null,
+        expression: null,
+        notice_type: null,
+        ext_json: null,
+        is_used: null,
+        remark: null,
+        tableData: [],
       },
-      optNameList: [],
-      workprocedureList: [],
-      tableData: [],
       rules: {}
     }
   },
@@ -133,8 +113,18 @@ export default {
   },
   methods: {
     setForm(row) {
+      crudEarly.getDtl(row.id).then(res => {
+        this.form.tableData = res
+      })
       this.dialogVisible = true
-      this.form = row
+      this.form.id = row.id
+      this.form.alm_name = row.alm_name
+      this.form.stor_code = row.stor_code
+      this.form.safety_qty = row.safety_qty
+      this.form.safety_day = row.safety_day
+      this.form.expression = row.expression
+      this.form.notice_type = row.notice_type
+      this.form.ext_json = row.ext_json
     },
     open() {
     },
diff --git a/wms_pro/qd/src/views/wms/early_manage/early_inv/early.js b/wms_pro/qd/src/views/wms/early_manage/early_inv/early.js
new file mode 100644
index 00000000..919f1df9
--- /dev/null
+++ b/wms_pro/qd/src/views/wms/early_manage/early_inv/early.js
@@ -0,0 +1,50 @@
+import request from '@/utils/request'
+
+export function add(data) {
+  return request({
+    url: 'api/almEarlyInv',
+    method: 'post',
+    data
+  })
+}
+
+export function del(ids) {
+  return request({
+    url: 'api/almEarlyInv/delete',
+    method: 'delete',
+    data: ids
+  })
+}
+
+export function edit(data) {
+  return request({
+    url: 'api/bmFormStruc/update',
+    method: 'post',
+    data
+  })
+}
+
+export function getTypes(params) {
+  return request({
+    url: 'api/almEarlyInv/getTypes',
+    method: 'get',
+    params
+  })
+}
+
+export function getDtl(id) {
+  return request({
+    url: 'api/almEarlyInv/dtl/' + id,
+    method: 'get',
+  })
+}
+
+export function saveDtl(data) {
+  return request({
+    url: 'api/almEarlyInv/saveDtl',
+    method: 'post',
+    data
+  })
+}
+
+export default { add, edit, del, getTypes, getDtl, saveDtl}
diff --git a/wms_pro/qd/src/views/wms/early_manage/early_inv/formstruc.js b/wms_pro/qd/src/views/wms/early_manage/early_inv/formstruc.js
index b4329637..f1471f84 100644
--- a/wms_pro/qd/src/views/wms/early_manage/early_inv/formstruc.js
+++ b/wms_pro/qd/src/views/wms/early_manage/early_inv/formstruc.js
@@ -11,14 +11,14 @@ export function add(data) {
 export function del(ids) {
   return request({
     url: 'api/almEarlyInv/delete',
-    method: 'get',
+    method: 'delete',
     data: ids
   })
 }
 
 export function edit(data) {
   return request({
-    url: 'api/bmFormStruc/update',
+    url: 'api/almEarlyInv/update',
     method: 'post',
     data
   })
diff --git a/wms_pro/qd/src/views/wms/early_manage/early_inv/index.vue b/wms_pro/qd/src/views/wms/early_manage/early_inv/index.vue
index 1dee7937..b5ce9b2e 100644
--- a/wms_pro/qd/src/views/wms/early_manage/early_inv/index.vue
+++ b/wms_pro/qd/src/views/wms/early_manage/early_inv/index.vue
@@ -11,28 +11,25 @@
           label-width="90px"
           label-suffix=":"
         >
-          <el-form-item label="安全库存">
-            <el-select
-              v-model="query.form_type"
-              placeholder="请选择类型"
-              clearable
-              filterable
-              size="mini"
-              class="filter-item"
-              style="width: 185px;">
-              <el-option
-                v-for="item in form_types"
-                :key="item.value"
-                :label="item.label"
-                :value="item.value">
-              </el-option>
-            </el-select>
+          <el-form-item label="方案名称">
+            <el-input v-model="form.search" style="width: 150px;"/>
           </el-form-item>
-          <rrOperation :crud="crud" />
+          <rrOperation :crud="crud"/>
         </el-form>
       </div>
       <!--如果想在工具栏加入更多按钮，可以使用插槽方式， slot = 'left' or 'right'-->
       <crudOperation :permission="permission">
+        <el-button
+          slot="right"
+          class="filter-item"
+          :disabled="crud.selections.length !== 1"
+          icon="el-icon-s-data"
+          size="mini"
+          type="info"
+          @click="edit(crud.selections[0])"
+        >
+          修改明细
+        </el-button>
       </crudOperation>
       <!--表单组件-->
       <el-dialog
@@ -42,43 +39,50 @@
         :title="crud.status.title"
         width="600px"
       >
-        <el-form ref="form" :model="form"  size="mini" label-width="80px">
+        <el-form ref="form" :rules="rules" :model="form" size="mini" label-width="110px">
           <el-row>
-            <el-col :span="8">
-              <el-form-item label="方案名称" prop="class_code">
-                <el-input v-model="form.alm_name" style="width: 120px;" />
+            <el-col :span="12">
+              <el-form-item label="方案名称" prop="alm_name">
+                <el-input v-model="form.alm_name" style="width: 150px;"/>
               </el-form-item>
             </el-col>
-            <el-col :span="8">
-              <el-form-item label="仓库编码" prop="class_name">
-                <el-input v-model="form.stor_code" style="width: 120px;" />
+            <el-col :span="12">
+              <el-form-item label="仓库编码" prop="stor_code">
+                <el-select v-model="form.stor_code" placeholder="请选择" style="width: 150px;">
+                  <el-option
+                    v-for="item in storList"
+                    :key="item.stor_id"
+                    :label="item.stor_code"
+                    :value="item.stor_code">
+                  </el-option>
+                </el-select>
               </el-form-item>
             </el-col>
           </el-row>
           <el-row>
-            <el-col >
-              <el-form-item label="安全库存数量" prop="class_name">
-                <el-input v-model="form.safety_qty" style="width: 370px;" />
+            <el-col :span="12">
+              <el-form-item label="安全库存数量" prop="safety_qty">
+                <el-input v-model="form.safety_qty" style="width: 150px;"/>
               </el-form-item>
             </el-col>
-            <el-col >
-              <el-form-item label="安全库存天数" prop="class_name">
-                <el-input v-model="form.safety_day" style="width: 370px;" />
+            <el-col :span="12">
+              <el-form-item label="安全库存天数" prop="safety_day">
+                <el-input v-model="form.safety_day" style="width: 150px;"/>
               </el-form-item>
             </el-col>
           </el-row>
           <el-row>
-            <el-col >
-              <el-form-item label="通知类型" prop="class_name">
-                <el-radio-group v-model="form.has_child" style="width: 140px">
-                  <el-radio label=true>站内信</el-radio>
-                  <el-radio label=false>微信</el-radio>
+            <el-col :span="12">
+              <el-form-item label="通知类型" prop="notice_type">
+                <el-radio-group v-model="form.notice_type" style="width: 150px">
+                  <el-radio label=1>站内信</el-radio>
+                  <el-radio label=2>微信</el-radio>
                 </el-radio-group>
               </el-form-item>
             </el-col>
-            <el-col >
-              <el-form-item label="是否启用" prop="class_name">
-                <el-radio-group v-model="form.is_used" style="width: 140px">
+            <el-col :span="12">
+              <el-form-item label="是否启用" prop="is_used">
+                <el-radio-group v-model="form.is_used" style="width: 150px">
                   <el-radio label=true>是</el-radio>
                   <el-radio label=false>否</el-radio>
                 </el-radio-group>
@@ -86,20 +90,26 @@
             </el-col>
           </el-row>
           <el-row>
-            <el-col :span="8">
-              <el-form-item label="跳过表达式" prop="class_desc">
-                <el-input v-model="form.expression" style="width: 120px;" />
-              </el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="备注" prop="class_desc">
-                <el-input v-model="form.remark" style="width: 120px;" />
+            <el-col :span="12">
+              <el-form-item label="跳过表达式" prop="expression">
+                <el-input v-model="form.expression" style="width: 150px;"/>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="24">
+              <el-form-item label="自定义映射" prop="ext_json">
+                <el-input type="textarea" v-model="form.ext_json" style="width: 430px;"/>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="24">
+              <el-form-item label="备注" prop="remark">
+                <el-input type="textarea" v-model="form.remark" style="width: 430px;"/>
               </el-form-item>
             </el-col>
           </el-row>
-          <el-form-item label="自定义映射" prop="class_desc">
-            <el-input type="textarea" v-model="form.ext_json" style="width: 370px;" />
-          </el-form-item>
         </el-form>
         <div slot="footer" class="dialog-footer">
           <el-button type="text" @click="crud.cancelCU">取消</el-button>
@@ -111,7 +121,6 @@
         ref="table"
         v-loading="crud.loading"
         lazy
-        :load="getClassDatas"
         :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
         :data="crud.data"
         row-key="id"
@@ -119,24 +128,28 @@
         @select-all="crud.selectAllChange"
         @selection-change="crud.selectionChangeHandler"
       >
-        <el-table-column prop="alm_name" label="安全库存方案" >
-            <template slot-scope="scope">
-              <el-link type="warning" @click="toView(scope.row)">{{ scope.row.id }}</el-link>
-            </template>
+        <el-table-column type="selection" width="55"/>
+        <el-table-column prop="alm_name" label="安全库存方案" min-width="120" show-tooltip-when-overflow>
+          <template slot-scope="scope">
+            <el-link type="warning" @click="toView(scope.row)">{{ scope.row.alm_name }}</el-link>
+          </template>
         </el-table-column>
-        <el-table-column prop="remark" label="描述" />
-        <el-table-column prop="safety_day" label="创建时间" />
-<!--        <el-table-column prop="has_child" :formatter="booleanFormat" label="是否关联子表" />-->
-        <el-table-column prop="expression" label="表达式" />
-        <el-table-column prop="notice_type" label="通知类型" />
-        <el-table-column prop="create_id" label="创建人" />
-        <el-table-column prop="create_time" label="创建事件" />
-        <el-table-column prop="ext_json" label="扩展信息" />
-        <el-table-column prop="is_used" :formatter="jsonFormat" label="是否启用" />
+        <el-table-column prop="stor_code" label="仓库编码" show-tooltip-when-overflow/>
+        <el-table-column prop="safety_qty" label="安全库存数量" min-width="120" show-tooltip-when-overflow/>
+        <el-table-column prop="safety_day" label="安全库存天数" min-width="120" show-tooltip-when-overflow/>
+        <el-table-column prop="remark" label="描述" show-tooltip-when-overflow/>
+        <el-table-column prop="safety_day" label="创建时间" show-tooltip-when-overflow/>
+        <el-table-column prop="expression" label="表达式" show-tooltip-when-overflow/>
+        <el-table-column prop="notice_type" label="通知类型" show-tooltip-when-overflow/>
+        <el-table-column prop="create_id" label="创建人" show-tooltip-when-overflow/>
+        <el-table-column prop="create_time" label="创建时间" show-tooltip-when-overflow/>
+        <el-table-column prop="ext_json" label="扩展信息" show-tooltip-when-overflow/>
+        <el-table-column prop="is_used" :formatter="jsonFormat" label="是否启用"/>
         <el-table-column
           label="操作"
           width="250px"
           align="center"
+          fixed="right"
         >
           <template slot-scope="scope">
             <udOperation
@@ -147,23 +160,22 @@
               :disabled-dle="scope.row.is_modify === '0'"
               msg="确定删除吗,如果存在下级节点则一并删除，此操作不能撤销！"
             />
-            <el-button slot="right" size="mini" type="text" icon="el-icon-circle-plus-outline" @click="crud.toAddAndData(addSibling(scope.row))">新增同级</el-button>
-            <el-button slot="right" size="mini" type="text" icon="el-icon-circle-plus" @click="crud.toAddAndData(addChildren(scope.row))">新增子级</el-button>
           </template>
         </el-table-column>
       </el-table>
       <!--分页组件-->
-      <pagination />
+      <pagination/>
     </div>
     <ViewDialog ref="itemview"/>
+    <EditDialog ref="editDialog" @editChanged="crud.toQuery()" :dialog-show.sync="editShow"/>
     <UploadDialog :dialog-show.sync="uploadShow" @tableChanged3="crud.toQuery()"/>
   </div>
 </template>
 
 <script>
 import formstruc from './formstruc'
-import CRUD, { crud, form, header, presenter } from '@crud/crud'
-import Treeselect, { LOAD_CHILDREN_OPTIONS } from '@riophae/vue-treeselect'
+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 ViewDialog from '@/views/wms/early_manage/early_inv/ViewDialog'
 import crudOperation from '@crud/CRUD.operation'
@@ -171,29 +183,26 @@ import udOperation from '@crud/UD.operation'
 import rrOperation from '@crud/RR.operation'
 import pagination from '@crud/Pagination'
 import UploadDialog from './UploadDialog'
+import EditDialog from './EditDialog'
+import crudStorattr from '@/views/wms/base_manage/stor/storattr'
 
 const defaultForm = {
-  form_type: null,
-  form_name: null,
-  form_desc: null,
-  create_time: null,
-  create_id: null,
-  biz_id: null,
-  biz_code: null,
-  biz_date: null,
-  biz_status: null,
-  material_id: null,
-  qty: null,
-  pcsn: null,
-  form_param: null,
-  has_child: false,
-  parent_id: null
+  id: null,
+  alm_name: null,
+  stor_code: null,
+  safety_qty: null,
+  safety_day: null,
+  expression: null,
+  notice_type: null,
+  ext_json: null,
+  is_used: null,
+  remark: null
 }
 export default {
   name: 'FormStruc',
   dicts: ['base_data'],
   // eslint-disable-next-line vue/no-unused-components
-  components: { UploadDialog, pagination, crudOperation, rrOperation, udOperation, Treeselect, ViewDialog },
+  components: {UploadDialog, pagination, crudOperation, rrOperation, udOperation, Treeselect, ViewDialog, EditDialog},
   mixins: [presenter(), header(), form(defaultForm), crud()],
   cruds() {
     return CRUD({
@@ -201,7 +210,7 @@ export default {
       url: '/api/almEarlyInv',
       idField: 'id',
       sort: 'id,desc',
-      crudMethod: { ...formstruc },
+      crudMethod: {...formstruc},
       optShow: {
         add: true,
         reset: true
@@ -212,14 +221,28 @@ export default {
     return {
       classes: [],
       uploadShow: false,
+      editShow: false,
       form_types: [],
-      permission: {}
+      storList: [],
+      permission: {},
+      rules: {
+        stor_code: [
+          {required: true, message: '仓库编码不能为空', trigger: 'blur'}
+        ],
+        safety_day: [
+          {required: true, message: '安全库存天数不能为空', trigger: 'blur'}
+        ],
+      }
     }
   },
   created() {
     this.getFormSelect() // 获取分类
+    crudStorattr.getStor({}).then(res => {
+      this.storList = res
+    })
   },
   methods: {
+
     toView(row) {
       if (row !== null) {
         this.$refs.itemview.setForm(row)
@@ -242,7 +265,11 @@ export default {
         return JSON.stringify(row.form_param)
       }
       return ''
-    }
+    },
+    edit(row) {
+      this.$refs.editDialog.setForm(row)
+      this.editShow = true
+    },
   }
 }
 </script>
