From da2330bb7951c602ebe72a9f53ff13d0895b3349 Mon Sep 17 00:00:00 2001
From: jinlin <jinlin>
Date: 星期五, 15 十二月 2023 10:57:55 +0800
Subject: [PATCH] 修改

---
 modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/service/OutboundConfigItemService.java       |   47 ++++
 modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/controller/OutboundConfigItemController.java |   93 +++++++++
 modules/mainPart/src/main/java/com/zt/life/modules/configItemChange/controller/ConfigItemChangeController.java     |    3 
 modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/dao/ConfigItemOutboundDao.java               |    3 
 web/src/views/modules/sys/task/already-task.vue                                                                    |   18 +
 core/src/main/java/com/zt/life/util/ZipCipherUtil.java                                                             |   56 +++++
 modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/service/ConfigItemOutboundService.java       |   49 +++-
 modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/model/OutboundConfigItem.java                |   60 ++++++
 web/src/views/modules/configItemOutbound/ConfigItemOutbound-AddOrUpdate.vue                                        |   23 +-
 web/src/views/layout/main-sidebar-sub-menu.vue                                                                     |    2 
 zt/core/src/main/resources/mapper/sys/SysMenuDao.xml                                                               |    2 
 modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/service/WarehouseConfigItemService.java     |    7 
 core/src/main/java/com/zt/life/sys/service/SysOssConfigService.java                                                |   78 +++++++
 modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/dao/OutboundConfigItemDao.java               |   21 ++
 modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/controller/ConfigItemOutboundController.java |   64 +++---
 modules/mainPart/src/main/resources/mapper/configItemOutbound/OutboundConfigItemDao.xml                            |   19 +
 modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/model/WarehouseConfigItem.java              |    5 
 modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/dto/ConfigItemOutboundDto.java               |    6 
 modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/dao/WarehouseConfigItemDao.java             |    3 
 modules/mainPart/src/main/resources/mapper/configItemOutbound/ConfigItemChangeDao.xml                              |    5 
 modules/mainPart/src/main/resources/mapper/configItemWarehouse/WarehouseConfigItemDao.xml                          |   32 --
 21 files changed, 485 insertions(+), 111 deletions(-)

diff --git a/core/src/main/java/com/zt/life/sys/service/SysOssConfigService.java b/core/src/main/java/com/zt/life/sys/service/SysOssConfigService.java
index 15dd4b2..f782b58 100644
--- a/core/src/main/java/com/zt/life/sys/service/SysOssConfigService.java
+++ b/core/src/main/java/com/zt/life/sys/service/SysOssConfigService.java
@@ -13,16 +13,27 @@
 import com.zt.core.oss.service.ISysOssConfigService;
 import com.zt.core.oss.service.ISysOssService;
 import com.zt.life.core.constant.Cache;
+import com.zt.life.export.service.DownloadService;
+import com.zt.life.oss.OssEncryptService;
 import com.zt.life.sys.dao.SysOssConfigDao;
 import com.zt.life.sys.dto.OssDto;
 import com.zt.life.sys.mapstruct.OssExMapper;
 import com.zt.life.sys.model.SysOssConfig;
+import com.zt.life.util.ZipCipherUtil;
 import com.zt.modules.oss.model.SysOss;
 import com.zt.modules.oss.service.SysOssService;
+import org.apache.commons.io.FileUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.stereotype.Service;
 
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.nio.file.Files;
+import java.nio.file.Paths;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -42,6 +53,15 @@
 
     @Autowired
     private SysOssService sysOssServices;
