From c041523ff100a6a43ebc4411125a3e566e19f193 Mon Sep 17 00:00:00 2001
From: jinlin <jinlin>
Date: 星期五, 24 十一月 2023 14:16:16 +0800
Subject: [PATCH] Changes

---
 zt/core/src/main/java/com/zt/modules/oss/enums/OssStatus.java                                                       |    2 
 web/src/views/modules/itemCirculatOrder/ItemCirculatOrder-AddOrUpdate.vue                                           |   18 
 web/src/components/config-uploader/src/config-uploader.vue                                                          |   67 +
 zt/core/src/main/java/com/zt/modules/oss/encry/NoEncryptService.java                                                |   10 
 web/src/components/table-uploader/src/table-uploader.vue                                                            |   23 
 modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/controller/ItemCirculatOrderController.java    |   19 
 zt/core/src/main/java/com/zt/modules/oss/annotation/DataFieldParser.java                                            |   16 
 modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/model/ItemCirculatOrder.java                   |   11 
 web/packages/components/zt-uploader/src/zt-uploader.vue                                                             | 1199 ++++++++++++++++++++++++++++++-------------
 web/package.json                                                                                                    |    2 
 zt/core/src/main/resources/mapper/oss/SysOssDao.xml                                                                 |    1 
 modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/model/ItemCirculatOrderTechnical.java          |    9 
 zt/core/src/main/resources/mapper/sys/SysDictTypeDao.xml                                                            |    2 
 zt/common/src/main/java/com/zt/core/sys/dto/DictIstance.java                                                        |    2 
 modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/dto/ItemCirculatOrderDto.java                  |    3 
 modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/service/ItemCirculatOrderTechnicalService.java |    4 
 web/src/views/modules/itemCirculatOrder/ItemCirculatOrder.vue                                                       |   11 
 zt/core/src/main/java/com/zt/modules/oss/cloud/LocalStorageService.java                                             |   19 
 zt/core/src/main/java/com/zt/modules/oss/service/SysOssService.java                                                 |    4 
 web/src/views/modules/project/SoftwareTestOrder-AddOrUpdate.vue                                                     |    3 
 zt/core/src/main/java/com/zt/modules/oss/controller/chunkUploadController.java                                      |   11 
 modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/service/ItemCirculatOrderService.java          |    7 
 zt/core/src/main/java/com/zt/modules/oss/cloud/StorageConfig.java                                                   |    4 
 zt/core/src/main/java/com/zt/modules/oss/controller/SysOssController.java                                           |    8 
 zt/core/src/main/java/com/zt/modules/oss/mapstruct/OssMapper.java                                                   |    3 
 modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/dao/ItemCirculatOrderDao.java                  |    2 
 modules/mainPart/src/main/resources/mapper/itemCirculatOrder/ItemCirculatOrderDao.xml                               |   12 
 zt/core/src/main/java/com/zt/modules/oss/model/OssFieldDefine.java                                                  |    7 
 zt/core/src/main/java/com/zt/modules/oss/model/SysOss.java                                                          |    6 
 modules/mainPart/src/main/resources/mapper/itemCirculatOrder/ItemCirculatOrderTechnicalDao.xml                      |   13 
 modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/dao/ItemCirculatOrderTechnicalDao.java         |    2 
 web/package-lock.json                                                                                               |   80 ++
 32 files changed, 1,072 insertions(+), 508 deletions(-)

diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/controller/ItemCirculatOrderController.java b/modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/controller/ItemCirculatOrderController.java
index 2a1cebe..1866021 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/controller/ItemCirculatOrderController.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/controller/ItemCirculatOrderController.java
@@ -14,7 +14,9 @@
 import com.zt.common.validator.group.UpdateGroup;
 import com.zt.life.modules.itemCirculatOrder.dto.ItemCirculatOrderDto;
 import com.zt.life.modules.itemCirculatOrder.model.ItemCirculatOrder;
+import com.zt.life.modules.itemCirculatOrder.model.ItemCirculatOrderTechnical;
 import com.zt.life.modules.itemCirculatOrder.service.ItemCirculatOrderService;
+import com.zt.life.modules.itemCirculatOrder.service.ItemCirculatOrderTechnicalService;
 import com.zt.life.modules.project.dto.SoftwareTestOrderDto;
 import com.zt.life.sys.dto.OssDto;
 import com.zt.life.sys.service.SysOssConfigService;
@@ -52,6 +54,9 @@
     @Autowired
     private SysOssConfigService sysOssConfigService;
 
+    @Autowired
+    private ItemCirculatOrderTechnicalService technicalService;
+
     @GetMapping("page")
     @ApiOperation("鍒嗛〉")
     @ApiImplicitParams({
@@ -59,7 +64,10 @@
         @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 = "code^LK")    })
+        @ApiImplicitParam(name = "code", value = "鐗╁搧娴佽浆鍗曠紪鍙�", dataType = Constant.QT.STRING, format = "code^LK"),
+        @ApiImplicitParam(name = "softwareName", value = "鐗╁搧鍚嶇О", dataType = Constant.QT.STRING, format = "software_name^EQ"),
+        @ApiImplicitParam(name = "softwareIdentity", value = "鐗╁搧缂栧彿", dataType = Constant.QT.STRING, format = "software_identity^EQ")
+    })
     public PageResult<ItemCirculatOrder> page(@ApiIgnore @QueryParam QueryFilter queryFilter){
 
         return PageResult.ok(itemCirculatOrderService.page(queryFilter));
@@ -70,9 +78,12 @@
     public Result<ItemCirculatOrderDto> getDto(Long projectId, Long circulatOrderid) {
         ItemCirculatOrderDto data = itemCirculatOrderService.getDto(projectId, circulatOrderid);
         if (circulatOrderid!=null) {
-            OssDto ossDto = sysOssConfigService.getOssByBusiType(circulatOrderid, "circulat_order");
-            if (ossDto != null) {
-                data.setFiles(ossDto);
+            for (ItemCirculatOrderTechnical technical : technicalService.getList(circulatOrderid)) {
+                Long technicalId = technical.getId();
+                OssDto ossDto = sysOssConfigService.getOssByBusiType(technicalId, "circulat_order");
+                if (ossDto != null) {
+                    technical.setFiles(ossDto);
+                }
             }
         }
         return Result.ok(data);
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/dao/ItemCirculatOrderDao.java b/modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/dao/ItemCirculatOrderDao.java
index ded9dfb..51d96dd 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/dao/ItemCirculatOrderDao.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/dao/ItemCirculatOrderDao.java
@@ -22,5 +22,5 @@
 
     List<ItemCirculatOrder> getList(Map<String, Object> params);
 
-    List<DictIstance> itemList(Long projectId);
+
 }
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/dao/ItemCirculatOrderTechnicalDao.java b/modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/dao/ItemCirculatOrderTechnicalDao.java
index b5d4b51..fce5a18 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/dao/ItemCirculatOrderTechnicalDao.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/dao/ItemCirculatOrderTechnicalDao.java
@@ -1,6 +1,7 @@
 package com.zt.life.modules.itemCirculatOrder.dao;
 
 import com.zt.common.dao.BaseDao;
+import com.zt.core.sys.dto.DictIstance;
 import com.zt.life.modules.itemCirculatOrder.model.ItemCirculatOrderTechnical;
 import org.apache.ibatis.annotations.Mapper;
 
@@ -19,5 +20,6 @@
 public interface ItemCirculatOrderTechnicalDao extends BaseDao<ItemCirculatOrderTechnical> {
 
     List<ItemCirculatOrderTechnical> getList(Map<String, Object> params);
+    List<DictIstance> itemList(Long projectId);
 
 }
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/dto/ItemCirculatOrderDto.java b/modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/dto/ItemCirculatOrderDto.java
index ebc9840..7a25f53 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/dto/ItemCirculatOrderDto.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/dto/ItemCirculatOrderDto.java
@@ -23,8 +23,7 @@
     private ItemCirculatOrder circulatOrder;
     @ApiModelProperty(value = "娴嬭瘯鏈烘瀯淇℃伅")
     private TestAgencyInfo TestAgencyInfo;
-    @ApiModelProperty(value = "闄勪欢")
-    private OssDto files;
+
 
     @ApiModelProperty(value = "鎶�鏈祫鏂�")
     private List<ItemCirculatOrderTechnical> technicalList = new ArrayList<>();
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/model/ItemCirculatOrder.java b/modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/model/ItemCirculatOrder.java
index 462b976..e16ba9d 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/model/ItemCirculatOrder.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/model/ItemCirculatOrder.java
@@ -1,5 +1,6 @@
 package com.zt.life.modules.itemCirculatOrder.model;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.zt.common.entity.BusiEntity;
@@ -51,6 +52,7 @@
 	@JsonFormat(pattern = "yyyy-MM-dd")
 	private Date detectDate;
 
+
 	@ApiModelProperty(value = "鏍″噯妫�娴嬫儏鍐佃鏄�")
 	private String detectSituation;
 
@@ -80,4 +82,13 @@
 	@ApiModelProperty(value = "骞翠唤")
 	private String year;
 
+	@TableField(exist = false)
+	@ApiModelProperty(value = "鐗╁搧鍚嶇О")
+	private String softwareName;
+
+	@TableField(exist = false)
+	@ApiModelProperty(value = "鐗╁搧缂栧彿")
+	private String softwareIdentity;
+
+
 }
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/model/ItemCirculatOrderTechnical.java b/modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/model/ItemCirculatOrderTechnical.java
index ed8d8e9..c71d036 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/model/ItemCirculatOrderTechnical.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/model/ItemCirculatOrderTechnical.java
@@ -1,7 +1,9 @@
 package com.zt.life.modules.itemCirculatOrder.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.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -28,7 +30,7 @@
 	private Integer no;
 
 	@ApiModelProperty(value = "鎶�鏈祫鏂欏悕绉�")
-	private String infoName;
+	private String name;
 
 	@ApiModelProperty(value = "鏍囪瘑")
 	private String identify;
@@ -48,7 +50,8 @@
 	@ApiModelProperty(value = "澶囨敞")
 	private String remark;
 
-	@ApiModelProperty(value = "鏂囦欢")
-	private String file;
+	@TableField(exist = false)
+	@ApiModelProperty(value = "闄勪欢")
+	private OssDto files;
 
 }
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/service/ItemCirculatOrderService.java b/modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/service/ItemCirculatOrderService.java
index 54ded60..b527118 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/service/ItemCirculatOrderService.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/service/ItemCirculatOrderService.java
@@ -6,6 +6,7 @@
 import com.zt.core.sys.dto.DictLeafDto;
 import com.zt.life.export.dto.WordFile;
 import com.zt.life.modules.itemCirculatOrder.dao.ItemCirculatOrderDao;
+import com.zt.life.modules.itemCirculatOrder.dao.ItemCirculatOrderTechnicalDao;
 import com.zt.life.modules.itemCirculatOrder.dto.ItemCirculatOrderDto;
 import com.zt.life.modules.itemCirculatOrder.model.ItemCirculatOrder;
 import com.zt.life.modules.itemCirculatOrder.model.ItemCirculatOrderTechnical;
@@ -14,6 +15,7 @@
 import com.zt.life.modules.project.service.ProjectService;
 import com.zt.life.modules.project.service.SoftwareTestOrderService;
 import com.zt.life.modules.sysBaseInfo.service.TestAgencyInfoService;
+import com.zt.life.sys.dto.OssDto;
 import com.zt.life.sys.service.SysOssConfigService;
 import com.zt.modules.coderule.service.SysCodeRuleService;
 import com.zt.modules.oss.service.SysOssService;
@@ -101,6 +103,7 @@
                 circulatOrderTechnical.setCirculatOrderId(circulatOrderid);
                 technicalService.insert(circulatOrderTechnical);
             }
+            sysOssConfigService.updateOss(circulatOrderTechnical.getId(), circulatOrderTechnical.getFiles());// 淇濆瓨闄勪欢
         }
 
         if (itemCirculatOrderDto.getTestAgencyInfo().getId() == 10000) {
@@ -109,7 +112,6 @@
         } else {
             testAgencyInfoService.update(itemCirculatOrderDto.getTestAgencyInfo());
         }
-        sysOssConfigService.updateOss(itemCirculatOrderDto.getId(), itemCirculatOrderDto.getFiles());// 淇濆瓨闄勪欢
         return true;
     }
 
@@ -130,10 +132,9 @@
         } else {
             ItemCirculatOrder itemCirculatOrder =new ItemCirculatOrder();
             data.setCirculatOrder(itemCirculatOrder);
-            List<?> resultList = baseDao.itemList(projectId);
+            List<?> resultList = technicalService.itemList(projectId);
             List<?> technicalList = resultList;
             data.setTechnicalList((List<ItemCirculatOrderTechnical>) technicalList);
-
         }
 
         if (projectId != null) {
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/service/ItemCirculatOrderTechnicalService.java b/modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/service/ItemCirculatOrderTechnicalService.java
index 99914bb..a96f816 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/service/ItemCirculatOrderTechnicalService.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/service/ItemCirculatOrderTechnicalService.java
@@ -1,6 +1,7 @@
 package com.zt.life.modules.itemCirculatOrder.service;
 
 import com.zt.common.service.BaseService;
+import com.zt.core.sys.dto.DictIstance;
 import com.zt.life.modules.itemCirculatOrder.dao.ItemCirculatOrderTechnicalDao;
 import com.zt.life.modules.itemCirculatOrder.model.ItemCirculatOrderTechnical;
 import com.zt.life.modules.project.model.SoftwareTestOrderMeasured;
@@ -45,5 +46,8 @@
         params.put("circulatOrderid",circulatOrderid);
         return baseDao.getList(params);
     }
+    public List<DictIstance> itemList(Long projectId) {
+        return baseDao.itemList(projectId);
+    }
 
 }
diff --git a/modules/mainPart/src/main/resources/mapper/itemCirculatOrder/ItemCirculatOrderDao.xml b/modules/mainPart/src/main/resources/mapper/itemCirculatOrder/ItemCirculatOrderDao.xml
index 0944e7b..f9e3d1c 100644
--- a/modules/mainPart/src/main/resources/mapper/itemCirculatOrder/ItemCirculatOrderDao.xml
+++ b/modules/mainPart/src/main/resources/mapper/itemCirculatOrder/ItemCirculatOrderDao.xml
@@ -17,16 +17,6 @@
             ORDER BY ${orderBySql}
         </if>
     </select>
-    <select id="itemList" resultType="com.zt.core.sys.dto.DictIstance">
-        SELECT m.*
-        FROM software_test_order_measured m
-        JOIN software_test_order s ON s.id = m.order_id
-        <where>
-            s.is_delete = 0 and m.is_delete = 0
-            <if test="projectId!=null">
-                and s.project_id = ${projectId}
-            </if>
-        </where>
-    </select>
+
 
 </mapper>
diff --git a/modules/mainPart/src/main/resources/mapper/itemCirculatOrder/ItemCirculatOrderTechnicalDao.xml b/modules/mainPart/src/main/resources/mapper/itemCirculatOrder/ItemCirculatOrderTechnicalDao.xml
index a97e622..cd3052e 100644
--- a/modules/mainPart/src/main/resources/mapper/itemCirculatOrder/ItemCirculatOrderTechnicalDao.xml
+++ b/modules/mainPart/src/main/resources/mapper/itemCirculatOrder/ItemCirculatOrderTechnicalDao.xml
@@ -16,5 +16,16 @@
             ORDER BY ${orderBySql}
         </if>
     </select>
-
+    <select id="itemList" resultType="com.zt.core.sys.dto.DictIstance">
+        SELECT m.*, p.secret_class
+        FROM software_test_order_measured m
+        JOIN software_test_order s ON s.id = m.order_id
+        JOIN project p ON p.id = ${projectId}
+        <where>
+            s.is_delete = 0 and m.is_delete = 0
+            <if test="projectId!=null">
+                and s.project_id = ${projectId}
+            </if>
+        </where>
+    </select>
 </mapper>
diff --git a/web/package-lock.json b/web/package-lock.json
index 483c60c..e06527d 100644
--- a/web/package-lock.json
+++ b/web/package-lock.json
@@ -7504,8 +7504,7 @@
     "duplexer": {
       "version": "0.1.2",
       "resolved": "https://registry.npmmirror.com/duplexer/-/duplexer-0.1.2.tgz",
-      "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==",
-      "dev": true
+      "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg=="
     },
     "duplexer2": {
       "version": "0.0.2",
@@ -8452,6 +8451,27 @@
       "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==",
       "dev": true
     },
+    "event-stream": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmmirror.com/event-stream/-/event-stream-4.0.1.tgz",
+      "integrity": "sha512-qACXdu/9VHPBzcyhdOWR5/IahhGMf0roTeZJfzz077GwylcDd90yOHLouhmv7GJ5XzPi6ekaQWd8AvPP2nOvpA==",
+      "requires": {
+        "duplexer": "^0.1.1",
+        "from": "^0.1.7",
+        "map-stream": "0.0.7",
+        "pause-stream": "^0.0.11",
+        "split": "^1.0.1",
+        "stream-combiner": "^0.2.2",
+        "through": "^2.3.8"
+      },
+      "dependencies": {
+        "map-stream": {
+          "version": "0.0.7",
+          "resolved": "https://registry.npmmirror.com/map-stream/-/map-stream-0.0.7.tgz",
+          "integrity": "sha512-C0X0KQmGm3N2ftbTGBhSyuydQ+vV1LC3f3zPvT3RXHXNZrvfPZcoXp/N5DOa8vedX/rTMm2CjTtivFg2STJMRQ=="
+        }
+      }
+    },
     "eventemitter3": {
       "version": "2.0.3",
       "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-2.0.3.tgz",
@@ -9295,6 +9315,11 @@
       "resolved": "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz",
       "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
       "dev": true
+    },
+    "from": {
+      "version": "0.1.7",
+      "resolved": "https://registry.npmmirror.com/from/-/from-0.1.7.tgz",
+      "integrity": "sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g=="
     },
     "from2": {
       "version": "2.3.0",
@@ -12860,6 +12885,11 @@
         "lodash._objecttypes": "~2.4.1"
       }
     },
+    "lodash.assign": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmmirror.com/lodash.assign/-/lodash.assign-4.2.0.tgz",
+      "integrity": "sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw=="
+    },
     "lodash.clonedeep": {
       "version": "4.5.0",
       "resolved": "https://registry.npmmirror.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
@@ -13533,6 +13563,11 @@
         "matches-selector": "^1.2.0",
         "min-dash": "^3.8.1"
       }
+    },
+    "mingo": {
+      "version": "6.4.9",
+      "resolved": "https://registry.npmmirror.com/mingo/-/mingo-6.4.9.tgz",
+      "integrity": "sha512-jsOiIEJ19UtTaWjNFN4CnuKWqELm2sINZcHqI/nmjezMvXthBIQOftJrlT85NuIDoSFc0vrbjD+GnrzEgYnPbA=="
     },
     "mini-css-extract-plugin": {
       "version": "0.8.2",
@@ -14878,6 +14913,14 @@
       "integrity": "sha512-ad/3bsalbbWhmBo0D6FZ4RNMwsLsPpL6gnvhuSaU5Vm7b06Kr5ubSltQQ0T7YKsiJQO+g22zJ4dJKNTXIyOXtA==",
       "dev": true,
       "optional": true
+    },
+    "pause-stream": {
+      "version": "0.0.11",
+      "resolved": "https://registry.npmmirror.com/pause-stream/-/pause-stream-0.0.11.tgz",
+      "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==",
+      "requires": {
+        "through": "~2.3"
+      }
     },
     "pbkdf2": {
       "version": "3.1.2",
@@ -17340,6 +17383,17 @@
         }
       }
     },
+    "save": {
+      "version": "2.9.0",
+      "resolved": "https://registry.npmmirror.com/save/-/save-2.9.0.tgz",
+      "integrity": "sha512-eg8+g8CjvehE/2C6EbLdtK1pINVD27pcJLj4M9PjWWhoeha/y5bWf4dp/0RF+OzbKTcG1bae9qi3PAqiR8CJTg==",
+      "requires": {
+        "async": "^3.2.2",
+        "event-stream": "^4.0.1",
+        "lodash.assign": "^4.2.0",
+        "mingo": "^6.1.0"
+      }
+    },
     "sax": {
       "version": "1.3.0",
       "resolved": "https://registry.npmmirror.com/sax/-/sax-1.3.0.tgz",
@@ -17967,6 +18021,11 @@
       "resolved": "https://registry.npmmirror.com/source-map-url/-/source-map-url-0.4.1.tgz",
       "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw=="
     },
+    "spark-md5": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmmirror.com/spark-md5/-/spark-md5-3.0.2.tgz",
+      "integrity": "sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw=="
+    },
     "sparkles": {
       "version": "1.0.1",
       "resolved": "https://registry.npmmirror.com/sparkles/-/sparkles-1.0.1.tgz",
@@ -18085,6 +18144,14 @@
             "safe-buffer": "~5.2.0"
           }
         }
+      }
+    },
+    "split": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/split/-/split-1.0.1.tgz",
+      "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
+      "requires": {
+        "through": "2"
       }
     },
     "split-string": {
@@ -18254,6 +18321,15 @@
         }
       }
     },