+
+    @Value("${zt.oss.local-path}")
+    private String localPath;
+
+    @Value("${data.key}")
+    private String key;
+
+    @Autowired
+    private OssEncryptService ossEncryptService;
 
     /**
      * 鍒嗛〉鏌ヨ
@@ -320,4 +340,62 @@
         return baseDao.selectList(new QueryWrapper<SysOssConfig>().eq(Constant.TableColumn.IS_DELETE, Constant.Bool.NO).lambda()
                 .eq(SysOssConfig::getBusiType, busiType));
     }
+
+    public void downloadFilesByosList(HttpServletRequest request, HttpServletResponse response, List<SysOss> list, String projectName) {
+        try {
+            String uuid = UUIDUtil.getUUID();
+            String remoteFileFullPath = Paths.get(localPath, "temp", uuid).toString();
+            Files.createDirectories(Paths.get(remoteFileFullPath));
+
+            for (SysOss so : list) {
+                try {
+                    String localFileFullPath = Paths.get(localPath, so.getPath()).toString();
+                    File localFile = new File(localFileFullPath);
+                    if (localFile.exists()) {
+                        try (InputStream in = ossEncryptService.decrypt(localFile);
+                             BufferedInputStream bis = new BufferedInputStream(in);
+                             BufferedOutputStream bos = new BufferedOutputStream(
+                                     new FileOutputStream(remoteFileFullPath + File.separator + so.getName()))) {
+
+                            byte[] buffer = new byte[1024];
+                            int len;
+                            while ((len = bis.read(buffer)) != -1) {
+                                bos.write(buffer, 0, len);
+                            }
+                        }
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace(); // 鎴栬�呰褰曟棩蹇�
+                }
+            }
+
+            String fileNameZip = Paths.get(localPath, "temp", uuid + ".zip").toString();
+            new ZipCipherUtil().encryptZip(remoteFileFullPath, fileNameZip, key);
+
+            File zipFile = new File(fileNameZip);
+            response.reset();
+            response.setContentLength((int) zipFile.length());
+            response.setContentType("application/octet-stream;charset=UTF-8");
+            String encodedFilename = DownloadService.getNameEncoder(request, projectName + ".zip");
+            response.addHeader("Content-Disposition", "attachment;filename=" + encodedFilename);
+
+            try (FileInputStream fileInputStream = new FileInputStream(zipFile);
+                 ServletOutputStream outputStream = response.getOutputStream()) {
+
+                byte[] buffers = new byte[1024];
+                int length;
+                while ((length = fileInputStream.read(buffers)) > 0) {
+                    outputStream.write(buffers, 0, length);
+                }
+
+            } catch (IOException e) {
+                e.printStackTrace(); // 鎴栬�呰褰曟棩蹇�
+            } finally {
+                FileUtils.deleteQuietly(new File(remoteFileFullPath));
+                FileUtils.deleteQuietly(new File(fileNameZip));// 鍒犻櫎涓存椂鏂囦欢澶瑰強鍏跺唴瀹�
+            }
+        } catch (Exception ex) {
+            ex.printStackTrace(); // 鎴栬�呰褰曟棩蹇�
+        }
+    }
 }
diff --git a/core/src/main/java/com/zt/life/util/ZipCipherUtil.java b/core/src/main/java/com/zt/life/util/ZipCipherUtil.java
new file mode 100644
index 0000000..8728228
--- /dev/null
+++ b/core/src/main/java/com/zt/life/util/ZipCipherUtil.java
@@ -0,0 +1,56 @@
+package com.zt.life.util;
+
+public class ZipCipherUtil {
+    /**
+     * 瀵圭洰褰晄rcFile涓嬬殑鎵�鏈夋枃浠剁洰褰曡繘琛屽厛鍘嬬缉鍚庡姞瀵�,鐒跺悗淇濆瓨涓篸estfile
+     *
+     * @param srcFile
+     *            瑕佹搷浣滅殑鏂囦欢鎴栨枃浠跺す
+     * @param destfile
+     *            鍘嬬缉鍔犲瘑鍚庡瓨鏀剧殑鏂囦欢
+     * @param keyStr
+     *            瀵嗛挜
+     */
+    public void encryptZip(String srcFile, String destfile, String keyStr) {
+        try {
+/*            File temp = new File(UUID.randomUUID().toString() + ".zip");
+            temp.deleteOnExit();
+            // 鍏堝帇缂╂枃浠�
+            // new ZipUtil().zip(srcFile, temp.getAbsolutePath());
+            cn.hutool.core.util.ZipUtil.zip(srcFile, temp.getAbsolutePath(), false);
+            // 瀵规枃浠跺姞瀵�
+            // FileAESUtil.EncFile(temp.getAbsolutePath(), destfile);
+            new CipherUtil().encrypt(temp.getAbsolutePath(), destfile, keyStr);
+            temp.delete();*/
+            cn.hutool.core.util.ZipUtil.zip(srcFile, destfile, false);
+        } catch (Exception e) {
+        }
+    }
+
+    /**
+     * 瀵规枃浠秙rcfile杩涜鍏堣В瀵嗗悗瑙e帇缂�,鐒跺悗瑙e帇缂╁埌鐩綍destfile涓�
+     *
+     * @param srcfile
+     *            瑕佽В瀵嗗拰瑙e帇缂╃殑鏂囦欢鍚�
+     * @param destfile
+     *            瑙e帇缂╁悗鐨勭洰褰�
+     * @param keyStr
+     *            瀵嗛挜
+     */
+    public void decryptUnzip(String srcfile, String destfile, String keyStr) {
+        try {
+/*            File temp = new File(UUID.randomUUID().toString() + ".zip");
+            temp.deleteOnExit();
+            // 鍏堝鏂囦欢瑙e瘑
+            new CipherUtil().decrypt(srcfile, temp.getAbsolutePath(), keyStr);
+            // FileAESUtil.DecFile(srcfile, temp.getAbsolutePath());
+            // 瑙e帇缂�
+            // new ZipUtil().unZip(temp.getAbsolutePath(), destfile);
+            cn.hutool.core.util.ZipUtil.unzip(temp.getAbsolutePath(), destfile);
+            temp.delete();*/
+            cn.hutool.core.util.ZipUtil.unzip(srcfile, destfile);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/configItemChange/controller/ConfigItemChangeController.java b/modules/mainPart/src/main/java/com/zt/life/modules/configItemChange/controller/ConfigItemChangeController.java
index 8da6116..b37ba7a 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/configItemChange/controller/ConfigItemChangeController.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/configItemChange/controller/ConfigItemChangeController.java
@@ -127,8 +127,7 @@
     @GetMapping("getItemList")
     @ApiOperation("鑾峰彇鍏ュ簱閰嶇疆椤瑰垪琛�")
     public PageResult<WarehouseConfigItem> getItemList(Long projectId,String ids) {
-        String type ="change";
-        List<WarehouseConfigItem> resultList = configItemService.warehouseConfigList(projectId,ids,type);
+        List<WarehouseConfigItem> resultList = configItemService.warehouseConfigList(projectId,ids);
         return PageResult.ok(resultList);
     }
     @GetMapping("exportConfigChange")
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/controller/ConfigItemOutboundController.java b/modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/controller/ConfigItemOutboundController.java
index 7b898d6..f8e5a62 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/controller/ConfigItemOutboundController.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/controller/ConfigItemOutboundController.java
@@ -14,6 +14,7 @@
 import com.zt.common.validator.group.UpdateGroup;
 import com.zt.life.modules.configItemOutbound.dto.ConfigItemOutboundDto;
 import com.zt.life.modules.configItemOutbound.model.ConfigItemOutbound;
+import com.zt.life.modules.configItemOutbound.model.OutboundConfigItem;
 import com.zt.life.modules.configItemOutbound.service.ConfigItemOutboundService;
 import com.zt.life.modules.configItemWarehouse.model.WarehouseConfigItem;
 import com.zt.life.modules.configItemWarehouse.service.WarehouseConfigItemService;
@@ -38,12 +39,12 @@
 /**
  * config_item_Change
  *
- * @author zt generator 
+ * @author zt generator
  * @since 1.0.0 2023-11-27
  */
 @RestController
 @RequestMapping("/configItemOutbound/ConfigItemOutbound/")
-@Api(tags="config_item_outbound")
+@Api(tags = "config_item_outbound")
 public class ConfigItemOutboundController {
     @Autowired
     private ConfigItemOutboundService configItemOutboundService;
@@ -56,47 +57,39 @@
 
     @Autowired
     private WarehouseConfigItemService configItemService;
+
     @GetMapping("page")
     @ApiOperation("鍒嗛〉")
     @ApiImplicitParams({
-        @ApiImplicitParam(name = Constant.Q.PAGE, value = Constant.QV.PAGE, required = true, dataType = Constant.QT.INT),
-        @ApiImplicitParam(name = Constant.Q.LIMIT, value = Constant.QV.LIMIT, required = true, dataType = Constant.QT.INT),
-        @ApiImplicitParam(name = Constant.Q.ORDER_FIELD, value = Constant.QV.ORDER_FIELD, dataType = Constant.QT.STRING),
-        @ApiImplicitParam(name = Constant.Q.ORDER, value = Constant.QV.ORDER, dataType = Constant.QT.STRING),
-        @ApiImplicitParam(name = "code", value = "閰嶇疆椤瑰彉鏇寸紪鍙�", dataType = Constant.QT.STRING, format = "a.code^LK"),
-        @ApiImplicitParam(name = "projectCode", value = "椤圭洰缂栧彿", dataType = Constant.QT.STRING, format = "p.code^EQ"),
-        @ApiImplicitParam(name = "softwareName", value = "椤圭洰鍚嶇О", dataType = Constant.QT.STRING, format = "p.software_name^EQ"),
-        @ApiImplicitParam(name = "libraryType", value = "搴撶被鍨�", dataType = Constant.QT.STRING, format = "a.library_type^EQ")    })
-    public PageResult<ConfigItemOutbound> page(@ApiIgnore @QueryParam QueryFilter queryFilter){
+            @ApiImplicitParam(name = Constant.Q.PAGE, value = Constant.QV.PAGE, required = true, dataType = Constant.QT.INT),
+            @ApiImplicitParam(name = Constant.Q.LIMIT, value = Constant.QV.LIMIT, required = true, dataType = Constant.QT.INT),
+            @ApiImplicitParam(name = Constant.Q.ORDER_FIELD, value = Constant.QV.ORDER_FIELD, dataType = Constant.QT.STRING),
+            @ApiImplicitParam(name = Constant.Q.ORDER, value = Constant.QV.ORDER, dataType = Constant.QT.STRING),
+            @ApiImplicitParam(name = "code", value = "閰嶇疆椤瑰彉鏇寸紪鍙�", dataType = Constant.QT.STRING, format = "a.code^LK"),
+            @ApiImplicitParam(name = "projectCode", value = "椤圭洰缂栧彿", dataType = Constant.QT.STRING, format = "p.code^EQ"),
+            @ApiImplicitParam(name = "softwareName", value = "椤圭洰鍚嶇О", dataType = Constant.QT.STRING, format = "p.software_name^EQ"),
+            @ApiImplicitParam(name = "libraryType", value = "搴撶被鍨�", dataType = Constant.QT.STRING, format = "a.library_type^EQ")})
+    public PageResult<ConfigItemOutbound> page(@ApiIgnore @QueryParam QueryFilter queryFilter) {
         List<ConfigItemOutbound> ConfigItemOutbound = configItemOutboundService.page(queryFilter);
         return PageResult.ok(ConfigItemOutbound);
     }
 
     @GetMapping("getDto")
     @ApiOperation("淇℃伅")
-    public Result<ConfigItemOutboundDto> getDto(Long projectId, Long changeId) {
-        ConfigItemOutboundDto data = configItemOutboundService.getDto(projectId, changeId);
-        if (changeId!=null) {
-            for (WarehouseConfigItem configItem  : data.getConfigOutboundList()) {
-                Long configItemId = configItem.getId();
-                OssDto ossDto = sysOssConfigService.getOssByBusiType(configItemId, "config_item_warehouse");
-                if (ossDto != null) {
-                    configItem.setFiles(ossDto);
-                }
-            }
-        }
+    public Result<ConfigItemOutboundDto> getDto(Long projectId, Long outboundId) {
+        ConfigItemOutboundDto data = configItemOutboundService.getDto(projectId, outboundId);
         return Result.ok(data);
     }
 
     @PostMapping
     @ApiOperation("鏂板")
     @LogOperation("鏂板")
-    public Result insert(@RequestBody ConfigItemOutboundDto configItemDto){
+    public Result insert(@RequestBody ConfigItemOutboundDto configItemDto) {
         //鏁堥獙鏁版嵁
         ValidatorUtils.validateEntity(configItemDto, AddGroup.class, DefaultGroup.class);
         Map<String, String> map = new HashMap<>();
         map.put("funCode", "config_item_Outbound");
-        map.put("projectId",configItemDto.getProjectId().toString());
+        map.put("projectId", configItemDto.getProjectId().toString());
         configItemDto.getConfigItemOutbound().setCode(sysCodeRuleService.getNewCode(map));
         Boolean result = configItemOutboundService.save(configItemDto);
         return Result.ok();
@@ -105,7 +98,7 @@
     @PutMapping
     @ApiOperation("淇敼")
     @LogOperation("淇敼")
-    public Result update(@RequestBody ConfigItemOutboundDto configItemDto){
+    public Result update(@RequestBody ConfigItemOutboundDto configItemDto) {
         //鏁堥獙鏁版嵁
         ValidatorUtils.validateEntity(configItemDto, UpdateGroup.class, DefaultGroup.class);
         Boolean result = configItemOutboundService.save(configItemDto);
@@ -116,7 +109,7 @@
     @DeleteMapping("deleteConfigOutbound")
     @ApiOperation("鍒犻櫎")
     @LogOperation("鍒犻櫎")
-    public Result delete(@RequestBody Long[] ids){
+    public Result delete(@RequestBody Long[] ids) {
         //鏁堥獙鏁版嵁
         AssertUtils.isArrayEmpty(ids, "id");
         configItemOutboundService.delete(ids);
@@ -126,15 +119,22 @@
 
     @GetMapping("getItemList")
     @ApiOperation("鑾峰彇鍏ュ簱閰嶇疆椤瑰垪琛�")
-    public PageResult<WarehouseConfigItem> getItemList(Long projectId,String ids) {
-        String type ="outbound";
-        List<WarehouseConfigItem> resultList = configItemService.warehouseConfigList(projectId,ids,type);
+    public PageResult<WarehouseConfigItem> getItemList(Long projectId, String ids) {
+        List<WarehouseConfigItem> resultList = configItemService.warehouseConfigList(projectId, ids);
         return PageResult.ok(resultList);
     }
+
     @GetMapping("exportConfigOutbound")
-    @ApiOperation("鎵撳嵃鍙樻洿鐢宠鍗�")
-    @LogOperation("鎵撳嵃鍙樻洿鐢宠鍗�")
+    @ApiOperation("鎵撳嵃鍑哄簱鐢宠鍗�")
+    @LogOperation("鎵撳嵃鍑哄簱鐢宠鍗�")
     public void exportConfigOutbound(Long id, HttpServletRequest request, HttpServletResponse response) {
-        configItemOutboundService.exportConfigOutbound(id,request, response);
+        configItemOutboundService.exportConfigOutbound(id, request, response);
+    }
+
+    @GetMapping("outbound")
+    @ApiOperation("鍑哄簱")
+    @LogOperation("鍑哄簱")
+    public void downloadFiles(HttpServletResponse response, HttpServletRequest request, Long id) {
+        configItemOutboundService.downloadFiles(response, request, id);
     }
 }
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/controller/OutboundConfigItemController.java b/modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/controller/OutboundConfigItemController.java
new file mode 100644
index 0000000..441d19d
--- /dev/null
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/controller/OutboundConfigItemController.java
@@ -0,0 +1,93 @@
+package com.zt.life.modules.configItemOutbound.controller;
+
+
+import com.zt.common.annotation.LogOperation;
+import com.zt.common.annotation.QueryParam;
+import com.zt.common.constant.Constant;
+import com.zt.common.db.query.QueryFilter;
+import com.zt.common.servlet.PageResult;
+import com.zt.common.servlet.Result;
+import com.zt.common.validator.AssertUtils;
+import com.zt.common.validator.ValidatorUtils;
+import com.zt.common.validator.group.AddGroup;
+import com.zt.common.validator.group.DefaultGroup;
+import com.zt.common.validator.group.UpdateGroup;
+import com.zt.life.modules.configItemOutbound.model.OutboundConfigItem;
+import com.zt.life.modules.configItemOutbound.service.OutboundConfigItemService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
+
+/**
+ * warehouse_config_item
+ *
+ * @author zt generator 
+ * @since 1.0.0 2023-11-27
+ */
+@RestController
+@RequestMapping("/configItemOutbound/OutboundConfigItem/")
+@Api(tags="outbound_config_item")
+public class OutboundConfigItemController {
+    @Autowired
+    private OutboundConfigItemService outboundConfigItemService;
+
+    @GetMapping("page")
+    @ApiOperation("鍒嗛〉")
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = Constant.Q.PAGE, value = Constant.QV.PAGE, required = true, dataType = Constant.QT.INT),
+        @ApiImplicitParam(name = Constant.Q.LIMIT, value = Constant.QV.LIMIT, required = true, dataType = Constant.QT.INT),
+        @ApiImplicitParam(name = Constant.Q.ORDER_FIELD, value = Constant.QV.ORDER_FIELD, dataType = Constant.QT.STRING),
+        @ApiImplicitParam(name = Constant.Q.ORDER, value = Constant.QV.ORDER, dataType = Constant.QT.STRING),
+    })
+    public PageResult<OutboundConfigItem> page(@ApiIgnore @QueryParam QueryFilter queryFilter){
+
+        return PageResult.ok(outboundConfigItemService.page(queryFilter));
+    }
+
+    @GetMapping("{id}")
+    @ApiOperation("淇℃伅")
+    public Result<OutboundConfigItem> get(@PathVariable("id") Long id){
+        OutboundConfigItem data = outboundConfigItemService.get(id);
+
+        return Result.ok(data);
+    }
+
+    @PostMapping
+    @ApiOperation("鏂板")
+    @LogOperation("鏂板")
+    public Result insert(@RequestBody OutboundConfigItem outboundConfigItem){
+        //鏁堥獙鏁版嵁
+        ValidatorUtils.validateEntity(outboundConfigItem, AddGroup.class, DefaultGroup.class);
+        outboundConfigItemService.insert(outboundConfigItem);
+
+        return Result.ok();
+    }
+
+    @PutMapping
+    @ApiOperation("淇敼")
+    @LogOperation("淇敼")
+    public Result update(@RequestBody OutboundConfigItem outboundConfigItem){
+        //鏁堥獙鏁版嵁
+        ValidatorUtils.validateEntity(outboundConfigItem, UpdateGroup.class, DefaultGroup.class);
+        outboundConfigItemService.update(outboundConfigItem);
+
+        return Result.ok();
+    }
+
+    @DeleteMapping
+    @ApiOperation("鍒犻櫎")
+    @LogOperation("鍒犻櫎")
+    public Result delete(@RequestBody Long[] ids){
+        //鏁堥獙鏁版嵁
+        AssertUtils.isArrayEmpty(ids, "id");
+        outboundConfigItemService.delete(ids);
+
+        return Result.ok();
+    }
+
+}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/dao/ConfigItemOutboundDao.java b/modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/dao/ConfigItemOutboundDao.java
index 542e45d..2db36e8 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/dao/ConfigItemOutboundDao.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/dao/ConfigItemOutboundDao.java
@@ -1,8 +1,10 @@
 package com.zt.life.modules.configItemOutbound.dao;
 
 import com.zt.common.dao.BaseDao;
+import com.zt.life.modules.configItemOutbound.dto.ConfigItemOutboundDto;
 import com.zt.life.modules.configItemOutbound.model.ConfigItemOutbound;
 import com.zt.life.modules.configItemWarehouse.model.WarehouseCmAudit;
+import com.zt.modules.oss.model.SysOss;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
@@ -20,4 +22,5 @@
 
     List<ConfigItemOutbound> getList(Map<String, Object> params);
 
+    List<SysOss> getFilesByBusiId(Long id);
 }
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/dao/OutboundConfigItemDao.java b/modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/dao/OutboundConfigItemDao.java
new file mode 100644
index 0000000..ad94dce
--- /dev/null
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/dao/OutboundConfigItemDao.java
@@ -0,0 +1,21 @@
+package com.zt.life.modules.configItemOutbound.dao;
+
+import com.zt.common.dao.BaseDao;
+import com.zt.life.modules.configItemOutbound.model.OutboundConfigItem;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * warehouse_config_item
+ *
+ * @author zt generator 
+ * @since 1.0.0 2023-11-27
+ */
+@Mapper
+public interface OutboundConfigItemDao extends BaseDao<OutboundConfigItem> {
+
+    List<OutboundConfigItem> getList(Map<String, Object> params);
+}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/dto/ConfigItemOutboundDto.java b/modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/dto/ConfigItemOutboundDto.java
index 3374822..2ab6474 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/dto/ConfigItemOutboundDto.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/dto/ConfigItemOutboundDto.java
@@ -1,9 +1,7 @@
 package com.zt.life.modules.configItemOutbound.dto;
 
 import com.zt.life.modules.configItemOutbound.model.ConfigItemOutbound;
-import com.zt.life.modules.configItemWarehouse.model.WarehouseCmAudit;
-import com.zt.life.modules.configItemWarehouse.model.WarehouseConfigItem;
-import com.zt.life.modules.configItemWarehouse.model.WarehouseQaAudit;
+import com.zt.life.modules.configItemOutbound.model.OutboundConfigItem;
 import com.zt.life.modules.project.model.Project;
 import com.zt.modules.workflow.dto.FlowInfoDto;
 import io.swagger.annotations.ApiModelProperty;
@@ -26,6 +24,6 @@
     private FlowInfoDto flowInfoDto;
 
     @ApiModelProperty(value = "鍙樻洿閰嶇疆椤�")
-    private List<WarehouseConfigItem> configOutboundList = new ArrayList<>();
+    private List<OutboundConfigItem> configOutboundList = new ArrayList<>();
 }
 
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/model/OutboundConfigItem.java b/modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/model/OutboundConfigItem.java
new file mode 100644
index 0000000..8213669
--- /dev/null
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/model/OutboundConfigItem.java
@@ -0,0 +1,60 @@
+package com.zt.life.modules.configItemOutbound.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.zt.common.entity.BusiEntity;
+import com.zt.life.sys.dto.OssDto;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * warehouse_config_item
+ *
+ * @author zt generator 
+ * @since 1.0.0 2023-11-27
+ */
+@Data
+@EqualsAndHashCode(callSuper=false)
+@TableName("config_item_outbound_detail")
+public class OutboundConfigItem extends BusiEntity {
+	private static final long serialVersionUID = 1L;
+
+	@ApiModelProperty(value = "鍏ュ簱椤笽D")
+	private Long warehouseId;
+
+	@ApiModelProperty(value = "鍑哄簱鍗旾D")
+	private Long outboundId;
+
+	@ApiModelProperty(value = "椤圭洰宸ョ▼ID")
+	private Long projectId;
+
+	@ApiModelProperty(value = "妫�鏌ュ崟ID")
+	private Long checkId;
+
+	@ApiModelProperty(value = "鍏ュ簱鏄庣粏绫诲瀷")
+	private String pageCode;
+
+	@ApiModelProperty(value = "搴忓彿")
+	private Integer no;
+
+	@ApiModelProperty(value = "鍏ュ簱鐘舵��")
+	private Integer status;
+
+	@ApiModelProperty(value = "閰嶇疆椤瑰悕绉�")
+	private String itemName;
+
+	@ApiModelProperty(value = "閰嶇疆椤规爣璇�")
+	private String itemIdentify;
+
+	@ApiModelProperty(value = "鐗堟湰")
+	private String version;
+
+
+	@ApiModelProperty(value = "瀵嗙骇")
+	private String secretClass;
+
+
+	@ApiModelProperty(value = "鍑哄簱閫夋嫨")
+	private Long selectId;
+}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/service/ConfigItemOutboundService.java b/modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/service/ConfigItemOutboundService.java
index 8d802c8..cf3ba03 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/service/ConfigItemOutboundService.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/service/ConfigItemOutboundService.java
@@ -1,36 +1,41 @@
 package com.zt.life.modules.configItemOutbound.service;
 
 import cn.hutool.core.convert.Convert;
+import cn.hutool.core.date.DateUtil;
+import com.alibaba.fastjson.JSONObject;
 import com.zt.common.db.query.QueryFilter;
 import com.zt.common.service.BaseService;
+import com.zt.common.utils.UUIDUtil;
 import com.zt.life.export.dto.WordFile;
 import com.zt.life.export.service.WordFileService;
 import com.zt.life.modules.configItemOutbound.dao.ConfigItemOutboundDao;
 import com.zt.life.modules.configItemOutbound.dto.ConfigItemOutboundDto;
 import com.zt.life.modules.configItemOutbound.model.ConfigItemOutbound;
-import com.zt.life.modules.configItemWarehouse.model.WarehouseCmAudit;
+import com.zt.life.modules.configItemOutbound.model.OutboundConfigItem;
 import com.zt.life.modules.configItemWarehouse.model.WarehouseConfigItem;
-import com.zt.life.modules.configItemWarehouse.model.WarehouseQaAudit;
-import com.zt.life.modules.configItemWarehouse.service.WarehouseCmAuditService;
 import com.zt.life.modules.configItemWarehouse.service.WarehouseConfigItemService;
-import com.zt.life.modules.configItemWarehouse.service.WarehouseQaAuditService;
 import com.zt.life.modules.mainPart.utils.GetFilesPath;
 import com.zt.life.modules.mainPart.utils.GetShowDictList;
+import com.zt.life.util.ZipCipherUtil;
 import com.zt.life.modules.project.service.ProjectService;
 import com.zt.life.modules.testCheckOrder.model.TestCheckOrder;
 import com.zt.life.modules.testCheckOrder.service.TestCheckOrderService;
 import com.zt.life.sys.service.SysOssConfigService;
 import com.zt.modules.coderule.service.SysCodeRuleService;
+import com.zt.modules.oss.model.SysOss;
 import com.zt.modules.oss.service.SysOssService;
 import com.zt.modules.workflow.dto.FlowInfoDto;
 import com.zt.modules.workflow.service.WorkflowService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.UnsupportedEncodingException;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -59,14 +64,14 @@
     @Autowired
     private ProjectService projectService;
 
-    @Autowired
-    private WarehouseCmAuditService cmAuditService;
-
-    @Autowired
-    private WarehouseQaAuditService qaAuditService;
+    @Value("${zt.oss.local-server}")
+    private String localServer;
 
     @Autowired
     private WarehouseConfigItemService configItemService;
+
+    @Autowired
+    private OutboundConfigItemService outboundItemService;
 
     @Autowired
     private TestCheckOrderService testCheckOrderService;
@@ -80,6 +85,11 @@
     @Autowired
     private GetFilesPath getFilesPath;
 
+    @Value("${data.sync-path}")
+    private String syncPath;
+
+    @Value("${data.key}")
+    private String key;
 
     /**
      * 鍒嗛〉鏌ヨ
@@ -118,14 +128,14 @@
             OutboundId = configItemDto.getConfigItemOutbound().getId();
         }
 
-        for (WarehouseConfigItem configItem : configItemDto.getConfigOutboundList()) {
-            configItem.setWarehouseId(OutboundId);
+        for (OutboundConfigItem configItem : configItemDto.getConfigOutboundList()) {
+            configItem.setOutboundId(OutboundId);
             if (configItem.getId() != null) {
-                configItemService.update(configItem);
+                outboundItemService.update(configItem);
             } else {
-                configItem.setWarehouseId(OutboundId);
+                configItem.setOutboundId(OutboundId);
                 configItem.setProjectId(configItemDto.getConfigItemOutbound().getProjectId());
-                configItemService.insert(configItem);
+                outboundItemService.insert(configItem);
             }
             Long checkId = configItem.getCheckId();
             if (checkId != null) {
@@ -136,7 +146,6 @@
                     testCheckOrderService.update(testCheckOrder);
                 }
             }
-            sysOssConfigService.updateOss(configItem.getId(), configItem.getFiles());// 淇濆瓨闄勪欢
         }
 
         Long bizId = configItemDto.getConfigItemOutbound().getId();
@@ -161,7 +170,7 @@
             if (projectId == null) {
                 projectId = configItemOutbound.getProjectId();
             }
-            List<WarehouseConfigItem> configOutboundList = configItemService.getList(OutboundId);
+            List<OutboundConfigItem> configOutboundList = outboundItemService.getList(OutboundId);
             data.setConfigOutboundList(configOutboundList);
 
         } else {
@@ -188,7 +197,7 @@
             dataObj.getConfigItemOutbound().setLibraryType(libraryTypeStr);
             String ApprovalOpinionStr = getShowDictList.getShowDictList(dataObj.getConfigItemOutbound().getApprovalOpinions(), "is_agree", false);
             dataObj.getConfigItemOutbound().setApprovalOpinions(ApprovalOpinionStr);
-            for (WarehouseConfigItem configItemList : dataObj.getConfigOutboundList()) {
+            for (OutboundConfigItem configItemList : dataObj.getConfigOutboundList()) {
                 String value = configItemList.getSecretClass();
                 String secretClassStr = getShowDictList.getShowDictList(value, "secret_class", false);
                 configItemList.setSecretClass(secretClassStr);
@@ -203,4 +212,10 @@
             e.printStackTrace();
         }
     }
+
+    public void downloadFiles(HttpServletResponse response, HttpServletRequest request, Long id) {
+        String projectName="鍑哄簱鏂囦欢";
+        List<SysOss> list = baseDao.getFilesByBusiId(id);
+        sysOssConfigService.downloadFilesByosList(request,response,list,projectName);
+    }
 }
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/service/OutboundConfigItemService.java b/modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/service/OutboundConfigItemService.java
new file mode 100644
index 0000000..a7a59bc
--- /dev/null
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/service/OutboundConfigItemService.java
@@ -0,0 +1,47 @@
+package com.zt.life.modules.configItemOutbound.service;
+
+import com.zt.common.db.query.QueryFilter;
+import com.zt.common.service.BaseService;
+import com.zt.life.modules.configItemOutbound.dao.OutboundConfigItemDao;
+import com.zt.life.modules.configItemOutbound.model.OutboundConfigItem;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * warehouse_config_item
+ *
+ * @author zt generator 
+ * @since 1.0.0 2023-11-27
+ */
+@Service
+public class OutboundConfigItemService extends BaseService<OutboundConfigItemDao, OutboundConfigItem> {
+
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param queryFilter
+     * @return
+     */
+    public List<OutboundConfigItem> page(QueryFilter queryFilter) {
+        return baseDao.getList(queryFilter.getQueryParams());
+    }
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param ids
+     */
+    public void delete(Long[] ids) {
+        super.deleteLogic(ids);
+    }
+
+    public List<OutboundConfigItem> getList(Long outboundId) {
+        Map<String, Object> params = new HashMap<>();
+        params.put("outboundId",outboundId);
+        return baseDao.getList(params);
+    }
+}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/dao/WarehouseConfigItemDao.java b/modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/dao/WarehouseConfigItemDao.java
index 5def6c1..6f08551 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/dao/WarehouseConfigItemDao.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/dao/WarehouseConfigItemDao.java
@@ -23,6 +23,5 @@
 
     List<WarehouseConfigItem> itemList(Long projectId);
 
-    List<WarehouseConfigItem> changeSelectList(Long projectId,String ids);
-    List<WarehouseConfigItem> outboundSelectList(Long projectId,String ids);
+    List<WarehouseConfigItem> selectList(Long projectId,String ids);
 }
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/model/WarehouseConfigItem.java b/modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/model/WarehouseConfigItem.java
index 8822067..3b17c6b 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/model/WarehouseConfigItem.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/model/WarehouseConfigItem.java
@@ -57,10 +57,7 @@
 	private String secretClass;
 
 	@ApiModelProperty(value = "鍙樻洿閫夋嫨")
-	private Long changeSelectId;
-
-	@ApiModelProperty(value = "鍑哄簱閫夋嫨")
-	private Long outboundSelectId;
+	private Long selectId;
 
 	@TableField(exist = false)
 	@ApiModelProperty(value = "闄勪欢")
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/service/WarehouseConfigItemService.java b/modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/service/WarehouseConfigItemService.java
index 10fee2e..05e8eb5 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/service/WarehouseConfigItemService.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/service/WarehouseConfigItemService.java
@@ -51,10 +51,7 @@
         return baseDao.itemList(projectId);
     }
 
-    public List<WarehouseConfigItem> warehouseConfigList(Long projectId,String ids,String type) {
-        if (type.contains("outbound")){
-            return baseDao.outboundSelectList(projectId,ids);
-        }
-        return baseDao.changeSelectList(projectId,ids);
+    public List<WarehouseConfigItem> warehouseConfigList(Long projectId,String ids) {
+        return baseDao.selectList(projectId,ids);
     }
 }
diff --git a/modules/mainPart/src/main/resources/mapper/configItemOutbound/ConfigItemChangeDao.xml b/modules/mainPart/src/main/resources/mapper/configItemOutbound/ConfigItemChangeDao.xml
index fe296f4..c84b44b 100644
--- a/modules/mainPart/src/main/resources/mapper/configItemOutbound/ConfigItemChangeDao.xml
+++ b/modules/mainPart/src/main/resources/mapper/configItemOutbound/ConfigItemChangeDao.xml
@@ -17,4 +17,9 @@
             ORDER BY ${orderBySql}
         </if>
     </select>
+    <select id="getFilesByBusiId" resultType="com.zt.modules.oss.model.SysOss">
+        select  b.* from config_item_outbound_detail a , sys_oss b where a.outbound_id= #{id} and a.IS_DELETE=0 and b.IS_DELETE=0 and
+            a.select_id=b.BUSI_ID and BUSI_TYPE='config_item_warehouse'
+    </select>
+
 </mapper>
diff --git a/modules/mainPart/src/main/resources/mapper/configItemOutbound/OutboundConfigItemDao.xml b/modules/mainPart/src/main/resources/mapper/configItemOutbound/OutboundConfigItemDao.xml
new file mode 100644
index 0000000..6de68de
--- /dev/null
+++ b/modules/mainPart/src/main/resources/mapper/configItemOutbound/OutboundConfigItemDao.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.zt.life.modules.configItemOutbound.dao.OutboundConfigItemDao">
+
+    <select id="getList" resultType="com.zt.life.modules.configItemOutbound.model.OutboundConfigItem">
+        select a.*
+        from config_item_outbound_detail a
+        <where>
+            a.is_delete = 0
+            <if test="warehouseId!=null">
+                and outbound_id = ${outboundId}
+            </if>
+        </where>
+        <if test="orderBySql!=null">
+            ORDER BY ${orderBySql}
+        </if>
+    </select>
+</mapper>
diff --git a/modules/mainPart/src/main/resources/mapper/configItemWarehouse/WarehouseConfigItemDao.xml b/modules/mainPart/src/main/resources/mapper/configItemWarehouse/WarehouseConfigItemDao.xml
index 1819532..ddbcb48 100644
--- a/modules/mainPart/src/main/resources/mapper/configItemWarehouse/WarehouseConfigItemDao.xml
+++ b/modules/mainPart/src/main/resources/mapper/configItemWarehouse/WarehouseConfigItemDao.xml
@@ -47,42 +47,16 @@
         WHERE i.is_delete = 0
           AND i.project_id = ${projectId}
     </select>
-    <select id="changeSelectList" resultType="com.zt.life.modules.configItemWarehouse.model.WarehouseConfigItem">
+    <select id="selectList" resultType="com.zt.life.modules.configItemWarehouse.model.WarehouseConfigItem">
         SET @row_number = 0;
         SELECT (@row_number := @row_number + 1) AS no,
-        a.item_name,a.item_identify,a.version as retrospect_version,a.secret_class,a.project_id,a.id as change_select_id
+        a.item_name,a.item_identify,a.version as retrospect_version,a.secret_class,a.project_id,a.id as select_id
         from config_item_warehouse_detail a
         WHERE a.is_delete = 0
         and a.project_id = ${projectId}
-        and a.outbound_select_id IS NOT NULL
         <if test="ids!=null and ids!=''">
             AND id not in (${ids})
         </if>
-        and a.id NOT IN (SELECT change_select_id FROM config_item_warehouse_detail
-        WHERE
-        ( SELECT count(*) FROM config_item_warehouse_detail WHERE id IN (SELECT
-        change_select_id
-        FROM
-        config_item_warehouse_detail) ) > 0)
+        and a.id NOT IN (select select_id from config_item_warehouse_detail where select_id is not null)
     </select>
-    <select id="outboundSelectList" resultType="com.zt.life.modules.configItemWarehouse.model.WarehouseConfigItem">
-        SET @row_number = 0;
-        SELECT (@row_number := @row_number + 1) AS no,
-        a.item_name,a.item_identify,a.version,a.secret_class,a.project_id,a.id as outbound_select_id
-        from config_item_warehouse_detail a
-        WHERE a.is_delete = 0
-        and a.project_id = ${projectId}
-        and a.change_select_id IS NOT NULL
-        <if test="ids!=null and ids!=''">
-            AND id not in (${ids})
-        </if>
-        and a.id NOT IN (SELECT outbound_select_id FROM config_item_warehouse_detail
-        WHERE
-        ( SELECT count(*) FROM config_item_warehouse_detail WHERE id IN (SELECT
-        outbound_select_id
-        FROM
-        config_item_warehouse_detail) ) > 0)
-    </select>
-
-
 </mapper>
diff --git a/web/src/views/layout/main-sidebar-sub-menu.vue b/web/src/views/layout/main-sidebar-sub-menu.vue
index 2ab80c1..826913d 100644
--- a/web/src/views/layout/main-sidebar-sub-menu.vue
+++ b/web/src/views/layout/main-sidebar-sub-menu.vue
@@ -14,7 +14,7 @@
                 <subMmenu :navMenus="navMenu.children"></subMmenu>
             </el-submenu>
             <!-- 鏈�鍚庝竴绾ц彍鍗� -->
-            <el-menu-item v-else-if="navMenu.showMenu==1" :key="navMenu.id" :index="navMenu.id"
+            <el-menu-item v-else-if="navMenu.showMenu==1" :key="key" :index="navMenu.id"
                           @click="gotoRouteHandle(navMenu.id)">
                 <svg class="icon-svg aui-sidebar__menu-icon" aria-hidden="true">
                     <use :xlink:href="`#${navMenu.icon}`"></use>
diff --git a/web/src/views/modules/configItemOutbound/ConfigItemOutbound-AddOrUpdate.vue b/web/src/views/modules/configItemOutbound/ConfigItemOutbound-AddOrUpdate.vue
index 3b0098c..c47d7cf 100644
--- a/web/src/views/modules/configItemOutbound/ConfigItemOutbound-AddOrUpdate.vue
+++ b/web/src/views/modules/configItemOutbound/ConfigItemOutbound-AddOrUpdate.vue
@@ -90,13 +90,6 @@
                     </zt-table-button>
                   </template>
                 </el-table-column>
-                <el-table-column fixed="right" prop="files" label="涓婁紶闄勪欢" width="240" align="center">
-                  <template v-slot="{ row }">
-                    <!--                    <zt-table-button @click="files(row.id)">涓婁紶闄勪欢</zt-table-button>-->
-                    <table-uploader busi-type="config_item_warehouse" model-name="row" :dataForm="row"
-                                    v-model="row.files"/>
-                  </template>
-                </el-table-column>
               </el-table>
               <div v-if="showAddAndEdit && !dataForm.disabled"  class="icon-container" @click="handleCommand">
                 <!-- 鏀剧疆鍥哄畾鐨勫浘鏍� -->
@@ -129,9 +122,7 @@
           </div>
           <div style="width: calc(100% - 120px)" class="el-border-left">
             <el-form-item class="el-CMTextarea" style="width: 100%;padding: 5px">
-              <el-input v-if="stepMarker=='pzxck_cmcz'" type="textarea" :rows="2" placeholder="璇疯緭鍏ュ唴瀹�"
-                        v-model="dataForm.configItemOutbound.CmOperations"></el-input>
-              <span v-else>{{dataForm.configItemOutbound.CmOperations}}</span>
+              <el-button v-if="stepMarker=='pzxck_cmcz'" type="primary" @click="download()">鍑哄簱</el-button>
             </el-form-item>
             <el-form-item label-width="80%" label="鎿嶄綔浜猴細" style="width: 65%">
               <span>{{dataForm.configItemOutbound.operator}}</span>
@@ -261,7 +252,7 @@
       handleCommand() {
         this.$nextTick(()=>{
           console.log(this.dataForm.projectId,'this.dataForm.projectId')
-          this.ids = this.dataForm.configOutboundList.map(item=>item.outboundSelectId).join(',')
+          this.ids = this.dataForm.configOutboundList.map(item=>item.selectId).join(',')
           this.$refs.configItemList.$refs.dialog.init(this.dataForm.projectId,this.ids)
         })
         // this.dataForm.configItemList.push({})
@@ -301,10 +292,18 @@
         let apiURL = `/configItemOutbound/ConfigItemOutbound/exportConfigOutbound`
         window.location.href = `${window.SITE_CONFIG['apiURL']}${apiURL}?${params}`
       },
+      download(){
+        let params = qs.stringify({
+          token: Cookies.get('token'),
+          id:this.dataForm.id
+        })
+        let apiURL = `/configItemOutbound/ConfigItemOutbound/outbound`
+        window.location.href = `${window.SITE_CONFIG['apiURL']}${apiURL}?${params}`
+      },
       // 鑾峰彇淇℃伅
       async getInfo() {
         let params = {
-          changeId: this.dataForm.id,
+          outboundId: this.dataForm.id,
           projectId: this.dataForm.projectId
         }
         let res = await this.$http.get(`/configItemOutbound/ConfigItemOutbound/getDto`, {params: params})
diff --git a/web/src/views/modules/sys/task/already-task.vue b/web/src/views/modules/sys/task/already-task.vue
index 3541edc..f78d7a7 100644
--- a/web/src/views/modules/sys/task/already-task.vue
+++ b/web/src/views/modules/sys/task/already-task.vue
@@ -50,7 +50,9 @@
     <!-- 宸插姙浠诲姟寮圭獥 -->
     <ItemCirculatOrder ref="itemCirculatOrder" @refreshDataList="getQuery()"></ItemCirculatOrder>
     <ConfigItemWarehouse ref="configItemWarehouse" @refreshDataList="getQuery()"></ConfigItemWarehouse>
-    <TestCheckOrder ref="testCheckOrder" @refreshDataList="getQuery()"></TestCheckOrder>
+    <ConfigItemChange ref="configItemChange" @refreshDataList="getQuery()"></ConfigItemChange>
+    <ConfigItemOutbound ref="configItemOutbound" @refreshDataList="getQuery()"></ConfigItemOutbound>
+    <TestCheckOrder ref="testCheckOrder" @refreshDataList="getQuery()"></TestCheckOrder><TestCheckOrder ref="testCheckOrder" @refreshDataList="getQuery()"></TestCheckOrder>
     <!--    </zt-table-wraper>-->
   </div>
 </template>
@@ -62,6 +64,8 @@
   import Cookies from "js-cookie";
   import ConfigItemWarehouse from '@/views/modules/configItemWarehouse/ConfigItemWarehouse-AddOrUpdate'
   import TestCheckOrder from "@/views/modules/testCheckOrder/TestCheckOrder-AddOrUpdate.vue";
+  import ConfigItemChange from "@/views/modules/configItemChange/ConfigItemChange-AddOrUpdate.vue";
+  import ConfigItemOutbound from "@/views/modules/configItemOutbound/ConfigItemOutbound-AddOrUpdate.vue";
 
   export default {
     data() {
@@ -88,7 +92,9 @@
       TestCheckOrder,
       InfiniteLoading,
       ItemCirculatOrder,
-      ConfigItemWarehouse
+      ConfigItemWarehouse,
+      ConfigItemChange,
+      ConfigItemOutbound
     },
     watch:{
     },
@@ -201,6 +207,14 @@
           this.$nextTick(()=>{
             this.$refs.testCheckOrder.$refs.dialog.init(row.bizId,row, true)
           })
+        }else if (row.flowCode === 'pzxck') {
+          this.$nextTick(()=>{
+            this.$refs.configItemOutbound.$refs.dialog.init(row.bizId,row, true)
+          })
+        }else if (row.flowCode === 'pzxbg') {
+          this.$nextTick(()=>{
+            this.$refs.configItemChange.$refs.dialog.init(row.bizId,row, true)
+          })
         }
         else {
           if (row.stepReadRouterId === null){
diff --git a/zt/core/src/main/resources/mapper/sys/SysMenuDao.xml b/zt/core/src/main/resources/mapper/sys/SysMenuDao.xml
index 97332ae..511d4e9 100644
--- a/zt/core/src/main/resources/mapper/sys/SysMenuDao.xml
+++ b/zt/core/src/main/resources/mapper/sys/SysMenuDao.xml
@@ -17,7 +17,7 @@
                 union all
             select menu_id
             from sys_role_menu s1,sys_role s2
-            where s1.role_id = s2.id and s2.code='base'
+            where s1.role_id = s2.id and s2.code='base' and s1.is_delete=0 and s2.is_delete=0
             )
         </if>
         <if test="tenantId != null and tenantId != 0">

--
Gitblit v1.9.1