+    "stream-combiner": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npmmirror.com/stream-combiner/-/stream-combiner-0.2.2.tgz",
+      "integrity": "sha512-6yHMqgLYDzQDcAkL+tjJDC5nSNuNIx0vZtRZeiPh7Saef7VHX9H5Ijn9l2VIol2zaNYlYEX6KyuT/237A58qEQ==",
+      "requires": {
+        "duplexer": "~0.1.1",
+        "through": "~2.3.4"
+      }
+    },
     "stream-consume": {
       "version": "0.1.1",
       "resolved": "https://registry.npmmirror.com/stream-consume/-/stream-consume-0.1.1.tgz",
diff --git a/web/package.json b/web/package.json
index f9c65f0..7af0b41 100644
--- a/web/package.json
+++ b/web/package.json
@@ -49,7 +49,9 @@
     "qs": "^6.7.0",
     "quill": "^1.3.6",
     "sass-loader": "^7.1.0",
+    "save": "^2.9.0",
     "screenfull": "^4.2.1",
+    "spark-md5": "^3.0.2",
     "v-distpicker": "^1.2.6",
     "v-gantt-chart": "^1.5.1",
     "vue": "^2.7.14",
diff --git a/web/packages/components/zt-uploader/src/zt-uploader.vue b/web/packages/components/zt-uploader/src/zt-uploader.vue
index 5fcb43b..a8f22b3 100644
--- a/web/packages/components/zt-uploader/src/zt-uploader.vue
+++ b/web/packages/components/zt-uploader/src/zt-uploader.vue
@@ -4,39 +4,65 @@
     <el-upload
       ref="upload"
       class="upload-input"
-      :class="{hide: uploadDisabled || !isShowUpload}"
-      :accept="accept"
       :action="uploadAction"
-      :before-upload="handleBeforeUpload"
       :data="data"
-      :disabled="uploading"
       :drag="false"
       :limit="limit"
       list-type="text"
       :multiple="multiple"
-      :name="name"
-      :on-change="handleChange"
-      :on-error="handleUploadError"
+      :auto-upload="true"
+      :before-upload="handleBeforeUpload"
+      :http-request="checkedFile"
+      :before-remove="removeFile"
       :on-exceed="handleExceed"
-      :on-success="handleUploadSuccess"
-      :on-progress="onUploadProgress"
       :show-file-list="false"
       :file-list="fileList"
       v-if="!image && !crop"
-
     >
-      <el-button class="upload-btn" size="mini" type="primary" icon="el-icon-upload"
-                 v-show="!uploadDisabled && isShowUpload">{{ buttonText }}
+      <!--      <el-upload-->
+      <!--        ref="upload"-->
+      <!--        class="upload-input"-->
+      <!--        :class="{hide: uploadDisabled || !isShowUpload}"-->
+      <!--        :accept="accept"-->
+      <!--        :action="uploadAction"-->
+      <!--        :before-upload="handleBeforeUpload"-->
+      <!--        :data="data"-->
+      <!--        :disabled="uploading"-->
+      <!--        :drag="false"-->
+      <!--        :limit="limit"-->
+      <!--        list-type="text"-->
+      <!--        :multiple="multiple"-->
+      <!--        :name="name"-->
+      <!--        :on-change="handleChange"-->
+      <!--        :on-error="handleUploadError"-->
+      <!--        :on-exceed="handleExceed"-->
+      <!--        :on-success="handleUploadSuccess"-->
+      <!--        :on-progress="onUploadProgress"-->
+      <!--        :show-file-list="false"-->
+      <!--        :file-list="fileList"-->
+      <!--        v-if="!image && !crop"-->
+      <!--        :auto-upload="true"-->
+      <!--        :http-request="checkedFile"-->
+      <!--        :before-remove="removeFile"-->
+      <!--      >-->
+      <div style="display:inline-block;width:600px;text-align: center" v-if="onlyUploadFile" class="el-upload__tip">
+        {{computerFileName}}
+      </div>
+      <el-button slot="trigger" v-if="onlyUploadFile" size="small" type="primary">閫夊彇鏂囦欢</el-button>
+      <el-button type="primary" v-if="onlyUploadFile" size="small" style="margin-left:20px" @click="myCheckedFile">鎻� 浜�
       </el-button>
+      <el-button class="upload-btn" size="mini" type="primary" icon="el-icon-upload"
+                 v-show="!uploadDisabled && isShowUpload && !onlyUploadFile">{{ buttonText }}
+      </el-button>
+
       <div slot="tip" class="el-upload__tip" v-show="!uploadDisabled && isShowUpload && tip">{{ tip }}</div>
     </el-upload>
-
+    <br/>
     <div v-show="progressFlag">
-    <el-progress :text-inside="true" :stroke-width="30" :percentage="progressPercent" :format="format"></el-progress>
+      <el-progress :text-inside="true" :stroke-width="30" :percentage="progressPercent" :format="format"></el-progress>
+    </div>
 
-</div>
-
-    <ul class="el-upload-list el-upload-list--text" v-if="!image && !crop && showFileList">
+    <ul class="el-upload-list el-upload-list--text" v-if="!image && !crop && !onlyUploadFile">
       <li tabindex="0" class="el-upload-list__item is-success" v-for="(file, index) in uploadList" :key="file.id">
         <a class="el-upload-list__item-name" :href="file.url" target="_blank"><i
           class="el-icon-document"></i>{{ file.name }}</a>
@@ -71,6 +97,7 @@
           :limit="limit"
           :list-type="drag ? 'picture' : 'picture-card'"
           :multiple="multiple"
+          :name="name"
           :on-change="handleChange"
           :on-error="handleUploadError"
           :on-exceed="handleExceed"
@@ -161,386 +188,816 @@
 </template>
 
 <script>
-import Cookies from 'js-cookie'
-import Cropper from 'vue-image-crop-upload'
-import EleGallery from '../../vue-ele-gallery'
+  import Cookies from 'js-cookie'
+  import Cropper from 'vue-image-crop-upload'
+  import EleGallery from '../../vue-ele-gallery'
+  import SparkMD5 from "spark-md5";
+  import axios from "axios";
+  import {getUUID} from "../../../utils";
 
-export default {
-  name: 'ZtUploader',
-  props: {
-    // 鍊�
-    value: {
-      type: [Object, Array],
-      default() {
-        return this.multiple ? [] : null
-      }
-    },
-    action: {
-      type: String,
-      default: '/sys/oss/upload'
-    },
-    // 鏄惁涓哄浘鐗�
-    image: {
-      type: Boolean,
-      default: false
-    },
-    // 鏄惁鍓
-    crop: {
-      type: Boolean,
-      default: false
-    },
-    // 瑁佸壀楂樺害
-    cropHeight: {
-      type: Number
-    },
-    // 瑁佸壀瀹藉害
-    cropWidth: {
-      type: Number
-    },
-    // 鏄惁鍚敤鎷栨嫿涓婁紶
-    drag: {
-      type: Boolean,
-      default: false
-    },
-    // 鏄惁鏀寔澶氶�夋枃浠�
-    multiple: {
-      type: Boolean,
-      default: false
-    },
-    // 鍥剧墖鏄剧ず澶у皬
-    size: {
-      type: Number,
-      default: 100
-    },
-    // 澶у皬闄愬埗(MB)
-    fileSize: {
-      type: Number
-    },
-    // 鏂囦欢绫诲瀷, 渚嬪['png', 'jpg', 'jpeg']
-    fileType: {
-      type: Array,
-      default: () => []
-    },
-    // 缂╃暐鍥惧悗缂�, 渚嬪涓冪墰浜戠缉鐣ュ浘鏍峰紡 (?imageView2/1/w/20/h/20)
-    thumbSuffix: {
-      type: String,
-      default: ''
-    },
-    // 鏄惁鏄剧ず鎻愮ず
-    isShowTip: {
-      type: Boolean,
-      default: true
-    },
-    // 寮圭獥鏍囬
-    title: String,
-    // 鍥剧墖鎳掑姞杞�
-    lazy: {
-      type: Boolean,
-      default: false
-    },
-    // 鏂囦欢涓暟鏄剧ず
-    limit: {
-      type: Number,
-      default: 10
-    },
-    // 涓婁紶鏃堕檮甯︾殑棰濆鍙傛暟
-    data: Object,
-    // 涓婁紶鐨勬枃浠跺瓧娈靛悕
-    name: {
-      type: String,
-      default: 'file'
-    },
-    // 鎺ュ彈涓婁紶鐨勬枃浠剁被鍨嬶紙thumbnail-mode 妯″紡涓嬫鍙傛暟鏃犳晥锛�
-    accept: String,
-    buttonText: {
-      type: String,
-      default: '涓婁紶'
-    },
-    tip: String,
-    showFileList: {
-      type: Boolean,
-      default: true
-    },
-    disabled: {
-      type: Boolean,
-      default: false
-    }
-  },
-  components: {
-    Cropper,
-    EleGallery
-  },
-  inject: {
-    elForm: {
-      default: ''
-    }
-  },
-  data() {
-    return {
-      progressPercent: 0,
-      uploadAction: `${window.SITE_CONFIG['apiURL']}${this.action}?token=${Cookies.get('token')}`,
-      cropData: {},
-      isShowCrop: false,
-      uploading: false,
-      fileList: this.getUploadList(this.value),
-      uploadList: this.getUploadList(this.value),
-      progressFlag:false
-    }
-  },
-  computed: {
-    // 鏄惁鏄剧ず鎻愮ず
-    showTip() {
-      return this.isShowTip && (this.fileType.length || this.fileSize)
-    },
-    galleryValues() {
-      let urls = []
-      if (this.value) {
-        if (this.multiple) {
-          this.value.forEach(v => urls.push({
-            src: v.url,
-            title: v.name
-          }))
-        } else {
-          urls.push({
-            src: this.value.url,
-            title: this.value.name
-          })
+  export default {
+    name: 'ZtUploader',
+    props: {
+      // 鍊�
+      value: {
+        type: [Object, Array],
+        default() {
+          return this.multiple ? [] : null
         }
+      },
+      dataForm: Object,
+      action: {
+        type: String,
+        default: '/sys/oss/uploadNew'
+      },
+      // 鏄惁涓哄浘鐗�
+      showFileList: {
+        type: Boolean,
+        default: true
+      },
+      onlyUploadFile: {
+        type: Boolean,
+        default: false
+      },
+      // 鏄惁涓哄浘鐗�
+      image: {
+        type: Boolean,
+        default: false
+      },
+      // 鏄惁鍓
+      crop: {
+        type: Boolean,
+        default: false
+      },
+      // 瑁佸壀楂樺害
+      cropHeight: {
+        type: Number
+      },
+      // 瑁佸壀瀹藉害
+      cropWidth: {
+        type: Number
+      },
+      // 鏄惁鍚敤鎷栨嫿涓婁紶
+      drag: {
+        type: Boolean,
+        default: false
+      },
+      // 鏄惁鏀寔澶氶�夋枃浠�
+      multiple: {
+        type: Boolean,
+        default: false
+      },
+      // 鍥剧墖鏄剧ず澶у皬
+      size: {
+        type: Number,
+        default: 100
+      },
+      // 澶у皬闄愬埗(MB)
+      fileSize: {
+        type: Number
+      },
+      // 鏂囦欢绫诲瀷, 渚嬪['png', 'jpg', 'jpeg']
+      fileType: {
+        type: Array,
+        default: () => []
+      },
+      // 缂╃暐鍥惧悗缂�, 渚嬪涓冪墰浜戠缉鐣ュ浘鏍峰紡 (?imageView2/1/w/20/h/20)
+      thumbSuffix: {
+        type: String,
+        default: ''
+      },
+      // 鏄惁鏄剧ず鎻愮ず
+      isShowTip: {
+        type: Boolean,
+        default: true
+      },
+      // 寮圭獥鏍囬
+      title: String,
+      // 鍥剧墖鎳掑姞杞�
+      lazy: {
+        type: Boolean,
+        default: false
+      },
+      // 鏂囦欢涓暟鏄剧ず
+      limit: {
+        type: Number,
+        default: 10
+      },
+      // 涓婁紶鏃堕檮甯︾殑棰濆鍙傛暟
+      data: Object,
+      // 涓婁紶鐨勬枃浠跺瓧娈靛悕
+      name: {
+        type: String,
+        default: 'file'
+      },
+      // 鎺ュ彈涓婁紶鐨勬枃浠剁被鍨嬶紙thumbnail-mode 妯″紡涓嬫鍙傛暟鏃犳晥锛�
+      accept: String,
+      buttonText: {
+        type: String,
+        default: '涓婁紶'
+      },
+      tip: String,
+      disabled: {
+        type: Boolean,
+        default: false
       }
-      return urls
     },
-    isShowUpload() { // 鏄惁鏄剧ず涓婁紶鎸夐挳
-      if (this.multiple) {
-        return this.uploadList.length < this.limit
+    components: {
+      Cropper,
+      EleGallery
+    },
+    inject: {
+      elForm: {
+        default: ''
+      }
+    },
+    data() {
+      return {
+        isUpload: false,
+        maxSize: 50 * 1024 * 1024 * 1024, // 涓婁紶鏈�澶ф枃浠堕檺鍒�  鏈�灏忓崟浣嶆槸b
+        multiUploadSize: 10 * 1024 * 1024, // 澶т簬杩欎釜澶у皬鐨勬枃浠朵娇鐢ㄥ垎鍧椾笂浼�(鍚庣鍙互鏀寔鏂偣缁紶)  100mb
+        eachSize: 10 * 1024 * 1024, // 姣忓潡鏂囦欢澶у皬   100mb
+        requestCancelQueue: [], // 璇锋眰鏂规硶闃熷垪锛堣皟鐢ㄥ彇娑堜笂浼�
+        // 姣忎笂浼犱竴鍧楃殑杩涘害
+        eachProgress: 0,
+        // 鎬诲叡鏈夊灏戝潡銆傛柇鐐圭画浼犱娇鐢�
+        chunksKeep: 0,
+        // 鍒囧壊鍚庣殑鏂囦欢鏁扮粍
+        fileChunksKeep: [],
+        // 杩欎釜鏂囦欢锛屾柇鐐圭画浼�
+        fileKeep: null,
+        // 鏂偣缁紶锛屾枃浠秏d5
+        fileMd5Keep: "",
+        progressPercent: 0,
+        uploadAction: `${window.SITE_CONFIG['apiURL']}/sys/oss/upload_chunk?token=${Cookies.get('token')}`,
+        uploadCheckAction: `${window.SITE_CONFIG['apiURL']}/sys/oss/upload_success?token=${Cookies.get('token')}`,
+        uploadProcessAction: `${window.SITE_CONFIG['apiURL']}${this.action}?token=${Cookies.get('token')}`,
+        cropData: {},
+        isShowCrop: false,
+        uploading: false,
+        fileList: this.getUploadList(this.value),
+        uploadList: this.getUploadList(this.value),
+        progressFlag: false
+      }
+    },
+    created() {
+      if (this.onlyUploadFile) {
+        this.fileList = [{id: '1', name: '', url: ''}]
       } else {
-        return this.uploadList.length === 0
+        this.fileList = []
       }
     },
-    uploadDisabled() {
-      return this.disabled || (this.elForm || {}).disabled
-    },
-    successFiles() {
-      return this.uploadList.filter((file) => file.status === 'success')
-    },
-    isShowGrllery() {
-      return this.galleryValues.length > 0
-    }
-  },
-  watch: {
-    value(val, oldval) {
-      if (this.uploadList !== val) {
-        this.uploadList = this.getUploadList(val)
-        this.fileList = this.getUploadList(val)
-        console.log(this.fileList,'this.fileList this.fileList')
-        this.$emit('getUploaderImg',this.fileList)
-      }
-    },
-    isShowCrop(value) {
-      if (value === false) {
-        this.cropData = {}
-      }
-    }
-  },
-  methods: {
-    format(percentage) {
-      return percentage === 100 ? '鍚庡彴姝e湪澶勭悊' : `${percentage}%`;
-    },
-    // 鑾峰彇宸蹭笂浼犵殑鏂囦欢鍒楄〃
-    getUploadList(val) {
-      if (val) {
-        // console.log(val, 'getUploadList val')
-        if (!this.multiple) { // 鍗曢��
-          return [val]
-        } else {
-          // console.log([...val], 'getUploadList [...val]')
-          return [...val]
+    computed: {
+      // 鏄惁鏄剧ず鎻愮ず
+      showTip() {
+        return this.isShowTip && (this.fileType.length || this.fileSize)
+      },
+      computerFileName(computerFileName) {
+        let fileName = 'aaaa'
+        if (this.fileList.length > 0) {
+          fileName = this.fileList[0].name
         }
-      } else {
-        return []
-      }
-    },
-    onUploadProgress(event, file, fileList) {
-      this.progressFlag = true
-      let per = Number(
-        ((event.loaded / event.total) * 100).toFixed(2)
-      )
-      this.progressPercent = per > 100 ? 100 : per
-    },
-    handleSetFileSet(fileName, fileType, fileSize) {
-      const uid = this.cropData.uid || new Date().getTime()
-      this.cropData = {
-        name: fileName,
-        percentage: 0,
-        size: fileSize,
-        type: fileType,
-        status: 'ready',
-        uid: uid
-      }
-    },
-    handleCropSuccess(b64Data) {
-      this.cropData.url = b64Data
-    },
-    handleCropUploadError(status) {
-      this.$message.error('涓婁紶澶辫触, 璇烽噸璇�')
-      this.$emit('error', status)
-    },
-    handleCropUploadSuccess(response) {
-      this.cropData.status = 'success'
-      this.cropData.percentage = 100
-      this.cropData.response = response
-      const file = Object.assign({}, this.cropData)
-      this.handleUploadSuccess(response, file)
-    },
-    // 涓婁紶鍓嶆牎妫�鏍煎紡鍜屽ぇ灏�
-    handleBeforeUpload(file) {
-      let isAccept = true
-      if (this.fileType.length) { // 鏂囦欢绫诲瀷锛堝悗缂�锛変竴鑷�
-        let fileExtension = ''
-        if (file.name.lastIndexOf('.') > -1) {
-          fileExtension = file.name.slice(file.name.lastIndexOf('.') + 1)
-        }
-        isAccept = this.fileType.some((type) => {
-          if (file.type.indexOf(type) > -1) return true
-          if (fileExtension && fileExtension.indexOf(type) > -1) return true
-          return false
-        })
-      }
-      if (!isAccept) {
-        this.$message.error(`鏂囦欢鏍煎紡涓嶆纭�, 璇蜂笂浼�${this.fileType.join('/')}鏍煎紡鏂囦欢!`)
-        return false
-      }
-      if (this.fileSize) {
-        const isLt = file.size / 1024 / 1024 < this.fileSize
-        if (!isLt) {
-          this.$message.error(`涓婁紶澶у皬涓嶈兘瓒呰繃 ${this.fileSize} MB!`)
-          return false
-        }
-      }
-      this.uploading = true
-      return true
-    },
-    handleChange() {
-      this.uploading = false
-      /*const config = {
-        onUploadProgress: (progressEvent) => {
-          this.progressPercent = Number(
-            ((progressEvent.loaded / progressEvent.total) * 90).toFixed(2)
-          )
-        }
-      }
-      //this.progressFlag = true;
-      let form = new FormData();
-      form.append("file", params.file);
-      this.$http.post( this.uploadAction,form,config ).then((res) => {
-        this.progressPercent = 100;
-      })*/
-    },
-    // 鏂囦欢涓暟瓒呭嚭
-    handleExceed() {
-      this.$message.error(`鏈�澶氫笂浼�${this.limit}涓猔)
-    },
-    // 涓婁紶澶辫触
-    handleUploadError(err) {
-      this.uploading = false
-      this.$message.error('涓婁紶澶辫触, 璇烽噸璇�')
-      this.$emit('error', err)
-    },
-    // 涓婁紶鎴愬姛鍥炶皟
-    handleUploadSuccess(response, file) {
-      console.log(response, file,'response, file')
-      if (response.code === 0) {
-        this.progressPercent = 100
-        this.uploading = false
-        // this.$message.success('涓婁紶鎴愬姛')
-        if (this.multiple) {
-          this.uploadList.push(response.data)
-          this.$emit('input', this.uploadList)
-        } else {
-          this.$emit('input', response.data)
-        }
-        this.progressFlag = false
-        this.progressPercent = 0
-      }
-    },
-    async handleRemove(index) {
-      let file = this.uploadList[index]
-      if (file.status === 1) { // 璇佷功鏂囦欢锛岀洿鎺ヤ粠鍒楄〃鍒犻櫎锛屼笉淇濆瓨鏁版嵁搴�
-        this.handRemoveAndSetValue(index)
-      } else {
-        if (await this.$tip.confirm(this.$t('prompt.info', {'handle': this.$t('delete')}))) {
-          let res = await this.$http.delete('/sys/oss', {'data': [file.id]})
-          if (res.success) {
-            await this.$tip.success()
-            this.handRemoveAndSetValue(index)
+        return fileName
+      },
+      galleryValues() {
+        let urls = []
+        if (this.value) {
+          if (this.multiple) {
+            this.value.forEach(v => urls.push({
+              src: v.url,
+              title: v.name
+            }))
+          } else {
+            urls.push({
+              src: this.value.url,
+              title: this.value.name
+            })
           }
         }
+        return urls
+      },
+      isShowUpload() { // 鏄惁鏄剧ず涓婁紶鎸夐挳
+        if (this.multiple) {
+          return this.uploadList.length < this.limit
+        } else {
+          return this.uploadList.length === 0 || this.onlyUploadFile
+        }
+      },
+      uploadDisabled() {
+        return this.disabled || (this.elForm || {}).disabled
+      },
+      successFiles() {
+        return this.uploadList.filter((file) => file.status === 'success')
+      },
+      isShowGrllery() {
+        return this.galleryValues.length > 0
       }
     },
-    handRemoveAndSetValue(index) {
-      if (this.multiple) {
-        this.uploadList.splice(index, 1)
-        this.$refs.upload.uploadFiles.splice(index, 1)
-        this.$emit('input', this.uploadList || [])
-      } else {
-        this.$emit('input', null)
+    watch: {
+      // eslint-disable-next-line no-unused-vars
+      value(val, oldval) {
+        if (this.uploadList !== val) {
+          this.uploadList = this.getUploadList(val)
+          this.fileList = this.getUploadList(val)
+          if (this.fileList.length>0){
+            console.log(this.fileList[0].status, 'val.files[0].status23')
+            // alert('2222'+this.fileList[0].status)
+          }
+        }
+      },
+      isShowCrop(value) {
+        if (value === false) {
+          this.cropData = {}
+        }
+      }
+    },
+    methods: {
+      format(percentage) {
+        return percentage === 100 ? '鍚庡彴姝e湪澶勭悊' : percentage === 99 ? '姝e湪杩涜鏂囦欢鏍¢獙' : `宸蹭笂浼�${percentage}%`;
+      },
+      // 鑾峰彇宸蹭笂浼犵殑鏂囦欢鍒楄〃
+      getUploadList(val) {
+        if (val) {
+          if (val.length > 0) {
+            if (!this.multiple) { // 鍗曢��
+              console.log(val, 'getUploadList val')
+              return val
+            } else {
+              console.log([...val], 'getUploadList [...val]')
+              return [...val]
+            }
+          } else {
+            return []
+          }
+        }
+      },
+      // eslint-disable-next-line no-unused-vars
+      onUploadProgress(event, file, fileList) {
+        this.progressFlag = true
+        /*let per = Number(
+          ((event.loaded / event.total) * 100).toFixed(2)
+        )
+        this.progressPercent = per > 100 ? 100 : per*/
+      },
+      handleSetFileSet(fileName, fileType, fileSize) {
+        const uid = this.cropData.uid || new Date().getTime()
+        this.cropData = {
+          name: fileName,
+          percentage: 0,
+          size: fileSize,
+          type: fileType,
+          status: 'ready',
+          uid: uid
+        }
+      },
+      handleCropSuccess(b64Data) {
+        this.cropData.url = b64Data
+      },
+      handleCropUploadError(status) {
+        this.$message.error('涓婁紶澶辫触, 璇烽噸璇�')
+        this.$emit('error', status)
+      },
+      handleCropUploadSuccess(response) {
+        console.log(response, 'handleCropUploadSuccess response')
+        this.cropData.status = 'success'
+        this.cropData.percentage = 100
+        this.cropData.response = response
+        const file = Object.assign({}, this.cropData)
+        this.handleUploadSuccess(response, file)
+      },
+      // 涓婁紶鍓嶆牎妫�鏍煎紡鍜屽ぇ灏�
+      handleBeforeUpload(file) {
+        let isAccept = true
+        if (this.fileType.length) { // 鏂囦欢绫诲瀷锛堝悗缂�锛変竴鑷�
+          let fileExtension = ''
+          if (file.name.lastIndexOf('.') > -1) {
+            fileExtension = file.name.slice(file.name.lastIndexOf('.') + 1)
+          }
+          isAccept = this.fileType.some((type) => {
+            if (file.type.indexOf(type) > -1) return true
+            if (fileExtension && fileExtension.indexOf(type) > -1) return true
+            return false
+          })
+        }
+        if (!isAccept) {
+          this.$message.error(`鏂囦欢鏍煎紡涓嶆纭�, 璇蜂笂浼�${this.fileType.join('/')}鏍煎紡鏂囦欢!`)
+          return false
+        }
+        if (this.fileSize) {
+          const isLt = file.size / 1024 / 1024 < this.fileSize
+          if (!isLt) {
+            this.$message.error(`涓婁紶澶у皬涓嶈兘瓒呰繃 ${this.fileSize} MB!`)
+            return false
+          }
+        }
+        if (this.dataForm) {
+          // eslint-disable-next-line vue/no-mutating-props
+          this.dataForm.hasUploadFinsh = 50
+        }
+        this.uploading = true
+        return true
+      },
+      async handleChange() {
+        this.uploading = false
+        /*const config = {
+          onUploadProgress: (progressEvent) => {
+            this.progressPercent = Number(
+              ((progressEvent.loaded / progressEvent.total) * 90).toFixed(2)
+            )
+          }
+        }
+        //this.progressFlag = true;
+        let form = new FormData();
+        form.append("file", params.file);
+        this.$http.post( this.uploadAction,form,config ).then((res) => {
+          this.progressPercent = 100;
+        })*/
+      },
+      // 鏂囦欢涓暟瓒呭嚭
+      handleExceed(files, fileList) {
+        if (this.onlyUploadFile) {
+          this.$set(fileList[0], 'raw', files[0])
+          this.$set(fileList[0], 'name', files[0].name)
+          /*          this.$refs.upload.clearFiles()
+                    this.$refs.upload.handleStart(files[0])*/
+        }
+        //this.$message.error(`鏈�澶氫笂浼�${this.limit}涓猔)
+      },
+      // 涓婁紶澶辫触
+      handleUploadError(err) {
+        this.uploading = false
+        this.$message.error('涓婁紶澶辫触, 璇烽噸璇�')
+        this.$emit('error', err)
+      },
+      // 涓婁紶鎴愬姛鍥炶皟
+      // eslint-disable-next-line no-unused-vars
+      handleUploadSuccess(response, file) {
+        console.log(response, 'handleUploadSuccess response')
+        if (response.code === 0) {
+          this.progressPercent = 100
+          this.uploading = false
+          // this.$message.success('涓婁紶鎴愬姛')
+          if (this.multiple) {
+            this.uploadList.push(response.data)
+            this.$emit('input', this.uploadList)
+          } else {
+            this.$emit('input', response.data)
+          }
+          this.progressFlag = false
+          this.progressPercent = 0
+        }
+      },
+      async handleRemove(index) {
+        let file = this.uploadList[index]
+        if (file.status === 1) { // 璇佷功鏂囦欢锛岀洿鎺ヤ粠鍒楄〃鍒犻櫎锛屼笉淇濆瓨鏁版嵁搴�
+          this.handRemoveAndSetValue(index)
+        } else {
+          if (await this.$tip.confirm(this.$t('prompt.info', {'handle': this.$t('delete')}))) {
+            let res = await this.$http.delete('/sys/oss', {'data': [file.id]})
+            if (res.success) {
+              await this.$tip.success()
+              this.handRemoveAndSetValue(index)
+            }
+          }
+        }
+      },
+      handRemoveAndSetValue(index) {
+        console.log(index, 'handRemoveAndSetValue')
+        if (this.multiple) {
+          this.uploadList.splice(index, 1)
+          this.$refs.upload.uploadFiles.splice(index, 1)
+          this.$emit('input', this.uploadList || [])
+        } else {
+          this.$emit('input', null)
+        }
+      },
+      nullFunction(param) {
+      },
+      //寮�濮嬪垎鐗囦笂浼爉yCheckedFile
+      async myCheckedFile() {
+        if (!this.handleBeforeUpload(this.fileList[0].raw))
+          return
+        let options = {
+          file: this.fileList[0].raw,
+          onProgress: function (val) {
+          },
+          onSuccess: function (val) {
+          },
+          onError: function (val) {
+          }
+        }
+        await this.checkedFile(options)
+      },
+      async checkedFile(options) {
+        if (!this.isUpload) {
+          this.isUpload = true;
+        } else {
+          return this.$message({
+            message: `褰撳墠鏂囦欢姝e湪涓婁紶`,
+            type: "warning"
+          });
+        }
+        this.progressFlag = true
+        const {
+          maxSize,
+          multiUploadSize,
+          getSize,
+          splitUpload,
+          singleUpload
+        } = this; // 瑙f瀯璧嬪��
+        const {file, onProgress, onSuccess, onError} = options; // 瑙f瀯璧嬪��
+
+        file.uid = getUUID().toString()
+        if (file.size > maxSize) {
+          return this.$message({
+            message: `鎮ㄩ�夋嫨鐨勬枃浠跺ぇ浜�${getSize(maxSize)}`,
+            type: "error"
+          });
+        }
+        this.fileKeep = file;
+        const uploadFunc =
+          file.size > multiUploadSize ? splitUpload : singleUpload; // 閫夋嫨涓婁紶鏂瑰紡
+        try {
+          await uploadFunc(file, onProgress);
+          onSuccess();
+        } catch (e) {
+          console.error(e);
+          this.$message({
+            message: e.message,
+            type: "error"
+          });
+          this.progressFlag = false;
+          this.progressPercent = 0;
+          onError();
+        }
+      },
+      // 鏍煎紡鍖栨枃浠跺ぇ灏忔樉绀烘枃瀛�
+      getSize(size) {
+        return size > 1024
+          ? size / 1024 > 1024
+            ? size / (1024 * 1024) > 1024
+              ? (size / (1024 * 1024 * 1024)).toFixed(2) + "GB"
+              : (size / (1024 * 1024)).toFixed(2) + "MB"
+            : (size / 1024).toFixed(2) + "KB"
+          : size.toFixed(2) + "B";
+      },
+      // 鍗曟枃浠剁洿鎺ヤ笂浼�
+      async singleUpload(file, onProgress) {
+        await this.postFile(
+          {file, uid: file.uid, fileName: file.fileName, chunk: 0},
+          onProgress
+        );
+        const reader = new FileReader();
+
+        reader.readAsArrayBuffer(file);
+        console.log(file, 'singleUpload file');
+        let hashMd5 = "";
+        console.log(hashMd5);
+        const that = this;
+
+        function getHash(cb) {
+          console.log(cb, "杩涘叆鍗曚釜涓婁紶鐨刧etHash");
+          console.log("杩涘叆鍗曚釜涓婁紶鐨刧etHash");
+          reader.onload = function (e) {
+            console.log("杩涘叆鍗曚釜涓婁紶鐨刧etHash鐨勫嚱鏁�2");
+            console.log(hashMd5);
+            console.log(this);
+            // console.log(e)
+            const hash = SparkMD5.ArrayBuffer.hash(e.target.result, false);
+            console.log(e.target.result, 'e.target.result');
+            console.log(hash, 'hash');
+            that.hashMd5 = hash;
+            console.log(that.hashMd5, 'hashMd5');
+            that.fileMd5Keep = hash;
+            cb(hash);
+          };
+        }
+
+        await getHash(function (hash) {
+          console.log(hash, 'getHash(function (hash) hash');
+          console.log(that, 'getHash(function (hash) that');
+          // 璇锋眰鎺ュ彛
+          that.validateFile({
+            name: file.name,
+            uid: file.uid,
+            md5: hash,
+            chunks: 1,
+            filter_type: "user_data_file"
+          });
+        });
+      },
+
+      // 澶ф枃浠跺垎鍧椾笂浼�
+      splitUpload(file, onProgress) {
+        console.log(file, 'splitUpload(file');
+        // eslint-disable-next-line no-async-promise-executor
+        return new Promise(async (resolve, reject) => {
+          try {
+            const {eachSize} = this;
+            const chunks = Math.ceil(file.size / eachSize);
+            this.chunksKeep = chunks;
+            const fileChunks = await this.splitFile(file, eachSize, chunks);
+            this.fileChunksKeep = fileChunks;
+            //鍒ゆ柇姣忎笂浼犱竴涓枃浠讹紝杩涘害鏉℃定澶氬皯,淇濈暀涓や綅灏忔暟
+            this.eachProgress = 100 / chunks;
+            this.progressFlag = true;
+            let currentChunk = 0;
+            let percent = 0;
+            for (let i = 0; i < fileChunks.length; i++) {
+              // 鏈嶅姟绔娴嬪凡缁忎笂浼犲埌绗琧urrentChunk鍧椾簡锛岄偅灏辩洿鎺ヨ烦鍒扮currentChunk鍧楋紝瀹炵幇鏂偣缁紶
+              // 姝ゆ椂闇�瑕佸垽鏂繘搴︽潯
+              if (Number(currentChunk) === i) {
+                // 姣忓潡涓婁紶瀹屽悗鍒欒繑鍥為渶瑕佹彁浜ょ殑涓嬩竴鍧楃殑index
+                await this.postFile(
+                  {
+                    chunked: true,
+                    chunk: i,
+                    chunks,
+                    eachSize,
+                    fileName: file.name,
+                    fullSize: file.size,
+                    uid: file.uid,
+                    file: fileChunks[i]
+                  },
+                  onProgress
+                );
+                currentChunk++;
+
+                // 涓婁紶瀹屼竴鍧楀悗锛岃繘搴︽潯澧炲姞
+                percent = percent + this.eachProgress;
+                // 涓嶈兘瓒呰繃100
+                this.progressPercent = percent > 100 ? 99 : Math.floor(percent);
+              }
+            }
+            const spark = new SparkMD5.ArrayBuffer();
+            let currentChunkMd5 = 0;
+            const that = this;
+            const reader = new FileReader();
+            reader.onload = async function (e) {
+              spark.append(e.target.result);
+              currentChunkMd5++;
+
+              if (currentChunkMd5 < chunks) {
+                await loadNext();
+              } else {
+                // console.log(spark.end());
+                const hashMd5111 = spark.end();
+                that.fileMd5Keep = hashMd5111;
+                // 鍦ㄨ繖閲岃姹傛帴鍙�
+                await that.validateFile({
+                  name: file.name,
+                  uid: file.uid,
+                  md5: hashMd5111,
+                  chunks: fileChunks.length,
+                  filter_type: "git_secret_file"
+                });
+              }
+            };
+
+            // eslint-disable-next-line no-inner-declarations
+            async function loadNext() {
+              const start = currentChunkMd5 * eachSize;
+              const end =
+                start + eachSize >= file.size ? file.size : start + eachSize;
+              await reader.readAsArrayBuffer(file.slice(start, end));
+            }
+
+            await loadNext();
+            resolve();
+          } catch (error) {
+            reject(error);
+          }
+        });
+      },
+      // 鏂偣缁紶
+      againSplitUpload(file, array) {
+        console.log("file,array");
+        console.log(file);
+        console.log(array);
+        // eslint-disable-next-line no-async-promise-executor
+        return new Promise(async (resolve, reject) => {
+          try {
+            // eslint-disable-next-line no-unused-vars
+            const {eachSize, fileKeep} = this;
+            const chunks = this.chunksKeep;
+            const fileChunks = this.fileChunksKeep;
+            this.progressFlag = true;
+            // let currentChunk = 0;
+            for (let i = 0; i < array.length; i++) {
+              // 鏈嶅姟绔娴嬪凡缁忎笂浼犲埌绗琧urrentChunk鍧椾簡锛岄偅灏辩洿鎺ヨ烦鍒扮currentChunk鍧楋紝瀹炵幇鏂偣缁紶
+              // 姝ゆ椂闇�瑕佸垽鏂繘搴︽潯
+              // 姣忓潡涓婁紶瀹屽悗鍒欒繑鍥為渶瑕佹彁浜ょ殑涓嬩竴鍧楃殑index
+              await this.postFile({
+                chunked: true,
+                chunk: array[i],
+                chunks,
+                name: file.name,
+                fullSize: fileKeep.size,
+                uid: file.uid,
+                file: fileChunks[array[i]]
+              });
+              // currentChunk++
+
+              // 涓婁紶瀹屼竴鍧楀悗锛岃繘搴︽潯澧炲姞
+              this.progressPercent += this.eachProgress;
+              // 涓嶈兘瓒呰繃100
+              this.progressPercent = this.progressPercent > 100 ? 100 : this.progressPercent;
+            }
+            let fileMd5KeepTwo = this.fileMd5Keep;
+
+            const isValidate = await this.validateFile({
+              name: file.name,
+              uid: file.uid,
+              md5: fileMd5KeepTwo,
+              chunks: fileChunks.length,
+              filter_type: "git_secret_file"
+            });
+            if (!isValidate) {
+              throw new Error("鏂囦欢鏍¢獙寮傚父");
+            }
+            // 鍏抽棴杩涘害鏉�
+            this.progressFlag = false;
+            // 閲嶇疆杩涘害鏉�
+            this.progressPercent = 0;
+            resolve();
+          } catch (e) {
+            reject(e);
+          }
+        });
+      },
+      // 鏂囦欢鍒嗗潡,鍒╃敤Array.prototype.slice鏂规硶
+      splitFile(file, eachSize, chunks) {
+        return new Promise((resolve, reject) => {
+          try {
+            setTimeout(() => {
+              const fileChunk = [];
+              for (let chunk = 0; chunks > 0; chunks--) {
+                fileChunk.push(file.slice(chunk, chunk + eachSize));
+                chunk += eachSize;
+              }
+              resolve(fileChunk);
+            }, 0);
+          } catch (e) {
+            console.error(e);
+            reject(new Error("鏂囦欢鍒囧潡鍙戠敓閿欒"));
+          }
+        });
+      },
+      removeFile(file) {
+        this.requestCancelQueue[file.uid]();
+        delete this.requestCancelQueue[file.uid];
+        return true;
+      },
+      // 鎻愪氦鏂囦欢鏂规硶,灏嗗弬鏁拌浆鎹负FormData, 鐒跺悗閫氳繃axios鍙戣捣璇锋眰
+      postFile(param, onProgress) {
+        const formData = new FormData();
+        formData.append("file", param.file); //  鏀逛簡
+        formData.append("fileName", param.fileName); //  鏀逛簡
+        formData.append("uid", param.uid);
+        formData.append("chunk", param.chunk);
+        formData.append("filter_type", "git_secret_file");
+        formData.append("chunks", param.chunks);
+        const {requestCancelQueue} = this;
+        const config = {
+          cancelToken: new axios.CancelToken(function executor(cancel) {
+            if (requestCancelQueue[param.uid]) {
+              requestCancelQueue[param.uid]();
+              delete requestCancelQueue[param.uid];
+            }
+            requestCancelQueue[param.uid] = cancel;
+          }),
+          onUploadProgress: e => {
+            if (param.chunked) {
+              e.percent = Number(
+                (
+                  ((param.chunk * (param.eachSize - 1) + e.loaded) /
+                    param.fullSize) *
+                  100
+                ).toFixed(2)
+              );
+            } else {
+              e.percent = Number(((e.loaded / e.total) * 100).toFixed(2));
+            }
+            onProgress(e)
+          }
+        }
+        //return axios.post('sys/oss/upload_chunk/', formData, config).then(rs => rs.data)
+        return this.$http({
+          url: "/sys/oss/upload_chunk/",
+          method: "POST",
+          data: formData
+        }).then(rs => rs.data
+        );
+      },
+      // 鏂囦欢鏍¢獙鏂规硶
+      validateFile(file) {
+        //return axios.post('sys/oss/upload_success/', file).then(rs => rs.data)
+        return this.$http({
+          url: "/sys/oss/upload_success/",
+          method: "POST",
+          data: file
+        }).then(res => {
+          console.log(res, "validateFile res")
+          if (res && !res.data) {
+            this.againSplitUpload(file, res.data.error_file)
+            this.$message({
+              message: "鏈夋枃浠朵笂浼犲け璐ワ紝姝e湪閲嶆柊涓婁紶",
+              type: "warning"
+            });
+          } else if (res && res.data) {
+            this.progressPercent = 100
+            if (!this.onlyUploadFile) {
+              this.$http({
+                url: this.action,
+                method: "POST",
+                data: file
+              }).then(res => {
+                console.log(res, '鍚庡彴澶勭悊 res1')
+                let aa = res.data.status
+                console.log(aa, 'res.data.status')
+
+                if (this.multiple) {
+                  this.uploadList.push(res.data)
+                  this.$emit('input', this.uploadList)
+                } else {
+                  this.$emit('input', res.data)
+                }
+                this.uploading = false
+                this.progressFlag = false
+                this.progressPercent = 0
+                this.isUpload = false
+              })
+            } else {
+              console.log(file.uid, 'file.uid')
+              this.$emit('recall', file.uid)
+              this.uploading = false
+              this.progressFlag = false
+              this.progressPercent = 0
+              this.isUpload = false
+            }
+          } else if (res && res.status == 40008) {
+            this.$message.error(res.message);
+            this.progressFlag = false;
+            this.progressPercent = 0;
+          }
+        })
+      }
+    },
+    mounted() {
+      // 鎻掑叆鍒癰ody涓�, 閬垮厤寮瑰嚭灞傝閬洊
+      if (this.crop && this.$refs.cropper) {
+        document.body.appendChild(this.$refs.cropper.$el)
       }
     }
-  },
-  mounted() {
-    // 鎻掑叆鍒癰ody涓�, 閬垮厤寮瑰嚭灞傝閬洊
-    if (this.crop && this.$refs.cropper) {
-      document.body.appendChild(this.$refs.cropper.$el)
-    }
   }
-}
 </script>
 
 <style>
-.zt-upload {
-  line-height: 1;
-}
+  .zt-upload {
+    line-height: 1;
+  }
 
-.zt .upload-input .upload-btn {
-  padding: 8px 12px;
-}
+  .zt .upload-input .upload-btn {
+    padding: 8px 12px;
+  }
 
-.zt .upload-input.hide {
-  height: 0px;
-}
+  .zt .upload-input.hide {
+    height: 0px;
+  }
 
-.zt-upload .el-loading-spinner {
-  line-height: 1;
-}
+  .zt-upload .el-loading-spinner {
+    line-height: 1;
+  }
 
-.zt-upload .el-icon-plus {
-  vertical-align: middle;
-}
+  .zt-upload .el-icon-plus {
+    vertical-align: middle;
+  }
 
-.zt-upload .el-upload--picture-card {
-  width: auto;
-  height: auto;
-  background: none;
-  line-height: inherit;
-}
+  .zt-upload .el-upload--picture-card {
+    width: auto;
+    height: auto;
+    background: none;
+    line-height: inherit;
+  }
 
-/* 瑁佸壀 */
-.vue-image-crop-upload.zt-upload-image--cropper {
-  z-index: 99;
-}
+  /* 瑁佸壀 */
+  .vue-image-crop-upload.zt-upload-image--cropper {
+    z-index: 99;
+  }
 
-.zt-upload-image--cropper .vicp-drop-area {
-  background-color: #fbfdff !important;
-}
+  .zt-upload-image--cropper .vicp-drop-area {
+    background-color: #fbfdff !important;
+  }
 
-.zt-upload-image--cropper .vicp-icon1-arrow {
-  border-bottom-color: #909399 !important;
-}
+  .zt-upload-image--cropper .vicp-icon1-arrow {
+    border-bottom-color: #909399 !important;
+  }
 
-.zt-upload-image--cropper .vicp-icon1-body {
-  background-color: #909399 !important;
-}
+  .zt-upload-image--cropper .vicp-icon1-body {
+    background-color: #909399 !important;
+  }
 
-.zt-upload-image--cropper .vicp-icon1-bottom {
-  border-color: #909399 !important;
-}
+  .zt-upload-image--cropper .vicp-icon1-bottom {
+    border-color: #909399 !important;
+  }
 </style>
diff --git a/web/src/components/config-uploader/src/config-uploader.vue b/web/src/components/config-uploader/src/config-uploader.vue
index 4d45202..1e5fe8e 100644
--- a/web/src/components/config-uploader/src/config-uploader.vue
+++ b/web/src/components/config-uploader/src/config-uploader.vue
@@ -1,9 +1,9 @@
 <template>
-  <div>
-    <el-collapse class="config-uploader" v-model="activeNames" v-if="oss && oss.groups.length>1">
+  <div v-if="oss">
+    <el-collapse class="config-uploader" v-model="activeNames" v-if="oss.groups.length>1">
       <el-collapse-item name="1" v-for="group in (oss.groups || [])" :key="group.busiFieldGroup">
         <template slot="title">
-          <el-tag v-if="!image">{{group.busiFieldGroup}}</el-tag>
+          <el-tag>{{group.busiFieldGroup}}</el-tag>
         </template>
         <!-- <zt-form-item :label="field.busiFieldName" :prop="field.busiField" v-for="field in group.fields"
                        :key="field.busiField" :rules="field.isRequired ? 'required':''" style="width: 100%;">
@@ -11,15 +11,17 @@
                         :accept="field.accept" :file-size="field.fileSize" @input="change(field.busiField)"/>
          </zt-form-item>-->
         <el-table :data="group.fields" :show-header="false">
-          <el-table-column width="250" style="text-align: left;white-space:nowrap;">
+          <el-table-column width="180" style="text-align: left;white-space:nowrap;">
             <template slot-scope="scope">
-              <span v-html="scope.row.busiFieldName"></span>
+              <span v-html="(scope.row.isRequired?'<font color=red>* </font>':'')+ scope.row.busiFieldName"></span>
             </template>
           </el-table-column>
           <el-table-column align="left">
             <template slot-scope="scope">
-              <zt-uploader :image="image" v-model="dataForm[scope.row.busiField]" multiple :limit="scope.row.fileLimit" :file-type="scope.row.fileType"
-                           :accept="scope.row.accept" :file-size="scope.row.fileSize" @getUploaderImg="getUploaderImg" @input="change(scope.row.busiField)"/>
+              <zt-uploader v-model="dataForm[scope.row.busiField]" :dataForm="dataForm" multiple
+                           :limit="scope.row.fileLimit" :file-type="scope.row.fileTypeArr"
+                           :showFileList2="false" :accept="scope.row.accept" :file-size="scope.row.fileSize"
+                           @input="change(scope.row.busiField)"/>
             </template>
           </el-table-column>
         </el-table>
@@ -32,16 +34,26 @@
            <zt-uploader v-model="dataForm[field.busiField]" multiple :limit="field.fileLimit" :file-type="field.fileType"
                         :accept="field.accept" :file-size="field.fileSize" @input="change(field.busiField)"/>
          </zt-form-item>-->
+        <template slot="title">
+          <el-tag>{{group.busiFieldGroup}}</el-tag>
+        </template>
+        <!-- <zt-form-item :label="field.busiFieldName" :prop="field.busiField" v-for="field in group.fields"
+                       :key="field.busiField" :rules="field.isRequired ? 'required':''" style="width: 100%;">
+           <zt-uploader v-model="dataForm[field.busiField]" multiple :limit="field.fileLimit" :file-type="field.fileType"
+                        :accept="field.accept" :file-size="field.fileSize" @input="change(field.busiField)"/>
+         </zt-form-item>-->
         <el-table :data="group.fields" :show-header="false">
-          <el-table-column width="250" style="text-align: left;white-space:nowrap;">
+          <el-table-column width="180" style="text-align: left;white-space:nowrap;">
             <template slot-scope="scope">
-              <span v-html="scope.row.busiFieldName"></span>
+              <span v-html="(scope.row.isRequired?'<font color=red>* </font>':'')+ scope.row.busiFieldName"></span>
             </template>
           </el-table-column>
           <el-table-column align="left">
             <template slot-scope="scope">
-              <zt-uploader :image="image" v-model="dataForm[scope.row.busiField]" multiple :limit="scope.row.fileLimit" :file-type="scope.row.fileType"
-                           :accept="scope.row.accept" :file-size="scope.row.fileSize" @getUploaderImg="getUploaderImg" @input="change(scope.row.busiField)"/>
+              <zt-uploader v-model="dataForm[scope.row.busiField]" :dataForm="dataForm" multiple
+                           :limit="scope.row.fileLimit" :file-type="scope.row.fileTypeArr"
+                           :showFileList2="false" :accept="scope.row.accept" :file-size="scope.row.fileSize"
+                           @input="change(scope.row.busiField)"/>
             </template>
           </el-table-column>
         </el-table>
@@ -58,7 +70,6 @@
     props: {
       value: Object,
       dataForm: Object,
-      image:false,
       busiType: String // 涓氬姟绫诲瀷
     },
     data() {
@@ -72,7 +83,15 @@
         let arr = []
         if (this.dataForm.files && this.dataForm.files.groups) {
           this.dataForm.files.groups.forEach(group => {
-            group.fields.forEach(field => arr.push(field))
+            group.fields.forEach(field => {
+              let arrType = []
+              if (field.fileTypes) {
+                arrType = field.fileTypes.split(',')
+              }
+              //this.$set(field, 'fileTypeArr', arrType)
+              field.fileTypeArr = arrType
+              arr.push(field)
+            })
           })
         }
         return arr
@@ -110,25 +129,31 @@
       getOss() {
         let arr = (this.$store.state.oss.configs || []).filter(config => config.busiType === this.busiType)
         if (arr.length > 0) {
+          arr[0].groups.forEach(group => {
+            group.fields.forEach(field => {
+              let arrType = []
+              if (field.fileTypes) {
+                arrType = field.fileTypes.split(',')
+              }
+              //this.$set(field, 'fileTypeArr', arrType)
+              field.fileTypeArr = arrType
+            })
+          })
+          console.log(JSON.parse(JSON.stringify(arr[0])),'JSON.parse(JSON.stringify(arr[0]))')
           return JSON.parse(JSON.stringify(arr[0]))
         }
         return null
       },
       change(busiField) {
-        console.log(busiField,'busiField busiField')
         this.fields.forEach(field => {
           if (field.busiField === busiField) {
             field.files.length = 0
             this.dataForm[busiField].forEach(file => field.files.push(file))
+            if (this.dataForm) {
+              this.dataForm.hasUploadFinsh = 100
+            }
           }
         })
-      },
-      getUploaderImg(list){
-        // this.imageList = list
-        if(list[0].url){
-          this.$emit('getImageUrl',list[0].url)
-        }
-
       }
     }
   }
diff --git a/web/src/components/table-uploader/src/table-uploader.vue b/web/src/components/table-uploader/src/table-uploader.vue
index dfde297..7856c5e 100644
--- a/web/src/components/table-uploader/src/table-uploader.vue
+++ b/web/src/components/table-uploader/src/table-uploader.vue
@@ -1,25 +1,12 @@
 <template>
   <div>
-    <div class="config-uploader" >
+    <div class="config-uploader" v-if="oss">
       <div v-for="group in (oss.groups || [])" :key="group.busiFieldGroup">
          <zt-form-item v-for="field in group.fields" :prop="field.busiField"
                        :key="field.busiField" :rules="field.isRequired ? 'required':''" style="width: 100%;margin-bottom: 0">
            <zt-uploader v-model="dataForm[field.busiField]" multiple :limit="field.fileLimit" :file-type="field.fileType"
                         :accept="field.accept" :file-size="field.fileSize" @input="change(field.busiField)"/>
          </zt-form-item>
-<!--        <el-table :data="group.fields" :show-header="false">-->
-<!--          <el-table-column width="250" style="text-align: left;white-space:nowrap;">-->
-<!--            <template slot-scope="scope">-->
-<!--              <span v-html="scope.row.busiFieldName"></span>-->
-<!--            </template>-->
-<!--          </el-table-column>-->
-<!--          <el-table-column align="left">-->
-<!--            <template slot-scope="scope">-->
-<!--              <zt-uploader v-model="dataForm[scope.row.busiField]" multiple :limit="scope.row.fileLimit" :file-type="scope.row.fileType"-->
-<!--                           :accept="scope.row.accept" :file-size="scope.row.fileSize" @getUploaderImg="getUploaderImg" @input="change(scope.row.busiField)"/>-->
-<!--            </template>-->
-<!--          </el-table-column>-->
-<!--        </el-table>-->
       </div>
     </div>
   </div>
@@ -60,6 +47,7 @@
           ...this.getOss(),
           ...(val || {})
         }
+        console.log(this.oss,"this.oss")
         // this.dataForm.files = this.oss
         this.$set(this.dataForm, 'files', this.oss)
 
@@ -72,6 +60,7 @@
     }
   },
   mounted() {
+
     this.oss = this.getOss()
     if (this.oss) {
       this.oss.groups.forEach(group => {
@@ -91,10 +80,14 @@
     },
     change(busiField) {
       console.log(busiField,'busiField busiField')
+
       this.fields.forEach(field => {
         if (field.busiField === busiField) {
           field.files.length = 0
-          this.dataForm[busiField].forEach(file => field.files.push(file))
+          this.dataForm[busiField].forEach(file => {
+            console.log(file,"change file")
+            field.files.push(file)
+          })
         }
       })
     },
diff --git a/web/src/views/modules/itemCirculatOrder/ItemCirculatOrder-AddOrUpdate.vue b/web/src/views/modules/itemCirculatOrder/ItemCirculatOrder-AddOrUpdate.vue
index 04e7563..6b96d83 100644
--- a/web/src/views/modules/itemCirculatOrder/ItemCirculatOrder-AddOrUpdate.vue
+++ b/web/src/views/modules/itemCirculatOrder/ItemCirculatOrder-AddOrUpdate.vue
@@ -24,7 +24,7 @@
             <el-input v-model="dataForm.project.softwareIdentity" placeholder="鐗╁搧缂栧彿"></el-input>
           </el-form-item>
           <el-form-item class="marginTopAndMarginBottom3" label="鏁� 閲�" style="width: 32%">
-            <el-input v-model="dataForm.project.softwareName" placeholder="鏁伴噺"></el-input>
+            <el-input v-model="dataForm.project.isContract" placeholder="鏁伴噺"></el-input>
           </el-form-item>
         </div>
         <div style="border-bottom: 1px solid rgba(0,0,0,.2);">
@@ -38,19 +38,19 @@
                     <span v-html="indexFormat(scope.$index)"></span>
                   </template>
                 </el-table-column>
-                <el-table-column prop="Name" min-width="180" label="鎶�鏈祫鏂欏悕绉�">
+                <el-table-column prop="infoName" min-width="180" label="鎶�鏈祫鏂欏悕绉�">
                   <template v-slot="{ row }">
-                    <el-input v-model="row.Name" placeholder="鎶�鏈祫鏂欏悕绉�"></el-input>
+                    <el-input v-model="row.name" placeholder="鎶�鏈祫鏂欏悕绉�"></el-input>
                   </template>
                 </el-table-column>
                 <el-table-column prop="identify" align="center" width="150" label="鏍囪瘑">
                   <template v-slot="{ row }">
-                    <el-input v-model="row.identify" placeholder="鏍囪瘑"></el-input>
+                    <el-input v-model="row.version" placeholder="鏍囪瘑"></el-input>
                   </template>
                 </el-table-column>
                 <el-table-column prop="version" align="center" width="120" label="鐗堟湰">
                   <template v-slot="{ row }">
-                    <el-input v-model="row.version" placeholder="鐗堟湰"></el-input>
+                    <el-input v-model="row.identify" placeholder="鐗堟湰"></el-input>
                   </template>
                 </el-table-column>
                 <el-table-column prop="secretClass" label="瀵嗙骇" width="100"  align="center">
@@ -77,7 +77,7 @@
                 <el-table-column fixed="right" prop="files" label="涓婁紶闄勪欢" width="80"  align="center">
                   <template v-slot="{ row }">
 <!--                    <zt-table-button @click="files(row.id)">涓婁紶闄勪欢</zt-table-button>-->
-                    <table-uploader busi-type="test_order" model-name="dataForm" :dataForm="dataForm"
+                    <table-uploader busi-type="circulat_order" model-name="row" :dataForm="row"
                                      v-model="row.files"/>
                   </template>
                 </el-table-column>
@@ -156,7 +156,7 @@
           </div>
           <div class="el-border-left " style="width: 35%;height: 40px;">
             <el-form-item label="鏄惁婊¤冻娴嬭瘯瑕佹眰" label-width="150px" style="padding-left:20px;margin-bottom:0">
-              <zt-dict v-model="dataForm.circulatOrder.acceptSituation" :radio="true" dict="is_or_not"></zt-dict>
+              <zt-dict v-model="dataForm.circulatOrder.cscs" :radio="true" dict="is_or_not"></zt-dict>
             </el-form-item>
           </div>
         </div>
@@ -364,16 +364,18 @@
           ...this.dataForm,
           ...res.data
         }
-        console.log(this.dataForm,"this.dataForm")
+        console.log(this.dataForm,"getInfo this.dataForm")
       },
       // 琛ㄥ崟鎻愪氦
       async formSubmit() {
+        console.log(this.dataForm,"this.dataForm11111")
         let res = await this.$http[!this.dataForm.id ? 'post' : 'put']('/itemCirculatOrder/ItemCirculatOrder/', this.dataForm)
         if (res.success) {
           await this.$tip.success()
           this.$refs.dialog.close()
           this.$emit('refreshDataList')
         }
+
       }
     }
   }
diff --git a/web/src/views/modules/itemCirculatOrder/ItemCirculatOrder.vue b/web/src/views/modules/itemCirculatOrder/ItemCirculatOrder.vue
index d9aeac5..414a9ab 100644
--- a/web/src/views/modules/itemCirculatOrder/ItemCirculatOrder.vue
+++ b/web/src/views/modules/itemCirculatOrder/ItemCirculatOrder.vue
@@ -5,7 +5,12 @@
         <el-form :inline="true" :model="dataForm" @keyup.enter.native="table.query()">
           <el-form-item>
             <el-input v-model="dataForm.code" placeholder="璇疯緭鍏ョ墿鍝佹祦杞崟缂栧彿" clearable></el-input>
-
+          </el-form-item>
+          <el-form-item>
+            <el-input v-model="dataForm.softwareName" placeholder="璇疯緭鍏ョ墿鍝佸悕绉�" clearable></el-input>
+          </el-form-item>
+          <el-form-item>
+            <el-input v-model="dataForm.softwareIdentity" placeholder="璇疯緭鍏ョ墿鍝佺紪鍙�" clearable></el-input>
           </el-form-item>
           <el-form-item>
             <zt-button type="query" @click="table.query()"/>
@@ -16,6 +21,8 @@
         <el-table v-loading="table.dataLoading" :data="table.dataList" height="100px" v-adaptive="{bottomOffset:70}" border @selection-change="table.selectionChangeHandle">
           <el-table-column type="selection" width="40"/>
             <el-table-column prop="code" label="鐗╁搧娴佽浆鍗曠紪鍙�"/>
+            <el-table-column prop="softwareName" label="鐗╁搧鍚嶇О"/>
+            <el-table-column prop="softwareIdentity" label="鐗╁搧缂栧彿"/>
               <zt-table-column-handle :table="table" edit-perm="itemCirculatOrder:update" delete-perm="itemCirculatOrder::delete"/>
         </el-table>
         <!-- 寮圭獥, 鏂板 / 淇敼 -->
@@ -37,6 +44,8 @@
       return {
         dataForm: {
           code: '',
+          softwareName:'',
+          softwareIdentity:'',
         }
       }
     },
diff --git a/web/src/views/modules/project/SoftwareTestOrder-AddOrUpdate.vue b/web/src/views/modules/project/SoftwareTestOrder-AddOrUpdate.vue
index 0bf16d6..96d00e4 100644
--- a/web/src/views/modules/project/SoftwareTestOrder-AddOrUpdate.vue
+++ b/web/src/views/modules/project/SoftwareTestOrder-AddOrUpdate.vue
@@ -568,6 +568,7 @@
         }
       }
       // console.log(this.dataForm, "this.dataForm")
+      console.log(this.dataForm,"getInfo this.dataForm")
     },
     async print(){
       var params = qs.stringify({
@@ -579,7 +580,7 @@
     },
     // 琛ㄥ崟鎻愪氦
     async formSubmit() {
-      console.log(this.dataForm, ' this.dataForm')
+      console.log(this.dataForm, 'formSubmit this.dataForm')
       if(this.dataForm.softwareTestOrder.testType1){
         this.dataForm.softwareTestOrder.testType1=this.dataForm.softwareTestOrder.testType1.join(',')
       }
diff --git a/zt/common/src/main/java/com/zt/core/sys/dto/DictIstance.java b/zt/common/src/main/java/com/zt/core/sys/dto/DictIstance.java
index cd55e37..52f5037 100644
--- a/zt/common/src/main/java/com/zt/core/sys/dto/DictIstance.java
+++ b/zt/common/src/main/java/com/zt/core/sys/dto/DictIstance.java
@@ -12,4 +12,6 @@
 
     private String identify;
 
+    private String secretClass;
+
 }
diff --git a/zt/core/src/main/java/com/zt/modules/oss/annotation/DataFieldParser.java b/zt/core/src/main/java/com/zt/modules/oss/annotation/DataFieldParser.java
index e35b5d8..9c7272f 100644
--- a/zt/core/src/main/java/com/zt/modules/oss/annotation/DataFieldParser.java
+++ b/zt/core/src/main/java/com/zt/modules/oss/annotation/DataFieldParser.java
@@ -1,10 +1,8 @@
 package com.zt.modules.oss.annotation;
 
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
+import com.zt.common.annotation.OssField;
+import com.zt.modules.oss.model.OssFieldDefine;
+import io.swagger.annotations.ApiModel;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.io.Resource;
 import org.springframework.core.io.ResourceLoader;
@@ -16,10 +14,10 @@
 import org.springframework.core.type.classreading.MetadataReaderFactory;
 import org.springframework.stereotype.Component;
 
-import com.zt.common.annotation.OssField;
-import com.zt.modules.oss.model.OssFieldDefine;
-
-import io.swagger.annotations.ApiModel;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
 
 @Component("dataFieldParser")
 public class DataFieldParser {
diff --git a/zt/core/src/main/java/com/zt/modules/oss/cloud/LocalStorageService.java b/zt/core/src/main/java/com/zt/modules/oss/cloud/LocalStorageService.java
index ec5a4f9..2a4854c 100644
--- a/zt/core/src/main/java/com/zt/modules/oss/cloud/LocalStorageService.java
+++ b/zt/core/src/main/java/com/zt/modules/oss/cloud/LocalStorageService.java
@@ -8,12 +8,10 @@
 
 package com.zt.modules.oss.cloud;
 
-
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.spire.xls.Workbook;
 import com.zt.common.exception.ErrorCode;
 import com.zt.common.exception.RenException;
-import com.zt.common.utils.CommonUtils;
 import com.zt.core.oss.encry.IOssEncryptService;
 import com.zt.modules.oss.enums.CloudChannel;
 import com.zt.modules.oss.model.QdSysOss;
@@ -29,7 +27,6 @@
 import javax.servlet.http.HttpServletResponse;
 import java.io.*;
 import java.net.URLEncoder;
-import java.util.Date;
 
 /**
  * 鏈湴涓婁紶
@@ -98,8 +95,6 @@
     }
 
     public void content(SysOss oss, HttpServletResponse response) throws Exception {
-        Date beginDate = new Date();
-        Date lastDate = beginDate;
         if (oss == null) {
             throw new IOException("鏂囦欢涓嶅瓨鍦紒");
         }
@@ -118,15 +113,7 @@
             System.out.println(File.separator);
             System.out.println(oss.getPath());
             // 鍒涘缓鏂囦欢杈撳叆娴�
-            Date nowDate = new Date();
-            System.out.println("鍑嗗鏃堕棿锛�" + CommonUtils.getDatePoor(nowDate, lastDate));
-            lastDate = nowDate;
-
             InputStream is = ossEncryptService.decrypt(file);
-
-            nowDate = new Date();
-            System.out.println("瑙e瘑鏃堕棿锛�" + CommonUtils.getDatePoor(nowDate, lastDate));
-            lastDate = nowDate;
             // 鍝嶅簲杈撳嚭娴�
             ServletOutputStream out = response.getOutputStream();
             // 鍒涘缓缂撳啿鍖�
@@ -138,9 +125,6 @@
             is.close();
             out.flush();
             out.close();
-            nowDate = new Date();
-            System.out.println("杈撳嚭鏃堕棿锛�" + CommonUtils.getDatePoor(nowDate, lastDate));
-            System.out.println("鎬绘椂闂达細" + CommonUtils.getDatePoor(nowDate, beginDate));
         }
     }
 
@@ -166,7 +150,8 @@
                         workbook.saveToStream(outputStream, com.spire.xls.FileFormat.Version2013); // 鎸囧畾鏂囦欢鏍煎紡
                         documentBytes = outputStream.toByteArray();
                         headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
-                    }  else if (filename.endsWith(".docx") || filename.endsWith(".xlsx")) {
+                    }
+                    if (filename.endsWith(".doc") || filename.endsWith(".docx") ||  filename.endsWith(".xlsx")) {
                         documentBytes = FileCopyUtils.copyToByteArray(in);
                         headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
                         headers.setContentDispositionFormData("attachment", filename);
diff --git a/zt/core/src/main/java/com/zt/modules/oss/cloud/StorageConfig.java b/zt/core/src/main/java/com/zt/modules/oss/cloud/StorageConfig.java
index a1dd892..b4e9aa6 100644
--- a/zt/core/src/main/java/com/zt/modules/oss/cloud/StorageConfig.java
+++ b/zt/core/src/main/java/com/zt/modules/oss/cloud/StorageConfig.java
@@ -8,10 +8,10 @@
 
 package com.zt.modules.oss.cloud;
 
-import java.io.Serializable;
-
 import lombok.Data;
 
+import java.io.Serializable;
+
 /**
  * 浜戝瓨鍌ㄩ厤缃俊鎭�
  *
diff --git a/zt/core/src/main/java/com/zt/modules/oss/controller/SysOssController.java b/zt/core/src/main/java/com/zt/modules/oss/controller/SysOssController.java
index 070c5f0..b6caf03 100644
--- a/zt/core/src/main/java/com/zt/modules/oss/controller/SysOssController.java
+++ b/zt/core/src/main/java/com/zt/modules/oss/controller/SysOssController.java
@@ -8,7 +8,6 @@
 
 package com.zt.modules.oss.controller;
 
-import cn.hutool.core.io.IoUtil;
 import com.zt.common.annotation.LogOperation;
 import com.zt.common.annotation.QueryParam;
 import com.zt.common.constant.Constant;
@@ -30,21 +29,14 @@
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
-import org.springframework.util.FileCopyUtils;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 import springfox.documentation.annotations.ApiIgnore;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStream;
-import java.nio.file.Files;
 import java.util.Map;
 
 /**
diff --git a/zt/core/src/main/java/com/zt/modules/oss/controller/chunkUploadController.java b/zt/core/src/main/java/com/zt/modules/oss/controller/chunkUploadController.java
index 8e74938..5124257 100644
--- a/zt/core/src/main/java/com/zt/modules/oss/controller/chunkUploadController.java
+++ b/zt/core/src/main/java/com/zt/modules/oss/controller/chunkUploadController.java
@@ -5,7 +5,6 @@
 import io.swagger.annotations.Api;
 import org.apache.tomcat.util.http.fileupload.FileUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -26,11 +25,11 @@
 
     @PostMapping("/upload_chunk/")
     public Result<Boolean> uploadFile(@RequestParam("file") MultipartFile file,
-                             @RequestParam("uid") String uid,
-                             @RequestParam("chunk") int chunk,
-                             @RequestParam("filter_type") String filterType,
-                             @RequestParam("fileName") String fileName,
-                             @RequestParam(value = "chunks", required = false) String chunks) {
+                                      @RequestParam("uid") String uid,
+                                      @RequestParam("chunk") int chunk,
+                                      @RequestParam("filter_type") String filterType,
+                                      @RequestParam("fileName") String fileName,
+                                      @RequestParam(value = "chunks", required = false) String chunks) {
         try {
             String tempUploadDir = storageService.getConfig().getLocalPath() + File.separator + "TEMP_UPLOAD";
             File dir = new File(tempUploadDir);
diff --git a/zt/core/src/main/java/com/zt/modules/oss/encry/NoEncryptService.java b/zt/core/src/main/java/com/zt/modules/oss/encry/NoEncryptService.java
index 5795a97..7431ccd 100644
--- a/zt/core/src/main/java/com/zt/modules/oss/encry/NoEncryptService.java
+++ b/zt/core/src/main/java/com/zt/modules/oss/encry/NoEncryptService.java
@@ -1,13 +1,11 @@
 package com.zt.modules.oss.encry;
 
-import java.io.File;
-import java.io.InputStream;
-
+import cn.hutool.core.io.IoUtil;
+import com.zt.core.oss.encry.IOssEncryptService;
 import org.springframework.stereotype.Service;
 
-import cn.hutool.core.io.IoUtil;
-
-import com.zt.core.oss.encry.IOssEncryptService;
+import java.io.File;
+import java.io.InputStream;
 
 @Service("noEncryptService")
 public class NoEncryptService implements IOssEncryptService {
diff --git a/zt/core/src/main/java/com/zt/modules/oss/enums/OssStatus.java b/zt/core/src/main/java/com/zt/modules/oss/enums/OssStatus.java
index f0a672c..dad9916 100644
--- a/zt/core/src/main/java/com/zt/modules/oss/enums/OssStatus.java
+++ b/zt/core/src/main/java/com/zt/modules/oss/enums/OssStatus.java
@@ -20,7 +20,7 @@
 @Dictionary(type = "oss_status", name = "鏂囦欢鐘舵��")
 public enum OssStatus implements IDictionary {
 
-    TEMPORARY(0, "涓存椂"), PERMANENT(1, "姘镐箙");
+    TEMPORARY(100, "涓存椂"), PERMANENT(101, "姘镐箙");
 
     private Integer value;
     private String name;
diff --git a/zt/core/src/main/java/com/zt/modules/oss/mapstruct/OssMapper.java b/zt/core/src/main/java/com/zt/modules/oss/mapstruct/OssMapper.java
index b686019..30980df 100644
--- a/zt/core/src/main/java/com/zt/modules/oss/mapstruct/OssMapper.java
+++ b/zt/core/src/main/java/com/zt/modules/oss/mapstruct/OssMapper.java
@@ -1,9 +1,8 @@
 package com.zt.modules.oss.mapstruct;
 
-import org.mapstruct.Mapper;
-
 import com.zt.core.oss.dto.OssDto;
 import com.zt.modules.oss.model.SysOss;
+import org.mapstruct.Mapper;
 
 @Mapper(componentModel = "spring")
 public interface OssMapper {
diff --git a/zt/core/src/main/java/com/zt/modules/oss/model/OssFieldDefine.java b/zt/core/src/main/java/com/zt/modules/oss/model/OssFieldDefine.java
index 1da4510..e59e3b0 100644
--- a/zt/core/src/main/java/com/zt/modules/oss/model/OssFieldDefine.java
+++ b/zt/core/src/main/java/com/zt/modules/oss/model/OssFieldDefine.java
@@ -1,11 +1,10 @@
 package com.zt.modules.oss.model;
 
+import lombok.Data;
+import org.apache.commons.lang3.StringUtils;
+
 import java.util.ArrayList;
 import java.util.List;
-
-import lombok.Data;
-
-import org.apache.commons.lang3.StringUtils;
 
 @Data
 public class OssFieldDefine {
diff --git a/zt/core/src/main/java/com/zt/modules/oss/model/SysOss.java b/zt/core/src/main/java/com/zt/modules/oss/model/SysOss.java
index 719c461..6ed6cc9 100644
--- a/zt/core/src/main/java/com/zt/modules/oss/model/SysOss.java
+++ b/zt/core/src/main/java/com/zt/modules/oss/model/SysOss.java
@@ -8,16 +8,14 @@
 
 package com.zt.modules.oss.model;
 
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.zt.common.entity.BusiEntity;
-
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 /**
  * 鏂囦欢涓婁紶
diff --git a/zt/core/src/main/java/com/zt/modules/oss/service/SysOssService.java b/zt/core/src/main/java/com/zt/modules/oss/service/SysOssService.java
index 12edc47..4bc5321 100644
--- a/zt/core/src/main/java/com/zt/modules/oss/service/SysOssService.java
+++ b/zt/core/src/main/java/com/zt/modules/oss/service/SysOssService.java
@@ -1,6 +1,5 @@
 package com.zt.modules.oss.service;
 
-import ch.qos.logback.core.util.FileUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.io.IoUtil;
 import cn.hutool.core.util.NumberUtil;
@@ -13,8 +12,6 @@
 import com.zt.common.exception.ErrorCode;
 import com.zt.common.exception.RenException;
 import com.zt.common.service.BaseService;
-import com.zt.common.utils.MoveTotherFoldersUtils;
-import com.zt.common.utils.UUIDUtil;
 import com.zt.core.oss.dto.OssDto;
 import com.zt.core.oss.service.ISysOssService;
 import com.zt.modules.oss.annotation.DataFieldParser;
@@ -38,7 +35,6 @@
 import javax.crypto.Cipher;
 import javax.crypto.KeyGenerator;
 import java.io.*;
-import java.nio.file.Files;
 import java.security.Key;
 import java.security.SecureRandom;
 import java.util.*;
diff --git a/zt/core/src/main/resources/mapper/oss/SysOssDao.xml b/zt/core/src/main/resources/mapper/oss/SysOssDao.xml
index fc61e61..c4f240a 100644
--- a/zt/core/src/main/resources/mapper/oss/SysOssDao.xml
+++ b/zt/core/src/main/resources/mapper/oss/SysOssDao.xml
@@ -45,5 +45,6 @@
         </if>
         ORDER by a.busi_id,a.sort
     </select>
+    <select id="getOldFileList" resultType="com.zt.modules.oss.model.SysOss"></select>
 
 </mapper>
diff --git a/zt/core/src/main/resources/mapper/sys/SysDictTypeDao.xml b/zt/core/src/main/resources/mapper/sys/SysDictTypeDao.xml
index a344df1..f69d260 100644
--- a/zt/core/src/main/resources/mapper/sys/SysDictTypeDao.xml
+++ b/zt/core/src/main/resources/mapper/sys/SysDictTypeDao.xml
@@ -5,7 +5,7 @@
 
     <select id="getTenantDictTypes" resultType="com.zt.modules.sys.model.SysDictType">
         select a.*
-        from DJ_SYS_DICT_TYPE a
+        from SYS_DICT_TYPE a
         where a.is_delete = 0
         <if test="tenantId == 0">
             and a.tenant_id = #{tenantId}

--
Gitblit v1.9.1