From 3f69b4dfc585c4dfbc3c07a6acf5cdd838033636 Mon Sep 17 00:00:00 2001
From: liuguocan <527956374@qq.com>
Date: 星期二, 28 十一月 2023 14:45:49 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 consum-base/src/main/java/com/consum/base/controller/FinSysTenantUserController.java       |   65 
 consum-base/src/main/java/com/consum/base/controller/LWhWarningConfigController.java       |   24 
 consum-base/src/main/java/com/consum/base/service/LWhFormInventoryGoodsServiceImpl.java    |   15 
 deploy-jar-single/src/main/resources/application-dev.yml                                   |   13 
 admin-web/src/views/stock/inventorycount/inventorytask/index.vue                           |   15 
 consum-model-pojo/src/main/java/com/consum/model/po/FinSysTenantUser_mapper.java           |   12 
 consum-base/src/main/java/com/consum/base/pojo/query/LWhLedgerQry.java                     |    2 
 admin-web/src/views/stock/scrap/itemScrapping/edit.vue                                     |   11 
 consum-base/src/main/java/com/consum/base/pojo/LWhFormScrappedParam.java                   |    7 
 consum-base/src/main/java/com/consum/base/service/LWarehouseFlowCoreService.java           |    7 
 deploy-jar-single/src/main/resources/import/depTaiZhangExpTemp.xlsx                        |    0 
 consum-base/src/main/java/com/consum/base/controller/LWhFormTransferController.java        |   40 
 admin-web/src/views/components/myImport.vue                                                |    2 
 admin-web/src/views/stock/inventorycount/inventorytask/edit.vue                            |   32 
 consum-base/src/main/java/com/consum/base/controller/BaseGoodsTemplateController.java      |   56 
 consum-base/src/main/java/com/consum/base/service/LWhWarningServiceImpl.java               |    8 
 deploy-jar-single/src/main/resources/import/taiZhangExpTemp.xlsx                           |    0 
 consum-base/src/main/java/com/consum/base/core/WarehouseCoreService.java                   |    5 
 admin-web/src/utils/base.js                                                                |    3 
 admin-web/src/views/stock/inventorycount/inventorytask/inventory.vue                       |   20 
 consum-base/src/main/java/com/consum/base/service/LWhFormInventoryServiceImpl.java         |   41 
 consum-base/src/main/java/com/consum/base/controller/FinDepartLedgerController.java        |  108 ++
 consum-base/src/main/java/com/consum/base/controller/BaseGoodsModelsController.java        |   22 
 admin-web/src/views/stock/ledger/alertQuery/index.vue                                      |   55 
 consum-base/src/main/java/com/consum/base/service/LWhFormInventoryCoreService.java         |   69 
 admin-web/src/components/upload/index.vue                                                  |    2 
 admin-web/src/views/stock/procure/receiptDetails/index.vue                                 |   12 
 consum-base/src/main/java/com/consum/base/core/utils/MapUtils.java                         |   11 
 deploy-jar-single/pom.xml                                                                  |    7 
 consum-base/src/main/java/com/consum/base/service/LWhFormScrappedCoreService.java          |    2 
 admin-web/src/views/stock/transfer/transferissue/index.vue                                 |    2 
 consum-base/src/main/java/com/consum/base/controller/LWhFormOutputController.java          |   87 +
 consum-base/src/main/java/com/consum/base/controller/BaseWarehouseController.java          |   47 
 admin-web/src/views/stock/inventorycount/exceptionDetails/index.vue                        |   51 
 consum-base/src/main/java/com/consum/base/controller/FinSysTenantController.java           |   41 
 admin-web/src/views/stock/procure/purchaseOrder/edit.vue                                   |    6 
 consum-base/src/main/java/com/consum/base/controller/FinWarehouseLedgerController.java     |    6 
 consum-base/src/main/java/com/consum/base/service/FinWarehouseLedgerServiceImpl.java       |   54 +
 admin-web/src/views/stock/scrap/itemScrapping/index.vue                                    |    9 
 admin-web/src/views/stock/scrap/scrapDetails/index.vue                                     |   15 
 deploy-jar-single/src/main/java/com/consum/test/base/Base_Category.java                    |   74 
 consum-base/src/main/java/com/consum/base/controller/LWhFormProcureController.java         |  103 +-
 admin-web/src/views/stock/accessStock/outboundDetails/index.vue                            |   86 +
 admin-web/src/views/departmentitem/itemdis/distribution/index.vue                          |    2 
 consum-base/src/main/java/com/consum/base/service/LWhGoodsService.java                     |   15 
 consum-base/src/main/java/com/consum/base/controller/LWhHomeStatisticsController.java      |   45 +
 deploy-jar-single/src/main/java/com/consum/test/CodeGeneratorServiceTest.java              |   82 
 consum-base/src/main/java/com/consum/base/controller/LWhWarningController.java             |    6 
 consum-base/src/main/java/com/consum/base/controller/LWhFormInventoryController.java       |   74 +
 consum-base/src/main/java/com/consum/base/service/LWhFormScrappedServiceImpl.java          |   53 
 consum-base/src/main/java/com/consum/base/pojo/excel/专项支出用款申请书_map.xls                     |    0 
 consum-base/src/main/java/com/consum/base/service/LWhFormOutputCoreService.java            |   16 
 deploy-jar-single/src/main/resources/import/采购退货单.xls                                      |    0 
 admin-web/src/utils/settingIplatform.js                                                    |   22 
 admin-web/src/views/stock/transfer/transferApplication/index.vue                           |    2 
 consum-base/src/main/java/com/consum/base/pojo/query/LWhFormOutputQry.java                 |   10 
 deploy-jar-single/src/main/resources/application-prod.yml                                  |   13 
 admin-web/src/views/stock/ledger/inventoryAlert/index.vue                                  |   16 
 admin-web/src/utils/stockType.js                                                           |    2 
 admin-web/src/views/error-log/index.vue                                                    |    1 
 admin-web/public/index.html                                                                |    3 
 admin-web/src/views/departmentitem/itemscr/scrapping/index.vue                             |    2 
 admin-web/src/views/stock/accessStock/outbound/index.vue                                   |   71 
 consum-base/src/main/java/com/consum/base/pojo/query/WhWarningQry.java                     |    3 
 deploy-jar-single/src/main/java/com/consum/test/synchronizedCode.java                      |   94 +-
 consum-base/src/main/java/com/consum/base/controller/BaseCategoryController.java           |   49 
 admin-web/public/static/config.js                                                          |   17 
 admin-web/src/views/stock/transfer/transferdetails/index.vue                               |   17 
 admin-web/src/views/stock/ledger/inventoryQuery/index.vue                                  |   18 
 admin-web/src/views/stock/procure/purchaseOrder/index.vue                                  |  114 +-
 consum-base/src/main/java/com/consum/base/service/LWhFormTransferCoreService.java          |    3 
 admin-web/src/views/departmentitem/itemret/returnNote/index.vue                            |    2 
 admin-web/src/views/stock/scrap/itemScrapping/detail.vue                                   |   30 
 admin-web/src/views/stock/inventorycount/inventorytask/detail.vue                          |    6 
 consum-base/src/main/java/com/consum/base/controller/LWhFormScrappedController.java        |   75 +
 admin-web/src/views/stock/ledger/ledgerQuery/index.vue                                     |   23 
 /dev/null                                                                                  |   45 -
 consum-base/src/main/java/com/consum/base/controller/FinSysTenantDepartmentController.java |   44 
 consum-base/src/main/java/com/consum/base/controller/LWarehouseFlowController.java         |   22 
 consum-base/src/main/java/com/consum/base/controller/BaseWarehouseManagerController.java   |   11 
 consum-base/src/main/java/com/consum/base/controller/FinSysServerController.java           |   86 +
 admin-web/src/components/mySearch/SearchItem.vue                                           |   25 
 admin-web/src/views/error-page/401.vue                                                     |    2 
 consum-base/src/main/java/com/consum/base/service/LWarehouseFlowService.java               |  135 ++
 consum-base/src/main/java/com/consum/base/service/LWhFormProcureCoreService.java           |    2 
 consum-base/src/main/java/com/consum/base/core/service/LWhWarningCoreServiceImpl.java      |    6 
 86 files changed, 1,620 insertions(+), 891 deletions(-)

diff --git a/admin-web/public/index.html b/admin-web/public/index.html
index 729a200..1172a30 100644
--- a/admin-web/public/index.html
+++ b/admin-web/public/index.html
@@ -11,11 +11,10 @@
     <title><%= webpackConfig.name %></title>
   </head>
   <body>
+    <script type="text/javascript" src="<%= BASE_URL %>static/config.js"></script>
     <script src="<%= BASE_URL %>static/tinymce4.7.5/tinymce.min.js"></script>
     <script src="<%= BASE_URL %>static/js/jquery.min.js"></script>
     <script src="<%= BASE_URL %>static/js/reconnecting-websocket.js"></script>
-    <script src="<%= BASE_URL %>static/js/niuniucapture.js"></script>
-    <script src="<%= BASE_URL %>static/js/capturewrapper.js"></script>
     <script  src="https://map.qq.com/api/gljs?v=1.exp&key=PGNBZ-XZ7C3-MPE34-OF2VP-7MRH6-BOFUG"></script>
     <div id="app"></div>
     <!-- built files will be auto injected -->
diff --git a/admin-web/public/static/config.js b/admin-web/public/static/config.js
index 78c156c..2595dcf 100644
--- a/admin-web/public/static/config.js
+++ b/admin-web/public/static/config.js
@@ -1,25 +1,12 @@
 
-// 璇锋眰鎺ュ彛鍦板潃 濡傛灉娌℃湁閰嶇疆鑷姩鑾峰彇褰撳墠缃戝潃璺緞
-const VUE_APP_API_URL = process.env.VUE_APP_BASE_API || `${location.origin}`;
-const VUE_APP_WS_URL =
-  process.env.VUE_APP_WS_URL || (location.protocol === 'https' ? 'wss' : 'ws') + ':' + location.hostname;
-
 const SettingIplatform = {
   // 鏈嶅姟鍣ㄥ湴鍧�
-  // 鏈嶅姟鍣ㄥ湴鍧�
-  httpUrl: VUE_APP_API_URL,
   // 涓婁紶璺緞
   ftpUrl: 'https://yqzx.jinmingyuan.com/lowConsum',//寮�鍙�
-  // ftpUrl:'https://jmy.jinmingyuan.com/progress',// 娴嬭瘯,
-// 鎺ュ彛璇锋眰鍦板潃
-// apiBaseURL: 'http://116.198.39.83:8082/progress', // 姝e紡
-  // apiBaseURL: 'http://172.16.60.90:8082/progress',//寮�鍙�
+  // 鎺ュ彛璇锋眰鍦板潃
   apiBaseURL: 'http://172.16.20.2:8083/lowConsum',//寮�鍙�
   // apiBaseURL: 'https://yqzx.jinmingyuan.com/lowConsum',//寮�鍙�
-// apiBaseURL: 'https://jmy.jinmingyuan.com/progress',// 娴嬭瘯,
-  // socket杩炴帴
-  wsSocketUrl: VUE_APP_WS_URL,
-  debug: true //璋冭瘯寮�鍏�  true鏃朵細杈撳嚭璇锋眰鏃ュ織
+  debug: false //璋冭瘯寮�鍏�  true鏃朵細杈撳嚭璇锋眰鏃ュ織
 };
 
 export default SettingIplatform;
diff --git a/admin-web/public/static/js/capturewrapper.js b/admin-web/public/static/js/capturewrapper.js
deleted file mode 100644
index 0b1b9a0..0000000
--- a/admin-web/public/static/js/capturewrapper.js
+++ /dev/null
@@ -1,226 +0,0 @@
-var savedPictureContent = '';
-var extendName = '';
-var captureObj = null;
-var downloadUrl = '/CaptureInstall.exe?';
-
-/*
-鐢ㄤ簬鍒濆鍖栫墰鐗涙埅鍥炬帶浠讹紝姝ゅ嚱鏁伴渶瑕佸湪椤甸潰鍔犺浇瀹屾垚鍚庣珛鍗宠皟鐢�
-鍦ㄦ鍑芥暟涓紝鎮ㄥ彲浠ヨ缃浉鍏崇殑鎴浘鐨刄I鎺у埗锛屽锛岀敾绗斿ぇ灏忋�佽竟妗嗛鑹茬瓑绛� 銆愯繖閮ㄥ垎淇℃伅鍦╪iuniucapture.js涓篃鏈夐粯璁ゅ�硷紝鐩存帴淇敼榛樿鍊间篃鍙� 銆�
-*/
-function InitCapture() {
-  if (isMacintosh()) {
-    downloadUrl = '/CaptureInstall.dmg?';
-  } else if (isLinux()) {
-    if (isMips()) {
-      downloadUrl = '/CaptureInstall_mips.deb?';
-    } else if (isaarch()) {
-      downloadUrl = '/CaptureInstall_aarch.deb?';
-    } else if (isloongarch()) {
-      downloadUrl = '/CaptureInstall_loongarch64.deb?';
-    } else {
-      downloadUrl = '/CaptureInstall.deb?';
-    }
-  }
-  captureObj = new NiuniuCaptureObject();
-  captureObj.NiuniuAuthKey = "niuniu";
-  //姝ゅ鍙互璁剧疆鐩稿叧鍙傛暟
-  captureObj.TrackColor = rgb2value(255, 0, 0);
-  captureObj.EditBorderColor = rgb2value(0, 0, 255);
-
-  //璁剧疆宸ュ叿鏍忕殑TOOLTIP
-  //captureObj.ToolTipText = "tipRectangle|tipCircle|tipArrow|tipBrush|tipGlitter|tipMosaic|tipText|tipUndo|tipSave|tipCancel|tipFinish|Finish";
-
-  //濡傛灉瑕佽缃澶栫殑鍙傛暟锛屽線濡備笅杩欎釜鏁扮粍涓鍔狅紝渚嬪瑕侀殣钘忔寚瀹氱殑鎸夐挳
-  //captureObj.More_Ext_Params[0] = "2,rectangle|text";
-
-  //璁剧疆鎺т欢鍔犺浇瀹屾垚浠ュ強鎴浘瀹屾垚鐨勫洖璋冨嚱鏁�
-  captureObj.FinishedCallback = OnCaptureFinishedCallback;
-  captureObj.PluginLoadedCallback = PluginLoadedCallback;
-  captureObj.VersionCallback = VersionCallback;
-
-  //鍒濆鍖栨帶浠�
-  captureObj.InitNiuniuCapture();
-}
-
-//鐢ㄤ簬杩斿洖鎺т欢鐨勭増鏈彿
-function VersionCallback(ver) {
-  //captureObj.Version;
-  //鍙互鍦ㄦ鏍规嵁鏈�鏂扮殑鐗堟湰鍙蜂笌鎺т欢杩斿洖鐨勭増鏈彿瀵规瘮锛屽喅瀹氭槸鍚﹁鎻愮ず鍗囩骇
-  //alert(ver);
-}
-
-/*
-褰撴帶浠舵垚鍔熷姞杞藉悗鍥炶皟鐨勭殑鍑芥暟锛屾偍鍙互鍦ㄦ鎺у埗鐩稿簲鐨刄I鏄剧ず
-*/
-function PluginLoadedCallback(success) {
-  if (success) {
-    console.log('鎴浘鎻掍欢鍔犺浇鎴愬姛')
-  }else{
-    console.log('鎴浘鎻掍欢鍔犺浇澶辫触')
-  }
-}
-
-//鏍规嵁鏄惁鏄疌hrome鏂扮増鏈潵鎺у埗涓嬭浇涓嶅悓鐨勬帶浠跺畨瑁呭寘
-function ShowDownLoad() {
-  $('#info').html('濡傛灉瓒呰繃5绉掓棤鍝嶅簲锛岃鐐规<a target="_blank" href="' + downloadUrl + '" + date.getMinutes() + date.getSeconds()">瀹夎</a>');
-}
-
-/*
-褰撴彁绀哄畨瑁呮帶浠跺悗锛岄渶瑕侀噸鏂板姞杞芥帶浠舵潵浣跨敤鎴浘锛�
-涔熸湁閮ㄥ垎鏄渶瑕佸埛鏂版祻瑙堝櫒鐨�
-*/
-function ReloadPlugin() {
-  captureObj.LoadPlugin();
-  $('#btnReload').hide();
-  $('#btnCapture').show();
-  if (captureObj.pluginValid()) {
-    $('#downloadNotice').hide();
-    $('#info').html("鎴浘鎺т欢宸茬粡瀹夎瀹屾瘯锛屾偍鍙互杩涜鎴浘浜嗐��");
-  } else {
-    var browserInfo = "鏌ョ湅鎺т欢鏄惁琚祻瑙堝櫒闃绘锛屾垨閫氳繃娴忚鍣ㄨ缃腑鐨勫姞杞介」鏌ョ湅NiuniuCapture鏄惁鍔犺浇骞舵甯歌繍琛�";
-    $('#info').html('鎴浘鎺т欢鏈兘璇嗗埆鍒帮紝璇锋寜濡備笅姝ラ妫�鏌�:<br/>1. 纭畾鎮ㄥ凡缁忎笅杞芥帶浠跺畨瑁呭寘骞舵甯稿畨瑁� <br/>2. ' + browserInfo
-      + '<br/>3. 鍒锋柊椤甸潰鎴栭噸鏂板惎鍔ㄦ祻瑙堝櫒璇曚笅<br/>4. 濡傛灉浠嶆棫涓嶈兘鎴浘锛屽嚭澶ф嫑鍚э細'
-      + '<a target="_blank" style="color:#ff0000;" class="btn" href="http://shang.qq.com/wpa/qunwpa?idkey=a9dab7a14df03d19a2833e6b5f17a33639027d06213cf61bdb7554b04492b6e5">涓�閿姞缇ゆ眰鍔�</a>');
-  }
-}
-
-/*
-鎴浘鍏ュ彛鍑芥暟锛岀敤浜庢帶鍒禪I鏍囩鐨勬樉绀�
-*/
-function StartCapture() {
-
-  $('#imgshow').hide();
-  $('#imgshow').attr('src', "./image/loading.gif?v=1");
-  var captureRet = Capture();
-  //浠庤繑鍥炲�兼潵瑙f瀽鏄剧ず
-  if (captureRet == emCaptureFailed) {
-    ShowDownLoad();
-  } else if (captureRet == emCaptureUnknown) {
-    $('#info').html('姝e湪鎴浘涓�, 濡傛灉瓒呰繃5绉掓棤鍝嶅簲锛岃鐐规<a target="_blank" href="' + downloadUrl + '" + date.getMinutes() + date.getSeconds()">瀹夎</a>');
-  }
-}
-
-/*
-姝ゅ嚱鏁版槸鏍规嵁鍦ㄦ祴璇曢〉闈笂鐨勪笉鍚岄�夐」鏉ヨ繘琛屾埅鍥撅紝鍦ㄥ疄闄呭簲鐢ㄤ腑锛屾偍鍙渶瑕佹牴鎹偍瀹為檯闇�瑕佺殑鎴浘妯″紡锛屼紶鍏ョ浉搴旂殑鍙傛暟鍗冲彲
-*/
-function Capture() {
-  var defaultName = "1.png"; //姝ゅ涓轰簡闃叉涓婁紶鐨勬暟鎹繃澶э紝寤鸿浣跨敤JPG鏍煎紡
-  var hideFlag = 0;
-  var autoFlag = 0;
-  var captureRet = true;
-  if (autoFlag == 0) {
-    return captureObj.DoCapture("1.png", hideFlag, 0, 0, 0, 0, 0);
-  } else {
-    autoFlag = $('#getimagefromclipboard').is(':checked') ? 4 : 1;
-    if (autoFlag == 4) {
-      return captureObj.DoCapture("", 0, 4, 0, 0, 0, 0);
-    }
-    autoFlag = $('#showprewindow').is(':checked') ? 3 : 1;
-    if (autoFlag == 3) {
-      //姝ゆ椂濡傛灉x, y, width, height鍏ㄤ负0锛屽垯琛ㄧず棰勬埅鍥剧獥鍙g偣鍑烩�滃紑濮嬫埅鍥锯�濇椂锛屾墜宸ュ厛鎶婂尯鍩�
-      //x, y, width, height鍏ㄤ负1锛屽垯琛ㄧず棰勬埅鍥剧獥鍙g偣鍑烩�滃紑濮嬫埅鍥锯�濇椂锛岃嚜鍔ㄦ埅鍙栨暣涓闈�
-      //鍏朵粬鎯呭喌锛屽垯鑷姩鎴彇 x, y, width, height 鎸囧畾鐨勫尯鍩�
-      return captureObj.DoCapture("1.png", hideFlag, 3, 0, 0, 0, 0);
-    }
-    autoFlag = $('#fullscreen').is(':checked') ? 2 : 1;
-    if (autoFlag == 2) {
-      return captureObj.DoCapture("1.png", hideFlag, 2, 0, 0, 0, 0);
-    } else {
-      return captureObj.DoCapture("1.png", hideFlag, 1, $('#xpos').val(), $('#ypos').val(), $('#width').val(), $('#height').val());
-    }
-  }
-}
-
-/*
-姝ゅ鏄埅鍥惧悗鐨勫洖璋冨嚱鏁帮紝鐢ㄤ簬灏嗘埅鍥剧殑璇︾粏淇℃伅鍙嶉鍥炴潵锛屼綘闇�瑕佽皟鏁存鍑芥暟锛屽畬鎴愬浘鍍忔暟鎹殑浼犺緭涓庢樉绀�
-*/
-function OnCaptureFinishedCallback(type, x, y, width, height, extinfo, content, localpath) {
-  if (type < 0) {
-    //闇�瑕侀噸鏂板畨瑁呮帶浠�
-    // ShowDownLoad();
-    return;
-  }
-
-  //extinfo鏄竴涓墿灞曠殑json瀛楃涓诧紝鍙互鍙栧嚭鏉ュ悗杩涜瑙f瀽锛岀洰鍓嶇敤浜庤繑鍥炵偣鍑诲畬鎴愭埅鍥剧殑鎸夐挳鍚嶇О锛岀敤浜庢墿灞曟寜閽�
-  //姣斿锛歿"btnname":"finish"}
-  $('#show').hide();
-  switch (type) {
-    case 1: {
-      $('#info').html('鎴浘瀹屾垚锛� x:' + x + ',y:' + y + ',widht:' + width + ',height:' + height);
-      UploadCaptureData(content, localpath);
-      break;
-    }
-    case 2: {
-      $('#info').html('鎮ㄥ彇娑堜簡鎴浘');
-      break;
-    }
-    case 3: {
-      $('#info').html('鎮ㄤ繚瀛樹簡鎴浘鍒版湰鍦帮細 x:' + x + ',y:' + y + ',widht:' + width + ',height:' + height + ' ' + localpath);
-      UploadCaptureData(content, localpath);
-      break;
-    }
-    case 4: {
-      if (content != '') {
-        $('#info').html('浠庡壀璐存澘鑾峰彇鍒颁簡鎴浘锛� ' + localpath);
-        UploadCaptureData(content, localpath);
-      } else {
-        $('#info').html('浠庡壀璐存澘鑾峰彇鍥剧墖澶辫触銆�');
-      }
-      break;
-    }
-  }
-}
-
-//鎺у埗涓婁紶
-function UploadCaptureData(content, localpath) {
-  savedPictureContent = content;
-
-  //鑾峰彇鍥剧墖鐨勬墿灞曞悕
-  var pos = localpath.lastIndexOf('.');
-  extendName = localpath.substr(pos + 1);
-  if (extendName == '') {
-    extendname = 'jpg';
-  }
-  $('#show').html('鎴浘宸茬粡瀹屾垚锛岃鐐瑰嚮');
-  $('#show').show();
-  var autoUpload = $("#autoupload").attr("checked") == "checked" ? 1 : 0;
-  if (autoUpload) {
-    UploadData();
-  } else {
-    $('#btnUpload').show();
-  }
-}
-
-
-/*
-瀹為檯涓婁紶鍥惧儚鏁版嵁鐨勫嚱鏁帮紝姝ゅ涓昏鏄皢BASE64鐨勫浘鍍忔暟鎹紝閫氳繃AJAX鐨勬柟寮廝OST鍒版湇鍔″櫒淇濆瓨鎴愭枃浠讹紝骞朵笖鏄剧ず鍦ㄩ〉闈笂
-*/
-function UploadData() {
-  $('#show').html('鎴浘瀹屾垚锛屾鍦ㄤ笂浼狅紝璇风◢鍚�...');
-  $('#btnUpload').hide();
-  //涓婁紶鐨勬暟鎹櫎浜嗗浘鐗囧锛岃繕鍙互鍖呭惈鑷繁闇�瑕佷紶閫掔殑鍙傛暟
-  var data = "userid=test111&extendname=" + extendName + "&picdata=" + encodeURIComponent(savedPictureContent);
-
-  $.ajax({
-    type: "POST",
-    url: "./upload.php",
-    dataType: "json",
-    data: data,
-    success: function (obj) {
-      if (obj.code == 0) {
-        $('#show').html('涓婁紶鎴愬姛锛屽浘鐗囧湴鍧�锛�' + obj.info);
-        $('#imgshow').show();
-        $('#imgshow').attr('src', obj.info);
-      } else {
-        $('#show').html('涓婁紶澶辫触 :' + obj.info);
-      }
-    },
-    error: function () {
-      $('#show').html('鐢变簬缃戠粶鍘熷洜锛屼笂浼犲け璐ャ��');
-    }
-  });
-}
-
-function TestSetWatermarkPicture() {
-  captureObj.SetWatermarkPicture("iVBORw0KGgoAAAANSUhEUgAAAF0AAABQCAYAAAB773kdAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNXG14zYAAAAWdEVYdENyZWF0aW9uIFRpbWUAMDQvMDkvMTX+60k3AAAFXUlEQVR4nO2c3XWjSBCFr/fMMxoisDeC9UZgO4LRRLD4kIAmgsERrBwA5+AIRorAOAKPIlgUASsS0D5QaFiJn+6uamhkfW+W6KK4LhXd1QVX+/0eXPLQiwCs/Lj4yTbmMHno3QKY+3ERcexccUUnR979uLhiGZoIeejtAfzJCbDfBPxYCtiYGqxrZomeh94CwB2ADcfOxNgAuKNrN8JY9Dz0bgBE9Oe/pnYmSHWtEWmgDSfSEwCzI0c+AtW1zlBqoI2R6LW0UnHWs5Yj6tdqlGa0RT9KKxcM0oxJpCf4lVYqMgM7UyU7+ls7zWiJ3pBW2hw5Z7KGz7TSjLLol7TSi3Ka0Yn0JU7TCgDAj4tUw86k6bjWGRQXTUqi56E3B/BFza0PzRfSqpNe0fPQ+4zuG8VWw6lzoeuaE9KsFZVIT9CSVohMwca5kXV81zub6RT9klaM6UwzraIrpJWKVN+nyZMqHNOaZj51DUJ3Wqm4yUPvXuG4c+JG4ZgqzZxEfOMmBv00fjAdu1Dy1Y+LVf2DE9HpJ/ETwPWAjp0zWwC3flwcKrFNOT3CRXBJrnG0kv9fpFNufh3UpY/DQ7WaPYh+SSvWOaSZenqJcBHcJoc0c7Xf7y9pZVgeqkhPxvTig5Gwm436oHtFBrWFVhsvflwEiudLAPzFONcOwE19iieNRLNRHwF4gm8B6Gz+LsCrfM5Q+myNIUQ3bsohAp2oo2MD5jm5PndiVfQ89ALwZkTPJrtSNOaZcd5r8t0KtiM9Yozd+HFhHHE0ltPuFzHGdmJNdIEoDwTc4NiwFu02Iz1gjH2S6HUnG08MEwHXhyasTBmZi603Py7u5bwB8tBL0dyvo8KDdLeDrUiPDMftYCe6ArJtQiTnRol4pDOj/JsfF729I/T0R3XcQiUVUQfW34Z+iUa7jUgPDMe9KQoeAXhHmS7uALzTZ52Q7TdD3wLDcY2IRjq1lf1jMLR36U3RnQD4o+WQDcqFVGvUM0sSv/txkRmMO0E60iPDca2rzjz0Pueht0QZ3W2Cg757z0Nv2bYLz1ytRobjThCLdEaUr/24aOwRoftDAv35/hblPzJtsbuCWT+PSLRLRnpgMGbbNo7y9CvMFljXAF47cn0As6JYYDDmBJFIZ+TKp+MHYRVyty6NuZ7+Id81bYmUfaUiPYDZzel7vf2Mlt0p5AQH2UrrS3o6p67ggFDZVzKnB+joYe9gB+AeZTmVs/mgwgtKH1OY+bnw4yLhOiE9Zaz6H3VvUjvwNjpsn2sNzbp+F7ZqL3OUETX17oItyuhe9R6pgZXaCzl5i/LnPFVeUPapiAoOWIr0OhT1CYZLH1x2KFOJuNgV1kUHDgunFWRnJTbYoHyfS2bzJIOIXiHQHmET5TYPLkN0Axygi3oc8pyKPA4lODCw6ABA81yXhH+UmHvrMLjogFPCDy44MJLowEF4Tm8Kl+cxBAcGvpE2wdw0NkV881uH0SK9xhzmm8Ym7NDwxNuQjC66UO+hDmI1FFNGFx04lA3WA5xqbXOlqYoTohML2E0zO1juxlXFGdFp6W3zxZpL28t7VZwRnVjCTrTv4NCbUp0SnW5wNsRZjn3zrOOU6IQV0S3YNMY50SkiJWcya5eiHHBQdELyjabOvR3VOdFpc1tyxTjve6fW0DgnOsq5tHTfixPz84rRC151hB70bcL6A7k6uBbpc9jZwJ5h5CJXHddEv52obS0uoo+Aa6JnE7WthWuiJxO1rYVTotOTEzY2rB9devO1U6IDVjoFRtnx78I50QHRToHRdvy7cFJ0InLEhjjOii5QbXSuuljhrOgEp0LoXHWxwnXR05HGWuU/oYwAt7g/Ov4AAAAASUVORK5CYII=");
-}
diff --git a/admin-web/public/static/js/niuniucapture.js b/admin-web/public/static/js/niuniucapture.js
deleted file mode 100644
index 8aea5cf..0000000
--- a/admin-web/public/static/js/niuniucapture.js
+++ /dev/null
@@ -1,643 +0,0 @@
-/*******************************************************************************
- 鐗涚墰鎴浘鐨凧S閮ㄥ垎鐨勬牳蹇冩祦绋嬪皝瑁呭湪姝ゆ枃浠朵腑锛岀粷澶ч儴鍒嗘儏鍐典笅锛屾偍涓嶉渶瑕佷慨鏀规鏂囦欢涓殑JS鍐呭锛屽畠宸茬粡鍖呭惈浜嗗湪鎵�鏈夋祻瑙堝櫒涓婂簲鐢�
- 鐗涚墰鎴浘鎵�闇�瑕佺殑鎵�鏈変唬鐮侊紝鎮ㄥ彧闇�瑕佸幓淇敼capturewrapper.js锛屽皢鐩稿簲鐨勫嚱鏁颁慨鏀规垚涓庢偍鐨刄I鍖归厤鐨勫嵆鍙�
- *******************************************************************************/
-
-/*******************************************************************************/
-//璁剧疆鎴浘鐨勫弬鏁�
-var emPensize = 1;		//璁剧疆鐢荤瑪澶у皬
-var emDrawType = 2;		//璁剧疆鏄吘璁鏍艰繕鏄�360椋庢牸 0锛� 鑵捐椋庢牸   1锛� 360椋庢牸
-var emTrackColor = 3;		//鑷姩璇嗗埆鐨勮竟妗嗙殑棰滆壊
-var emEditBorderColor = 4;	//鏂囨湰杈撳叆鐨勮竟妗嗛鑹�
-var emTransparent = 5;		//宸ュ叿鏍忕殑閫忔槑搴�
-var emWindowAware = 6;		//璁剧疆鏄惁绂佺敤闅忕潃DPI鏀惧ぇ
-var emSetSaveName = 8;		//璁剧疆淇濆瓨鏃剁殑寮�濮嬫枃瀛�     鍏嶈垂鐗堟湰鏃犳晥
-var emSetMagnifierBkColor = 9; //璁剧疆鏀惧ぇ闀滅殑鑳屾櫙鑹诧紝涓嶈缃垯閫忔槑
-var emSetMagnifierLogoText = 10; //璁剧疆鏀惧ぇ闀滀笂鐨凩OGO瀛楃锛屽彲鎻愮ず蹇嵎閿紝濡傦細 鐗涚墰鎴浘(CTRL + SHIFT + A)     鍏嶈垂鐗堟湰鏃犳晥
-var emSetWatermarkPictureType = 20;						//璁剧疆姘村嵃鐨勭被鍨�
-var emSetWatermarkPicturePath = 21;						//璁剧疆姘村嵃鐨勮矾寰�
-var emSetWatermarkTextType = 22;						//璁剧疆姘村嵃鏂囧瓧鐨勭被鍨�
-var emSetWatermarkTextValue = 23;                       //璁剧疆姘村嵃鏂囧瓧鐨勫瓧绗︿覆
-var emSetMosaicType = 24;               //鎸囧畾椹禌鍏嬬殑绫诲瀷锛�1涓虹煩褰紝2涓虹敾绾�
-var emSetTooltipText = 25;               //鐢ㄤ簬璁剧疆宸ュ叿鏍忓浘鏍囩殑TOOLTIP鏂囧瓧
-var emSetMoreInfo = 26;							//璁剧疆棰濆鐨勪俊鎭紝鐢ㄤ簬鐗规畩闇�姹�
-var connectTimes = 0 //閾炬帴娆℃暟
-var maxConnectTimes = 9 //鏈�澶ч噸杩炴鏁�
-/*******************************************************************************/
-
-
-var emClosed = 1;
-var emConnected = 2;
-var emConnecting = 3;
-
-var emCaptureSuccess = 0;
-var emCaptureFailed = 1;
-var emCaptureUnknown = 2;
-
-var emCmdReady = -1;
-var emCmdCapture = 0;
-var emCmdSaveFile = 1;
-
-
-function isMacintosh() {
-  return navigator.platform.indexOf('Mac') > -1;
-}
-
-function isLinux() {
-  return navigator.platform.indexOf('Linux') > -1;
-}
-
-function isMips() {
-  return navigator.platform.indexOf('mips') > -1;
-}
-
-function isaarch() {
-  return navigator.platform.indexOf('aarch') > -1;
-}
-
-function isloongarch() {
-  return navigator.platform.indexOf('loongarch') > -1;
-}
-
-function rgb2value(r, g, b) {
-  return r | g << 8 | b << 16;
-}
-
-var captureObjSelf = null;
-
-function onpluginLoaded() {
-  captureObjSelf.pluginLoaded(false);
-}
-
-function NiuniuCaptureObject() {
-  var self = this;
-  captureObjSelf = this;
-  this.PenSize = 2;
-  this.DrawType = 0;
-  this.TrackColor = rgb2value(255, 0, 0);
-  this.EditBorderColor = rgb2value(255, 0, 0);
-  this.Transparent = 255;
-  this.WindowAware = 1;
-  this.MosaicType = 1;
-  this.SaveName = "娴嬭瘯淇濆瓨";
-  this.MagnifierLogoText = "娴嬭瘯鎴浘";
-  this.WatermarkPictureType = "2|100|100|400|400|20";
-  this.WatermarkPicturePath = "";
-  this.WatermarkTextType = "2|100|100|100|40|20|0|150|30|80,55,55,55";
-  this.WatermarkTextValue = "";
-  this.NiuniuAuthKey = "";
-  this.ToolTipText = "";  //tipRectangle|tipCircle|tipArrow|tipBrush|tipGlitter|tipMosaic|tipText|tipUndo|tipSave|tipCancel|tipFinish|txtFinish
-  this.MoreInfo = "1,100|300|600";
-
-  this.More_Ext_Params = new Array();
-
-  this.useCustomizedProtoco = true;   //鏄惁浣跨敤娴忚鍣ㄨ嚜瀹氫箟鍗忚鍔爓ebsocket
-
-  this.IsWaitCustomizedCallBack = false;
-  this.autoConnectAfterPageLoad = true;
-  this.IsFirstConnect = true;
-  this.IsEverConnected = false;
-  this.reconnectTryTime = 0;
-  this.TimeIntervalID = -1;
-  this.ReceivedEchoBack = false;
-
-  this.Version = "1.0.0.0";
-  this.hostPort = "30101,30102";
-  this.hostPortIndex = 0;
-  this.CaptureName = "NiuniuCapture";
-  this.NiuniuSocket = null;
-  this.connectState = emClosed;
-
-  this.SocketTimeStamp = new Date().getTime();
-  this.TimeOutID = -1;
-
-  this.FinishedCallback = null;
-  this.PluginLoadedCallback = null;
-  this.VersionCallback = null;
-  this.OnConnectFailed = function (isReconnect) {
-    self.WriteLog(isReconnect ? "reconnect failed, the capture control process is exit." : "connect failed at the first time.");
-  }
-
-  this.LoadPlugin = function () {
-    var obj = $('#capturecontainer');
-    if (obj.length < 1) {
-      $("body").append('<div id="capturecontainer" style="height:0px;width:0px;"></div>');
-      obj = $('#capturecontainer');
-    }
-    obj.html('');
-    obj.html('<object id="niuniuCapture" type="application/x-niuniuwebcapture" width="0" height="0"><param name="onload" value="onpluginLoaded" /></object>');
-
-    var iframeObj = $('startCaptureFrame');
-    if (iframeObj.length < 1) {
-      $("body").append('<iframe id="startCaptureFrame" style="display:none;"></iframe>');
-    }
-  }
-
-  this.niuniuCapture = function () {
-    return document.getElementById('niuniuCapture');
-  }
-
-  this.addEvent = function (obj, name, func) {
-    if (obj.attachEvent) {
-      obj.attachEvent("on" + name, func);
-    } else {
-      obj.addEventListener(name, func, false);
-    }
-  }
-
-  this.pluginValid = function () {
-    try {
-      if (self.niuniuCapture().valid) {
-        return true;
-      }
-    } catch (e) {
-    }
-    return false;
-  }
-
-  this.OnCaptureFinished = function (x, y, width, height, content, localpath) {
-    self.OnCaptureFinishedEx(1, x, y, width, height, "", content, localpath);
-  }
-
-  this.OnCaptureFinishedEx = function (type, x, y, width, height, info, content, localpath) {
-    //浜ょ粰涓婂眰鍘诲鐞嗘埅鍥惧畬鎴愬悗鐨勪簨椤�
-    if (self.FinishedCallback != null) {
-      self.FinishedCallback(type, x, y, width, height, info, content, localpath);
-    } else {
-      alert("鎴浘瀹屾垚鐨勪簨浠舵湭缁戝畾锛屽皢涓嶈兘瀵瑰浘鐗囪繘琛屽鐞嗭紝璇锋寚瀹欶inishedCallback鍥炶皟鍑芥暟");
-    }
-  }
-
-  this.pluginLoaded = function (fromWebsocket) {
-    if (!fromWebsocket && !self.pluginValid()) {
-      if (self.PluginLoadedCallback != null) {
-        self.PluginLoadedCallback(false);
-      }
-      return false;
-    }
-
-    self.GetVersion();
-    if (self.PluginLoadedCallback != null) {
-      self.PluginLoadedCallback(true);
-    }
-
-    if (!self.pluginValid()) {
-      return false;
-    }
-    //姝ゅ嚱鏁板繀闇�璋冪敤锛屼紶閫掓纭殑鍙傛暟锛屼笖蹇呴渶鍏堜簬鍏朵粬鍑芥暟璋冪敤
-    self.niuniuCapture().InitCapture(self.NiuniuAuthKey);
-
-    self.niuniuCapture().InitParam(emPensize, self.PenSize);
-    self.niuniuCapture().InitParam(emDrawType, self.DrawType);
-    self.niuniuCapture().InitParam(emTrackColor, self.TrackColor);
-    self.niuniuCapture().InitParam(emEditBorderColor, self.EditBorderColor);
-    self.niuniuCapture().InitParam(emTransparent, self.Transparent);
-
-    self.niuniuCapture().InitParam(emSetSaveName, self.SaveName);
-    self.niuniuCapture().InitParam(emSetMagnifierLogoText, self.MagnifierLogoText);
-    self.niuniuCapture().InitParam(emSetMosaicType, self.MosaicType);
-
-    //璁剧疆宸ュ叿鏍忎笂鐨勬寜閽甌OOLTIP
-    self.niuniuCapture().InitParam(emSetTooltipText, self.ToolTipText);
-
-    //self.niuniuCapture().InitParam(emSetMoreInfo, self.MoreInfo);
-
-    for (i = 0; i < self.More_Ext_Params.length; i++) {
-      self.niuniuCapture().InitParam(emSetMoreInfo, self.More_Ext_Params[i]);
-    }
-
-
-    //niuniuCapture().InitParam(23, "娴嬭瘯鏂囧瓧.");
-    //姝ASE64瀛楃涓茶〃绀虹墰鐗涢粯璁ょ殑姘村嵃鍥剧墖锛屽彲浠ユ浛鎹�
-    // niuniuCapture().InitParam(21, "iVBORw0KGgoAAAANSUhEUgAAAF0AAABQCAYAAAB773kdAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNXG14zYAAAAWdEVYdENyZWF0aW9uIFRpbWUAMDQvMDkvMTX+60k3AAAFXUlEQVR4nO2c3XWjSBCFr/fMMxoisDeC9UZgO4LRRLD4kIAmgsERrBwA5+AIRorAOAKPIlgUASsS0D5QaFiJn+6uamhkfW+W6KK4LhXd1QVX+/0eXPLQiwCs/Lj4yTbmMHno3QKY+3ERcexccUUnR979uLhiGZoIeejtAfzJCbDfBPxYCtiYGqxrZomeh94CwB2ADcfOxNgAuKNrN8JY9Dz0bgBE9Oe/pnYmSHWtEWmgDSfSEwCzI0c+AtW1zlBqoI2R6LW0UnHWs5Yj6tdqlGa0RT9KKxcM0oxJpCf4lVYqMgM7UyU7+ls7zWiJ3pBW2hw5Z7KGz7TSjLLol7TSi3Ka0Yn0JU7TCgDAj4tUw86k6bjWGRQXTUqi56E3B/BFza0PzRfSqpNe0fPQ+4zuG8VWw6lzoeuaE9KsFZVIT9CSVohMwca5kXV81zub6RT9klaM6UwzraIrpJWKVN+nyZMqHNOaZj51DUJ3Wqm4yUPvXuG4c+JG4ZgqzZxEfOMmBv00fjAdu1Dy1Y+LVf2DE9HpJ/ETwPWAjp0zWwC3flwcKrFNOT3CRXBJrnG0kv9fpFNufh3UpY/DQ7WaPYh+SSvWOaSZenqJcBHcJoc0c7Xf7y9pZVgeqkhPxvTig5Gwm436oHtFBrWFVhsvflwEiudLAPzFONcOwE19iieNRLNRHwF4gm8B6Gz+LsCrfM5Q+myNIUQ3bsohAp2oo2MD5jm5PndiVfQ89ALwZkTPJrtSNOaZcd5r8t0KtiM9Yozd+HFhHHE0ltPuFzHGdmJNdIEoDwTc4NiwFu02Iz1gjH2S6HUnG08MEwHXhyasTBmZi603Py7u5bwB8tBL0dyvo8KDdLeDrUiPDMftYCe6ArJtQiTnRol4pDOj/JsfF729I/T0R3XcQiUVUQfW34Z+iUa7jUgPDMe9KQoeAXhHmS7uALzTZ52Q7TdD3wLDcY2IRjq1lf1jMLR36U3RnQD4o+WQDcqFVGvUM0sSv/txkRmMO0E60iPDca2rzjz0Pueht0QZ3W2Cg757z0Nv2bYLz1ytRobjThCLdEaUr/24aOwRoftDAv35/hblPzJtsbuCWT+PSLRLRnpgMGbbNo7y9CvMFljXAF47cn0As6JYYDDmBJFIZ+TKp+MHYRVyty6NuZ7+Id81bYmUfaUiPYDZzel7vf2Mlt0p5AQH2UrrS3o6p67ggFDZVzKnB+joYe9gB+AeZTmVs/mgwgtKH1OY+bnw4yLhOiE9Zaz6H3VvUjvwNjpsn2sNzbp+F7ZqL3OUETX17oItyuhe9R6pgZXaCzl5i/LnPFVeUPapiAoOWIr0OhT1CYZLH1x2KFOJuNgV1kUHDgunFWRnJTbYoHyfS2bzJIOIXiHQHmET5TYPLkN0Axygi3oc8pyKPA4lODCw6ABA81yXhH+UmHvrMLjogFPCDy44MJLowEF4Tm8Kl+cxBAcGvpE2wdw0NkV881uH0SK9xhzmm8Ym7NDwxNuQjC66UO+hDmI1FFNGFx04lA3WA5xqbXOlqYoTohML2E0zO1juxlXFGdFp6W3zxZpL28t7VZwRnVjCTrTv4NCbUp0SnW5wNsRZjn3zrOOU6IQV0S3YNMY50SkiJWcya5eiHHBQdELyjabOvR3VOdFpc1tyxTjve6fW0DgnOsq5tHTfixPz84rRC151hB70bcL6A7k6uBbpc9jZwJ5h5CJXHddEv52obS0uoo+Aa6JnE7WthWuiJxO1rYVTotOTEzY2rB9devO1U6IDVjoFRtnx78I50QHRToHRdvy7cFJ0InLEhjjOii5QbXSuuljhrOgEp0LoXHWxwnXR05HGWuU/oYwAt7g/Ov4AAAAASUVORK5CYII=");
-    //娉細浠ヤ笂璁剧疆LOGO鍙婁繚瀛樺悕鐨勬帴鍙o紝鍏嶈垂鐗堟湰鏃犳晥
-
-    //娣诲姞鎺т欢鐨勪簨浠剁洃鍚�
-    self.addEvent(self.niuniuCapture(), 'CaptureFinishedEx', self.OnCaptureFinishedEx);
-    //浠ヤ笅杩欎釜浜嬩欢涓昏鏄敤浜庡吋瀹规棫鐨勬祻瑙堝櫒鎺т欢鐨勪簨浠堕�氱煡
-    self.addEvent(self.niuniuCapture(), 'CaptureFinished', self.OnCaptureFinished);
-  }
-
-  this.SetWatermarkPicture = function (watermarPicData) {
-    self.WatermarkPicturePath = watermarPicData;
-    //璁剧疆娴嬭瘯鐨勬按鍗板浘鐗囩殑Base64瀛楃涓诧紝姝ゆ搷浣滃簲璇ユ槸鍦ㄩ〉闈㈠姞杞戒腑澶勭悊姣旇緝鍚堥��
-    if (!self.pluginValid())
-      return;
-    self.niuniuCapture().InitParam(emSetWatermarkPicturePath, self.WatermarkPicturePath);
-    self.niuniuCapture().InitParam(emSetWatermarkPictureType, self.WatermarkPictureType);
-  }
-
-  this.SetWatermarkText = function (watermarkText) {
-    self.WatermarkTextValue = watermarkText;
-    //璁剧疆娴嬭瘯鐨勬按鍗版枃瀛楋紝姝ゆ搷浣滃簲璇ユ槸鍦ㄩ〉闈㈠姞杞戒腑澶勭悊姣旇緝鍚堥��
-    if (!self.pluginValid())
-      return;
-    //nShowType|nMinWidth|nMinHeight|nVerticalInterval|nOffset|nFontSize|nIsBold|nTextWidth|nTextHeight|colorText
-    self.niuniuCapture().InitParam(emSetWatermarkTextValue, self.WatermarkTextValue);
-    self.niuniuCapture().InitParam(emSetWatermarkTextType, self.WatermarkTextType);
-  }
-
-
-  this.SavePicture = function (savename) {
-    if (self.pluginValid()) {
-      self.niuniuCapture().SavePicture(savename);
-    }
-  }
-
-  this.GetCursorPosition = function () {
-    if (self.pluginValid()) {
-      var val = self.niuniuCapture().GetCursorPosition();
-      return val;
-    }
-    return "";
-  }
-
-  this.NewCaptureParamObject = function (defaultpath, hideCurrWindow, autoCaptureFlag, x, y, width, height) {
-    var obj = new Object();
-    obj.CmdType = 1;
-    obj.IsGBK = 0;				//鏄惁鏄疓BK缂栫爜锛岃繖鏍蜂細娑夊強鍒扮紪鐮佽浆鎹�
-    obj.AuthKey = self.NiuniuAuthKey;  //
-    obj.Pensize = self.PenSize;		//璁剧疆鐢荤瑪澶у皬
-    obj.DrawType = self.DrawType;			//璁剧疆鏄吘璁鏍艰繕鏄�360椋庢牸
-    obj.TrackColor = self.TrackColor;		//鑷姩璇嗗埆鐨勮竟妗嗙殑棰滆壊
-    obj.EditBorderColor = self.EditBorderColor;	//鏂囨湰杈撳叆鐨勮竟妗嗛鑹�
-    obj.Transparent = self.Transparent;		//宸ュ叿鏍忕殑閫忔槑搴�
-    obj.SetSaveName = self.SaveName;									//璁剧疆淇濆瓨鏃剁殑寮�濮嬫枃瀛�
-    obj.SetMagnifierLogoText = self.MagnifierLogoText;						//璁剧疆鏀惧ぇ闀滀笂鐨凩OGO瀛楃
-    obj.SetWatermarkPictureTypeEx = self.WatermarkPictureType;						//璁剧疆姘村嵃鐨勭被鍨�
-    obj.SetWatermarkPicturePath = self.WatermarkPicturePath;						//璁剧疆姘村嵃鐨勮矾寰�
-    obj.SetWatermarkTextTypeEx = self.WatermarkTextType;							//璁剧疆姘村嵃鏂囧瓧鐨勭被鍨�
-    obj.SetWatermarkTextValue = self.WatermarkTextValue;						//璁剧疆姘村嵃鏂囧瓧
-    obj.MosaicType = self.MosaicType;          //璁剧疆椹禌鍏嬬殑绫诲瀷
-    obj.SetToolbarText = self.ToolTipText;
-    obj.MoreInfo = this.MoreInfo;
-    if (self.More_Ext_Params.length > 0) {
-      obj.more_ext_count = self.More_Ext_Params.length;
-      for (i = 0; i < self.More_Ext_Params.length; i++) {
-        switch (i) {
-          case 0:
-            obj.more_ext0 = self.More_Ext_Params[i];
-            break;
-          case 1:
-            obj.more_ext1 = self.More_Ext_Params[i];
-            break;
-          case 2:
-            obj.more_ext2 = self.More_Ext_Params[i];
-            break;
-          case 3:
-            obj.more_ext3 = self.More_Ext_Params[i];
-            break;
-          case 4:
-            obj.more_ext4 = self.More_Ext_Params[i];
-            break;
-          case 5:
-            obj.more_ext5 = self.More_Ext_Params[i];
-            break;
-          case 6:
-            obj.more_ext6 = self.More_Ext_Params[i];
-            break;
-          case 7:
-            obj.more_ext7 = self.More_Ext_Params[i];
-            break;
-          case 8:
-            obj.more_ext8 = self.More_Ext_Params[i];
-            break;
-          case 9:
-            obj.more_ext9 = self.More_Ext_Params[i];
-            break;
-        }
-      }
-    }
-
-    //浠ヤ笅鏄埅鍥炬椂浼犻�掔殑鍙傛暟
-    obj.DefaultPath = defaultpath;
-    obj.HideCurrentWindow = hideCurrWindow;
-    obj.AutoCaptureFlag = autoCaptureFlag;
-    obj.x = x;
-    obj.y = y;
-    obj.Width = width;
-    obj.Height = height;
-    return obj;
-  }
-
-  this.DoCapture = function (name, hide, AutoCapture, x, y, width, height) {
-    if (self.IsNeedCustomizedProtocol()) {
-      return self.DoCaptureForCustomize(name, hide, AutoCapture, parseInt(x), parseInt(y), parseInt(width), parseInt(height));
-    }
-
-    if (!self.pluginValid()) {
-      return emCaptureFailed;
-    }
-    self.niuniuCapture().Capture(name, hide, AutoCapture, x, y, width, height);
-    return emCaptureSuccess;
-  }
-
-  this.InitNiuniuCapture = function () {
-    self.LoadPlugin();
-    setTimeout("captureObjSelf.InitWebSocketAndBindCallback();", 200);
-  }
-
-  this.InitWebSocketAndBindCallback = function () {
-    if (!self.autoConnectAfterPageLoad || !self.IsNeedCustomizedProtocol()) {
-      return;
-    }
-    self.connectHost();
-  }
-
-  this.getNextPort = function () {
-    //init port params flag
-    //杩涜鎷嗗垎澶勭悊 self.hostPort;
-    var portArray = self.hostPort.split(",");
-    if (portArray.length < 1) {
-      alert("鏈嶅姟绔彛涓虹┖");
-      return 30101;
-    }
-    if (self.hostPortIndex < 0) {
-      self.hostPortIndex = 0;
-    }
-    if (self.hostPortIndex > portArray.length - 1) {
-      self.hostPortIndex = portArray.length - 1;
-    }
-    var nPort = parseInt(portArray[self.hostPortIndex]);
-    self.hostPortIndex++;
-    if (self.hostPortIndex > portArray.length - 1) {
-      self.hostPortIndex = 0;
-    }
-    return nPort;
-  }
-
-  this.connectHost = function () {
-    connectTimes++
-    if (self.NiuniuSocket != null) {
-      self.WriteLog("connectHost NiuniuSocket is not null, return.");
-      return;
-    }
-    clearTimeout(self.TimeOutID);
-    self.connectState = emConnecting;
-
-    if(connectTimes>maxConnectTimes){
-      clearInterval(self.TimeIntervalID);
-    }
-    try {
-      var wshosts = ['127.0.0.1', 'localhost'];
-      for (var i in wshosts) {
-        try {
-          var host = "ws://127.0.0.1:" + self.getNextPort() + "/" + self.CaptureName;
-          self.NiuniuSocket = new WebSocket(host);
-          break;
-        } catch (ee) {
-          var ggg = 0;
-        }
-      }
-
-      //OutputLog('Socket Status: '+socket.readyState);
-      self.NiuniuSocket.onopen = function (evt) {
-        self.NiuniuSocket.send('0' + self.SocketTimeStamp);
-        self.WriteLog("NiuniuSocket.onopen.");
-        clearTimeout(self.TimeOutID);
-      }
-
-      self.NiuniuSocket.onmessage = function (msg) {
-        var str = "";
-        str = msg.data;
-        var id = str.substr(0, 1);
-        var arg1 = str.substr(1);
-        clearTimeout(self.TimeOutID);
-        if (id == "0") {
-          self.hostPortIndex--;
-          //琛ㄧず杩炴帴鎴愬姛锛屾鏃跺簲璇ユ彁绀哄彲浠ユ埅鍥句簡
-          self.connectState = emConnected;
-          self.pluginLoaded(true);
-          self.IsEverConnected = true;
-          self.IsFirstConnect = false;
-          if (self.IsWaitCustomizedCallBack) {
-            setTimeout("captureObjSelf.SendReadyRecvData();", 3);
-          }
-          self.WriteLog("connect sucess.");
-          self.ReceivedEchoBack = true;
-          clearInterval(self.TimeIntervalID);
-          self.TimeIntervalID = setInterval("captureObjSelf.LoopEchoMessage()", 3000);
-        }
-        if (id == "1") {
-          //瑙f瀽娑堟伅
-          var _aoResult = eval("(" + arg1 + ")");
-          self.ReceivedEchoBack = true;
-          if (_aoResult.command == "echo") {
-            self.WriteLog("received echo");
-            return;
-          }
-          self.WriteLog("received capturedata.");
-          if (_aoResult.command == "version") {
-            self.WriteLog(_aoResult.Ver);
-            self.VersionCallback(_aoResult.Ver);
-          } else {
-            self.OnCaptureFinishedEx(_aoResult.Type, _aoResult.x, _aoResult.y, _aoResult.Width, _aoResult.Height, _aoResult.Info, _aoResult.Content, _aoResult.LocalPath);
-          }
-        }
-      }
-
-      self.NiuniuSocket.onclose = function (evt) {
-        self.OnWebSocketError("self.NiuniuSocket.onclose." + evt.data);
-      }
-      self.NiuniuSocket.onerror = function (evt) {
-        self.OnWebSocketError("self.NiuniuSocket.onerror." + evt.data);
-      };
-
-    } catch (e) {
-      self.OnWebSocketError("connect exception." + e.message);
-    }
-  }
-
-  this.WriteLog = function (txt) {
-    //鍐欐棩蹇�
-    try {
-      if(txt==='connect failed at the first time.'){
-        self.PluginLoadedCallback(false);
-      }
-    } catch (e) {
-
-    }
-  }
-
-  this.OnWebSocketError = function (type) {
-    //濡傛灉涓嶅浜庤繛鎺ユ垚鍔熺姸鎬侊紝璇存槑涓嶆槸鏂紑杩炴帴锛岃�屾槸杩炴帴澶辫触
-    var isConnectedFailed = false;
-    if (self.connectState != emConnected) {
-      isConnectedFailed = true;
-    }
-    self.WriteLog(type);
-    self.ReceivedEchoBack = false;
-    self.connectState = emClosed;
-
-    if (self.NiuniuSocket != null) {
-      self.NiuniuSocket.close();
-    }
-
-    self.NiuniuSocket = null;
-    clearTimeout(self.TimeOutID);
-    clearInterval(self.TimeIntervalID);
-
-    if (isConnectedFailed) {
-      if (self.IsFirstConnect) {
-        self.IsFirstConnect = false;
-        if (self.OnConnectFailed != null) {
-          self.OnConnectFailed(false);
-        }
-        return;
-      }
-
-      if (self.IsEverConnected) {
-        self.reconnectTryTime++;
-        //閫氱煡杩炴帴杩炴帴鏂紑
-        if (self.reconnectTryTime > 3) {
-          self.IsEverConnected = false;
-          self.reconnectTryTime = 0;
-          if (self.OnConnectFailed != null) {
-            self.OnConnectFailed(true);
-          }
-          return;
-        }
-      }
-    }
-    if(connectTimes>maxConnectTimes){
-      return
-    }
-    self.TimeOutID = setTimeout("captureObjSelf.connectHost();", 800);
-  }
-
-  this.LoopEchoMessage = function () {
-    if (!self.ReceivedEchoBack) {
-      self.OnWebSocketError("this.LoopEchoMessage, !self.ReceivedEchoBack");
-      self.ReceivedEchoBack = false;
-      clearInterval(self.TimeIntervalID);
-      self.TimeIntervalID = setInterval("captureObjSelf.LoopEchoMessage()", 3000);
-      return;
-    }
-    self.ReceivedEchoBack = false;
-    clearTimeout(self.TimeOutID);
-    if (self.connectState != emConnected) {
-      clearInterval(self.TimeIntervalID);
-      return;
-    }
-    var obj = new Object();
-    obj.command = "echo";
-    self.NiuniuSocket.send("1" + encodeURIComponent(JSON.stringify(obj)));
-  }
-
-  this.SendReadyRecvData = function () {
-    self.WriteLog("SendReadyRecvData.");
-    var obj = self.NewCaptureParamObject("", 0, 0, 0, 0, 0, 0);
-    obj.CmdType = -1;
-    self.NiuniuSocket.send("1" + encodeURIComponent(JSON.stringify(obj)));
-  }
-
-  this.DoCaptureForCustomize = function (name, hide, AutoCapture, x, y, width, height) {
-    var obj = self.NewCaptureParamObject(name, hide, AutoCapture, x, y, width, height);
-    try {
-      //鍚姩瀹㈡埛绔紝鎴栬�呴�氳繃websocket鍘诲彂閫佹暟鎹�
-      if (self.connectState == emConnected) {
-        var json = JSON.stringify(obj);
-        self.NiuniuSocket.send('1' + encodeURIComponent(json));
-      } else {
-        //棣栨鍚姩鏃讹紝涓嶆敮鎸佹按鍗帮紝鍚﹀垯浼氳繃闀�
-        obj.SetWatermarkPicturePath = "";
-        //obj.SetWatermarkTextValue = "";
-        console.log(obj)
-        var json = JSON.stringify(obj);
-        self.WriteLog(json.length);
-        var newUrl = self.CaptureName + "://" + encodeURIComponent(json);
-        if (isLinux()) {
-          newUrl = self.CaptureName + "://xxxx";
-        }
-        self.WriteLog(newUrl.length);
-
-        //鍚姩瀹㈡埛绔�
-        $('#startCaptureFrame').attr('src', newUrl);
-
-        self.IsWaitCustomizedCallBack = true;
-        self.connectHost();
-        return emCaptureUnknown;
-      }
-
-      return emCaptureSuccess;
-    } catch (e) {
-      alert('message' + e.message);
-    }
-    return emCaptureUnknown;
-  }
-
-
-  this.IsNeedCustomizedProtocol = function () {
-    if (isMacintosh()) {
-      return true;
-    }
-    if (!self.useCustomizedProtoco) {
-      return false;
-    }
-
-    if (self.pluginValid()) {
-      return false;
-    }
-
-    try {
-      var agent = window.navigator.userAgent.toLowerCase();
-      var isIE = agent.indexOf("compatible") > -1 && agent.indexOf("msie") > -1;
-      if (isIE) {
-        return false;
-      }
-
-      var isIE11 = agent.indexOf('trident') > -1 && agent.indexOf("rv:11.0") > -1;
-      if (isIE11) {
-        return false;
-      }
-      var isQQBrowser = agent.indexOf("qqbrowser") != -1;
-      //if(isQQBrowser)
-      //{
-      //    return false;
-      //}
-      var isUBrowser = agent.indexOf("ubrowser") != -1;
-      if (isUBrowser) {
-        return false;
-      }
-
-      //濡傛灉鏄痜irefox 涓斿湪50鐗堟湰浠ヤ笂锛屽垯闇�瑕�
-      var isFirefox = agent.indexOf("firefox") != -1;
-      if (isFirefox) {
-        return true;
-      }
-
-      var isEdge = agent.indexOf("edge") != -1;
-      if (isEdge) {
-        return true;
-      }
-
-      var isChrome = agent.indexOf("chrome") != -1;
-      if (isChrome) {
-        return true;
-      }
-      return false;
-    } catch (e) {
-      self.WriteLog("IsNeedCustomizedProtocol exception: " + e.message);
-    }
-    return true;
-  }
-
-  this.GetVersion = function () {
-    if (self.IsNeedCustomizedProtocol()) {
-      if (self.connectState != emConnected) {
-        return;
-      }
-      var obj = new Object();
-      obj.command = "version";
-      self.NiuniuSocket.send("1" + encodeURIComponent(JSON.stringify(obj)));
-      return;
-    }
-
-    if (!self.pluginValid()) {
-      return;
-    }
-    var verSion = self.niuniuCapture().GetVersion();
-    self.VersionCallback(verSion);
-    self.WriteLog(verSion);
-  }
-}
diff --git a/admin-web/src/components/mySearch/SearchItem.vue b/admin-web/src/components/mySearch/SearchItem.vue
index 7e2bdf4..1240b54 100644
--- a/admin-web/src/components/mySearch/SearchItem.vue
+++ b/admin-web/src/components/mySearch/SearchItem.vue
@@ -4,7 +4,7 @@
     <el-input
       :type="item.inputType || 'text'"
       v-if="item.type === 'text'"
-      :placeholder="item.placeholder || ''"
+      :placeholder="item.placeholder || '璇疯緭鍏�'"
       @change="(e) => inputChange(e)"
       :clearable="true"
       v-model="val"
@@ -15,6 +15,7 @@
     <el-cascader
       v-model="val"
       v-if="item.type === 'cascader'"
+      :placeholder="item.placeholder || '璇烽�夋嫨'"
       :options="item.options"
       :props="item.optionsConfig.props||{ checkStrictly: true,emitPath: false,value: 'id' }"
       :show-all-levels="false"
@@ -26,7 +27,7 @@
     <!-- 涓嬫媺-->
     <el-select
       v-if="item.type === 'select'"
-      :placeholder="item.placeholder || ''"
+      :placeholder="item.placeholder || '璇烽�夋嫨'"
       v-model="val"
       filterable
       :multiple="item.multiple || false"
@@ -54,7 +55,7 @@
     <!--鏃堕棿-->
     <el-time-select
       v-if="item.type === 'time-picker'"
-      :placeholder="item.placeholder || ''"
+      :placeholder="item.placeholder || '璇烽�夋嫨'"
       v-model="val"
       :clearable="true"
       style="width: 150px"
@@ -66,7 +67,9 @@
       v-model="val"
       type="year"
       :clearable="true"
+      :placeholder="item.placeholder || '璇烽�夋嫨'"
       style="width: 150px"
+      :value-format="item.format?item.format:'yyyy'"
       @change="(v) => panelChange(v, 'yyyy')"
     />
     <!--鏈堥�夋嫨鍣�-->
@@ -75,7 +78,9 @@
       v-model="val"
       type="month"
       :clearable="true"
+      :placeholder="item.placeholder || '璇烽�夋嫨'"
       style="width: 150px"
+      :value-format="item.format?item.format:'yyyyMM'"
       @change="(v) => panelChange(v, 'yyyy-MM')"
     />
     <!--鏃ラ�夋嫨鍣�-->
@@ -84,7 +89,9 @@
       v-model="val"
       type="date"
       :clearable="true"
+      :placeholder="item.placeholder || '璇烽�夋嫨'"
       style="width: 150px"
+      :value-format="item.format?item.format:'yyyyMMdd'"
       @change="(v) => panelChange(v, 'yyyy-MM-dd')"
     />
     <!--鏃ユ湡甯︽椂闂撮�夋嫨鍣�-->
@@ -93,6 +100,7 @@
       v-model="val"
       type="datetime"
       :clearable="true"
+      :placeholder="item.placeholder || '璇烽�夋嫨'"
       style="width: 150px"
       format="yyyy-MM-dd HH:mm:ss"
       value-format="yyyy-MM-dd HH:mm:ss"
@@ -103,7 +111,7 @@
       v-if="item.type === 'datetimerange-picker'"
       v-model="val"
       style="width: 378px"
-      :placeholder="item.placeholder || ''"
+      :placeholder="item.placeholder || '璇烽�夋嫨'"
       type="datetimerange"
       :pickerOptions='pickerOptions'
       :disabled="item.disabled"
@@ -243,14 +251,7 @@
       }
     },
     panelChange(v, type) {
-      var info = null
-      if (v && this.item.type !== 'date-time-picker') {
-        info = formatDates(v, type)
-      } else {
-        info = v
-      }
-      this.val = info
-      this.$emit('change', info)
+      this.$emit('change', v)
     },
     filterOption(input, option) {
       return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0;
diff --git a/admin-web/src/components/upload/index.vue b/admin-web/src/components/upload/index.vue
index f54212b..cc70d3a 100644
--- a/admin-web/src/components/upload/index.vue
+++ b/admin-web/src/components/upload/index.vue
@@ -85,7 +85,7 @@
         title: '闄勪欢涓婁紶',
         max: 100, // 鏈�澶уぇ灏忥紝鍗曚綅M
         num: 10, // 鏀寔涓婁紶鍥剧墖涓暟
-        accept: '.jpg,.jpeg,.png,.bmp,.pdf,.doc,.docx,.xls,.xlsx,.apk,.zip', // 闄愬埗鏍煎紡
+        accept: '.jpg,.jpeg,.png,.pdf,.doc,.docx,.xls,.xlsx', // 闄愬埗鏍煎紡
         tip: '', // 鎻愮ず 榛樿锛歚鍙兘涓婁紶${this.defaultSettings.num}涓�${this.defaultSettings.accept}鏂囦欢锛屼笖涓嶈秴杩�${this.defaultSettings.max}kb`
         uploadUrl: '', // 涓婁紶璺緞
         multiple: true, // 鏄惁鏀寔鎵归噺涓婁紶
diff --git a/admin-web/src/utils/base.js b/admin-web/src/utils/base.js
index d4980c0..b2f7f05 100644
--- a/admin-web/src/utils/base.js
+++ b/admin-web/src/utils/base.js
@@ -34,7 +34,8 @@
       if (obj.url.indexOf('http') !== 0) {
         url = SettingIplatform.ftpUrl + url
       }
-      window.open(routeUrl.href + '?url=' + encodeURIComponent(url) + '&docName=' + encodeURIComponent(encodeURIComponent(obj.fileName)), '_blank')
+      const newWindow = window.open(routeUrl.href + '?url=' + encodeURIComponent(url) + '&docName=' + encodeURIComponent(encodeURIComponent(obj.fileName)), '_blank')
+      if (newWindow) newWindow.opener = null
     } else {
       Message.warning('鏂囦欢鏍煎紡涓嶆敮鎸侀瑙堬紒')
     }
diff --git a/admin-web/src/utils/settingIplatform.js b/admin-web/src/utils/settingIplatform.js
index 3e3b152..f568428 100644
--- a/admin-web/src/utils/settingIplatform.js
+++ b/admin-web/src/utils/settingIplatform.js
@@ -1,24 +1,10 @@
 
-// 璇锋眰鎺ュ彛鍦板潃 濡傛灉娌℃湁閰嶇疆鑷姩鑾峰彇褰撳墠缃戝潃璺緞
-const VUE_APP_API_URL = process.env.VUE_APP_BASE_API || `${location.origin}`;
-const VUE_APP_WS_URL =
-  process.env.VUE_APP_WS_URL || (location.protocol === 'https' ? 'wss' : 'ws') + ':' + location.hostname;
-
+import config from '../../public/static/config.js'
 const SettingIplatform = {
-  // 鏈嶅姟鍣ㄥ湴鍧�
-  httpUrl: VUE_APP_API_URL,
   // 涓婁紶璺緞
-  ftpUrl: 'https://yqzx.jinmingyuan.com/lowConsum',//寮�鍙�
-  // ftpUrl:'https://jmy.jinmingyuan.com/progress',// 娴嬭瘯,
-// 鎺ュ彛璇锋眰鍦板潃
-// apiBaseURL: 'http://116.198.39.83:8082/progress', // 姝e紡
-  // apiBaseURL: 'http://172.16.60.90:8082/progress',//寮�鍙�
-  // apiBaseURL: 'http://172.16.60.175:8083/lowConsum',//寮�鍙�
-  apiBaseURL: 'http://172.16.20.2:8083/lowConsum',//寮�鍙�
-  // apiBaseURL: 'https://yqzx.jinmingyuan.com/lowConsum',//寮�鍙�
-// apiBaseURL: 'https://jmy.jinmingyuan.com/progress',// 娴嬭瘯,
-  // socket杩炴帴
-  wsSocketUrl: VUE_APP_WS_URL,
+  ftpUrl: config.ftpUrl,
+  // 鎺ュ彛璇锋眰鍦板潃
+  apiBaseURL: config.apiBaseURL,
 };
 
 export default SettingIplatform;
diff --git a/admin-web/src/utils/stockType.js b/admin-web/src/utils/stockType.js
index e721978..16a5eef 100644
--- a/admin-web/src/utils/stockType.js
+++ b/admin-web/src/utils/stockType.js
@@ -1,6 +1,6 @@
 function stockType(row) {
   let result = '';
-  let arr = ['閲囪喘鍏ュ簱', '璋冩嫧', '鍏朵粬鍑哄簱', '閮ㄩ棬鍒嗗彂', '鎶ュ簾鍑哄簱', '閮ㄩ棬鐗╁搧鍥為��浠撳簱', '鐗╁搧鐩樼偣'];
+  let arr = ['閲囪喘鍏ュ簱', '璋冩嫧', '鍏朵粬鍑哄簱', '閮ㄩ棬鍒嗗彂', '鎶ュ簾鍑哄簱', '鐗╁搧閫�鍥�', '鐗╁搧鐩樼偣'];
   if (row.businessType == 7) {
     if (row.thisType == 1) {
       result = '鐩樼泩鍏ュ簱';
diff --git a/admin-web/src/views/components/myImport.vue b/admin-web/src/views/components/myImport.vue
index 400e608..48f95a1 100644
--- a/admin-web/src/views/components/myImport.vue
+++ b/admin-web/src/views/components/myImport.vue
@@ -14,7 +14,7 @@
       <el-col :span="24">
         <el-form>
           <el-form-item v-if="templateSettings.templateUrl != null" label="涓嬭浇妯℃澘锛�" prop="lon">
-            <a class="blue-txt" style="color:#409EFF" :href="templateSettings.templateUrl" target="_blank">{{ templateSettings.templateName }}</a>
+            <a class="blue-txt" style="color:#409EFF" :href="templateSettings.templateUrl" target="_blank" rel="noreferrer noopener">{{ templateSettings.templateName }}</a>
           </el-form-item>
           <el-form-item label="閫夊彇鏂囦欢锛�" prop="lon">
             <el-upload
diff --git a/admin-web/src/views/departmentitem/itemdis/distribution/index.vue b/admin-web/src/views/departmentitem/itemdis/distribution/index.vue
index 8e45fed..5dfbca1 100644
--- a/admin-web/src/views/departmentitem/itemdis/distribution/index.vue
+++ b/admin-web/src/views/departmentitem/itemdis/distribution/index.vue
@@ -12,7 +12,7 @@
             <div class="table-tool-bar" style="margin-bottom: 15px">
               <my-button name="鏂板" @click="handleAdd" site="tools" size="medium" />
             </div>
-            <div :style="{ 'overflow-y': 'auto', height: `${clientHeight - 320}px` }" v-loading="loading">
+            <div :style="{ 'overflow-y': 'auto', height: `calc(100vh - 320px)` }" v-loading="loading">
               <el-row v-if="list.length" class="card" :gutter="5">
                 <el-col v-for="(item, index) in list" :key="index" class="cm-item">
                   <el-card class="card-data">
diff --git a/admin-web/src/views/departmentitem/itemret/returnNote/index.vue b/admin-web/src/views/departmentitem/itemret/returnNote/index.vue
index 9c9e512..a910caf 100644
--- a/admin-web/src/views/departmentitem/itemret/returnNote/index.vue
+++ b/admin-web/src/views/departmentitem/itemret/returnNote/index.vue
@@ -12,7 +12,7 @@
             <div class="table-tool-bar" style="margin-bottom: 15px;">
               <my-button name="鏂板" @click="handleAdd" site="tools" size="medium" />
             </div>
-            <div :style="{ 'overflow-y': 'auto', height: `${clientHeight - 320}px` }" v-loading="loading">
+            <div :style="{ 'overflow-y': 'auto', height: 'calc(100vh - 352px)' }" v-loading="loading">
               <el-row v-if="list.length" class="card" :gutter="5">
                 <el-col v-for="(item, index) in list" :key="index" class="cm-item">
                   <el-card class="card-data">
diff --git a/admin-web/src/views/departmentitem/itemscr/scrapping/index.vue b/admin-web/src/views/departmentitem/itemscr/scrapping/index.vue
index 03a0e62..5d7c4d9 100644
--- a/admin-web/src/views/departmentitem/itemscr/scrapping/index.vue
+++ b/admin-web/src/views/departmentitem/itemscr/scrapping/index.vue
@@ -12,7 +12,7 @@
             <div class="table-tool-bar" style="margin-bottom: 15px;">
               <my-button name="鏂板" @click="handleAdd" site="tools" size="medium" />
             </div>
-            <div :style="{ 'overflow-y': 'auto', height: `${clientHeight - 320}px` }" v-loading="loading">
+            <div :style="{ 'overflow-y': 'auto', height: 'calc(100vh - 352px)' }" v-loading="loading">
               <el-row v-if="list.length" class="card" :gutter="5">
                 <el-col v-for="(item, index) in list" :key="index" class="cm-item">
                   <el-card class="card-data">
diff --git a/admin-web/src/views/error-log/index.vue b/admin-web/src/views/error-log/index.vue
index ac9ced8..58b8eb5 100644
--- a/admin-web/src/views/error-log/index.vue
+++ b/admin-web/src/views/error-log/index.vue
@@ -8,6 +8,7 @@
       increases the possibility of page problems, a small negligence may lead to the entire page deadlock. Fortunately
       Vue provides a way to catch handling exceptions, where you can handle errors or report exceptions.
       <a
+        rel="noreferrer noopener"
         target="_blank"
         class="link-type"
         href="https://panjiachen.github.io/vue-element-admin-site/guide/advanced/error.html"
diff --git a/admin-web/src/views/error-page/401.vue b/admin-web/src/views/error-page/401.vue
index bf736bc..0473bfa 100644
--- a/admin-web/src/views/error-page/401.vue
+++ b/admin-web/src/views/error-page/401.vue
@@ -4,7 +4,7 @@
     <el-row>
       <el-col :span="12">
         <h1 class="text-jumbo text-ginormous">Oops!</h1>
-        gif鏉ユ簮<a href="https://zh.airbnb.com/" target="_blank">airbnb</a> 椤甸潰
+        gif鏉ユ簮<a href="https://zh.airbnb.com/" target="_blank" rel="noreferrer noopener">airbnb</a> 椤甸潰
         <h2>浣犳病鏈夋潈闄愬幓璇ラ〉闈�</h2>
         <h6>濡傛湁涓嶆弧璇疯仈绯讳綘棰嗗</h6>
         <ul class="list-unstyled">
diff --git a/admin-web/src/views/projectConfig/buildPlan/detail.vue b/admin-web/src/views/projectConfig/buildPlan/detail.vue
deleted file mode 100644
index e215bb9..0000000
--- a/admin-web/src/views/projectConfig/buildPlan/detail.vue
+++ /dev/null
@@ -1,142 +0,0 @@
-<template>
-  <win-lg :title="setting.title" @close="close" :width="'800px'">
-    <el-table
-      v-loading="loading"
-      border
-      height="calc(100vh - 400px)"
-      :span-method="spanMethod"
-      :data="tableData"
-      style="width: 100%">
-      <el-table-column
-        prop="stageName"
-        align="center"
-        label="闃舵"/>
-      <el-table-column
-        prop="nodeName"
-        align="center"
-        label="鑺傜偣"/>
-      <el-table-column
-        prop="nodeTimeStart"
-        align="center"
-        label="鑷」鐩紑濮嬬n澶�"
-        width="130"/>
-      <el-table-column
-        prop="nodeTimeDays"
-        align="center"
-        label="鎸佺画澶╂暟"
-        width="80"/>
-      <el-table-column
-        align="center"
-        label="瀹屾垚鍚庢彁閱�"
-        width="95">
-        <template slot-scope="{row}">
-          {{ row.completeNotifyStatus === 1 ? '鏄�' : '鍚�' }}
-        </template>
-      </el-table-column>
-      <el-table-column
-        align="center"
-        label="鎻愰啋鑺傜偣"
-        width="240">
-        <template slot-scope="{row,$index}">
-          <div>闃舵锛歿{ row.notifyStage.join("銆�") }}</div>
-          <div>鑺傜偣锛歿{ row.notifyNode.join("銆�") }}</div>
-        </template>
-      </el-table-column>
-      <el-table-column
-        align="center"
-        label="涓存湡棰勮"
-        width="80">
-        <template slot-scope="{row}">
-          {{ row.warnNeed === 1 ? '鏄�' : '鍚�' }}
-        </template>
-      </el-table-column>
-      <el-table-column
-        align="center"
-        label="闄勪欢蹇呬紶"
-        width="80">
-        <template slot-scope="{row}">
-          {{ row.fileNeed === 1 ? '鏄�' : '鍚�' }}
-        </template>
-      </el-table-column>
-    </el-table>
-    <div slot="footer" align="center" class="dialog-footer">
-      <my-button name="鍙栨秷" site="form" @click="close"/>
-    </div>
-  </win-lg>
-</template>
-
-<script>
-import winLg from '@/components/win/win-lg'
-import {getStageNode} from "@/api/projectConfig/buildPlanNode";
-import myButton from "@/components/myButton/myButton";
-
-export default {
-  name: 'detail',
-  components: {winLg, myButton},
-  props: {
-    // setting 涓』鑷冲皯鍖呭惈鎺у埗dialog鏄剧ず鎴栭殣钘忕殑灞炴��,鍏朵綑灞炴�у彲鎷撳睍
-    // 灏嗘坊鍔�/淇敼鐨勫ぇ閲忔暟鎹強閫昏緫浠庡垪琛ㄩ〉闈腑鍒嗙鍑烘潵,閬垮厤鍒楄〃椤甸潰浠g爜杩囧,瀹℃煡鍥伴毦
-    // 鑻ユ椤甸潰椤诲洖浼犳暟鎹嚦鐖堕〉闈�,鍙湪寮曠敤缁勪欢鏃舵坊鍔犱簨浠�,鏈〉闈娇鐢╰his.$emit('浜嬩欢鍚�',鍙傛暟1,鍙傛暟2...)鍥炰紶鏁版嵁
-    setting: {
-      type: Object,
-      default: () => {
-      }
-    }
-  },
-  data() {
-    return {
-      loading: false,
-      tableData: [],
-      spanArr: [],
-      pos: 0
-    }
-  },
-  mounted() {
-    this.loading = true
-    getStageNode({id: this.setting.id}).then(res => {
-      this.loading = false
-      this.tableData = res
-      this.getSpanArr(res)
-    }).catch(() => {
-      this.loading = false
-    })
-  },
-  methods: {
-    close() {
-      this.$emit('close')
-    },
-    spanMethod({row, column, rowIndex, columnIndex}) {
-      if (columnIndex === 0) {
-        const rowspan = this.spanArr[rowIndex]
-        const colspan = rowspan > 0 ? 1 : 0
-        return {
-          rowspan, //琛�
-          colspan //鍒�
-        };
-      }
-    },
-    getSpanArr(data) {
-      this.spanArr = [];
-      for (let i = 0; i < data.length; i++) {
-        if (i === 0) {
-          this.spanArr.push(1);
-          this.pos = 0;
-        } else {
-          // 鍒ゆ柇褰撳墠鍏冪礌涓庝笂涓�涓厓绱犳槸鍚︾浉鍚�
-          if (data[i].id === data[i - 1].id && data[i].id) {
-            this.spanArr[this.pos] += 1;
-            this.spanArr.push(0);
-          } else {
-            this.spanArr.push(1);
-            this.pos = i;
-          }
-        }
-      }
-    },
-  }
-}
-</script>
-
-<style scoped>
-
-</style>
diff --git a/admin-web/src/views/projectConfig/buildPlan/edit.vue b/admin-web/src/views/projectConfig/buildPlan/edit.vue
deleted file mode 100644
index 6087c95..0000000
--- a/admin-web/src/views/projectConfig/buildPlan/edit.vue
+++ /dev/null
@@ -1,143 +0,0 @@
-<template>
-  <win-sm :title="setting.title" @close="close" :width="'800px'">
-    <el-form v-loading="loading" ref="ruleForm" :model="formData" :rules="rules" class="demo-ruleForm" label-width="100px">
-      <el-form-item label="璁″垝绫诲瀷" prop="planTypeCode">
-        <el-select v-model="formData.planTypeCode" placeholder="" clearable style="width: 100%">
-          <el-option
-            v-for="item in options"
-            :key="item.dict_code"
-            :label="item.dict_label"
-            :value="item.dict_code">
-          </el-option>
-        </el-select>
-      </el-form-item>
-      <el-form-item label="璁″垝鍚嶇О" prop="projectName">
-        <el-input v-model="formData.projectName" placeholder="" clearable maxlength="32" show-word-limit style="width: 100%"/>
-      </el-form-item>
-      <el-form-item label="缂栧彿" prop="projectCode">
-        <el-input v-model="formData.projectCode" placeholder="" clearable maxlength="32" show-word-limit style="width: 100%"/>
-      </el-form-item>
-      <el-form-item label="鐘舵��" prop="status">
-        <el-radio-group v-model="formData.status">
-          <el-radio :label="1" border>鍚敤</el-radio>
-          <el-radio :label="0" border>绂佺敤</el-radio>
-        </el-radio-group>
-      </el-form-item>
-      <el-form-item label="澶囨敞" prop="remark">
-        <el-input
-          v-model="formData.remark"
-          type="textarea"
-          :rows="3"
-          maxlength="200"
-          show-word-limit
-        />
-      </el-form-item>
-    </el-form>
-    <div slot="footer" align="center" class="dialog-footer">
-      <my-button name="鍙栨秷" site="form" @click="close"/>
-      <my-button name="淇濆瓨" site="form" @click="save"/>
-    </div>
-  </win-sm>
-</template>
-
-<script>
-import winSm from '@/components/win/win-sm'
-import myButton from '@/components/myButton/myButton'
-import * as api from "@/api/projectConfig/buildPlan";
-import {getDicts} from "@/api/system/dict/data";
-
-export default {
-  name: 'edit',
-  components: {winSm, myButton},
-  props: {
-    // setting 涓』鑷冲皯鍖呭惈鎺у埗dialog鏄剧ず鎴栭殣钘忕殑灞炴��,鍏朵綑灞炴�у彲鎷撳睍
-    // 灏嗘坊鍔�/淇敼鐨勫ぇ閲忔暟鎹強閫昏緫浠庡垪琛ㄩ〉闈腑鍒嗙鍑烘潵,閬垮厤鍒楄〃椤甸潰浠g爜杩囧,瀹℃煡鍥伴毦
-    // 鑻ユ椤甸潰椤诲洖浼犳暟鎹嚦鐖堕〉闈�,鍙湪寮曠敤缁勪欢鏃舵坊鍔犱簨浠�,鏈〉闈娇鐢╰his.$emit('浜嬩欢鍚�',鍙傛暟1,鍙傛暟2...)鍥炰紶鏁版嵁
-    setting: {
-      type: Object,
-      default: () => {
-      }
-    }
-  },
-  data() {
-    return {
-      loading: false,
-      options: [],
-      formData: {
-        planTypeCode: '',
-        projectName: '',
-        projectCode: '',
-        status: 1,
-        remark: '',
-      },
-      rules: {
-        planTypeCode: [
-          {required: true, message: '璇烽�夋嫨璁″垝绫诲瀷', trigger: 'blur'},
-        ],
-        projectName: [
-          {required: true, message: '璇疯緭鍏ヨ鍒掑悕绉�', trigger: 'blur'},
-        ],
-        projectCode: [
-          {required: true, message: '璇疯緭鍏ョ紪鍙�', trigger: 'blur'},
-        ]
-      }
-    }
-  },
-  created() {
-    this.loading = true
-    this.getInfo()
-    this.getPlanType()
-  },
-  methods: {
-    getPlanType() {
-      getDicts('PLAN_TYPE').then(res => {
-        this.options = res
-      })
-    },
-    getInfo() {
-      this.title = this.setting.title
-      if (this.setting.id != null) {
-        // 鏌ヨ鏁版嵁
-        api.getDetail({id: this.setting.id}).then(res => {
-          this.loading = false
-          this.formData = Object.assign(this.formData, res)
-        })
-      }else{
-        this.loading = false
-      }
-    },
-    close() {
-      this.formData = {
-        planTypeCode: '',
-        projectName: '',
-        projectCode: '',
-        status: 1,
-        remark: '',
-      }
-      this.$emit('close')
-    },
-    save() {
-      this.$refs.ruleForm.validate((valid) => {
-        if (valid) {
-          const params = Object.assign({}, this.formData)
-          this.loading = true
-          api[params.id?'upd':'add'](params).then(res => {
-            this.loading = false
-            if (res) {
-              this.$message.success('淇濆瓨鎴愬姛锛�')
-              this.close()
-              this.$emit('search')
-            } else {
-              this.$message.error('淇濆瓨澶辫触')
-            }
-          }).catch(()=>{
-            this.loading = false
-          })
-        } else {
-          this.$message.error('鏍¢獙鏈�氳繃锛岃妫�鏌ャ��')
-        }
-      })
-    }
-  }
-}
-</script>
diff --git a/admin-web/src/views/projectConfig/buildPlan/index.vue b/admin-web/src/views/projectConfig/buildPlan/index.vue
deleted file mode 100644
index 31c9c5d..0000000
--- a/admin-web/src/views/projectConfig/buildPlan/index.vue
+++ /dev/null
@@ -1,210 +0,0 @@
-<template>
-  <div class="app-container">
-    <el-card class="box-card" shadow="never">
-      <div class="filter-container" style="margin-bottom: 10px">
-        <my-search ref="searchBar" :items="items" @search="filterForm"></my-search>
-      </div>
-      <!--鍒楄〃-->
-      <my-table-v2 ref="myTable" :filter="filterFrom" :table="table"/>
-    </el-card>
-    <edit v-if="editSetting.show" :setting="editSetting" @close="editSetting.show = false" @search="search"></edit>
-    <detail v-if="detailSetting.show" :setting="detailSetting" @close="detailSetting.show = false" @search="search"></detail>
-    <nodeChoose v-if="nodeSetting.show" :setting="nodeSetting" @close="nodeSetting.show = false" @search="search"></nodeChoose>
-  </div>
-</template>
-
-<script>
-import MyTableV2 from '@/components/myTable/myTableV2';
-import SettingIplatform from '@/utils/settingIplatform';
-import items from './items';
-import edit from './edit'
-import detail from "@/views/projectConfig/buildPlan/detail";
-import nodeChoose from './nodeChoose/index'
-import {del, updStatus} from "@/api/projectConfig/buildPlan";
-
-export default {
-  components: {MyTableV2, edit,detail,nodeChoose},
-  data() {
-    return {
-      // 鎼滅储鏉′欢
-      items: items,
-      filterFrom: {
-        projectName: '',
-        projectCode: '',
-        planTypeCode: '',
-        status: '1',
-      },
-      //鏂板缂栬緫
-      editSetting: {
-        title: '',
-        id: '',
-        show: false,
-      },
-      //璇︽儏
-      detailSetting: {
-        title: '闃舵鑺傜偣棰勮',
-        id: '',
-        show: false,
-      },
-      //鑺傜偣璁剧疆
-      nodeSetting: {
-        title: '鑺傜偣閫夋嫨',
-        stageId: '',
-        show: false,
-      },
-      // 琛ㄦ牸鏁版嵁
-      table: {
-        showIndex: true, // 鏄惁鏄剧ず搴忓彿
-        expand: false, // 鏄惁鏄剧ず璇︽儏鏁版嵁
-        url: SettingIplatform.apiBaseURL + '/pc/p/temp/project/list', // 璇锋眰鍦板潃
-        // 宸ュ叿鏉�
-        tools: {
-          columnsCtrl: {
-            // 鍒楁帶鍒舵寜閽�
-            show: false,
-          },
-          generalExport: {
-            // 閫氱敤瀵煎嚭鎸夐挳
-            show: false,
-          },
-          // 鑷畾涔夊伐鍏锋潯鎸夐挳
-          custom: [
-            {
-              name: '鏂板',
-              click: () => {
-                this.showAdd(null);
-              },
-            },
-          ],
-        },
-        // 鍒椾俊鎭�
-        columns: [
-          {
-            title: '妯℃澘鍚嶇О', field: 'projectName', align: 'left',
-            formatter: (row) => {
-                return {
-                  value: row.projectName,
-                  type: 'primary',
-                  click: () => {
-                    // 鐐瑰嚮浜嬩欢
-                    this.shoDetail(row.id);
-                  },
-                }
-            }
-          },
-          {title: '缂栧彿', field: 'projectCode', align: 'left', width: 200},
-          {title: '璁″垝绫诲瀷', field: 'planTypeName', align: 'left', width: 300},
-          {
-            field: 'status',
-            title: '鐘舵��',
-            align: 'center',
-            width: 80,
-            switch: (row) => {
-              return {
-                value: row.status === 1, // 寮�
-                label: row.status === 1 ? '鍚敤' : '绂佺敤', // 寮�鐨勬弿杩�
-                click: () => {
-                  // 鐐瑰嚮浜嬩欢
-                  this.updState(row);
-                },
-              };
-            },
-          },
-        ],
-        // 鎿嶄綔淇℃伅
-        operation: {
-          show: true, // 鏄剧ず鎿嶄綔鍒�
-          width: '200', // 鍒楀
-          attr: [
-            {
-              title: '缂栬緫',
-              events: (row) => {
-                this.showAdd(row.id);
-              },
-            },
-            {
-              title: '鑺傜偣閫夋嫨',
-              type: 'success',
-              events: (row) => {
-                this.showNode(row.id);
-              },
-            },
-          ],
-        },
-        paging: {
-          show: false, // 鏄剧ず鍒嗛〉
-          // 鍒嗛〉淇℃伅
-          page: {
-            small: false,
-            pageNum: 1,
-            pageSize: 10,
-            total: 0,
-          },
-        },
-      },
-    };
-  },
-  mounted() {
-  },
-  methods: {
-    // 鏌ヨtable鍒楄〃
-    search(pageNum) {
-      if (pageNum != undefined) {
-        this.$refs.myTable.search(pageNum);
-      } else {
-        this.$refs.myTable.search();
-      }
-    },
-    filterForm(params) {
-      this.filterFrom = Object.assign(this.filterFrom, params);
-      this.search();
-    },
-    //娣诲姞銆佺紪杈�
-    showAdd(id) {
-      let title = '娣诲姞';
-      if (id != null) {
-        title = '缂栬緫';
-      }
-      this.editSetting.id = id;
-      this.editSetting.title = title;
-      this.editSetting.show = true;
-    },
-    updState(row) {
-      let text = row.status === 0 ? "鍚敤" : "绂佺敤";
-      this.$modal.confirm('纭瑕�' + text + '"' + row.projectName + '"鍚楋紵').then(() => {
-        let status = row.status === 1 ? 0 : 1
-        updStatus({
-          id: row.id,
-          status
-        }).then(res => {
-          if (res) {
-            row.status = row.status === 1 ? 0 : 1
-            this.$modal.msgSuccess(text + "鎴愬姛");
-          }
-        })
-      })
-    },
-    showNode(id) {
-      this.nodeSetting.stageId = id;
-      this.nodeSetting.show = true;
-    },
-    shoDetail(id) {
-      this.detailSetting.id = id;
-      this.detailSetting.show = true;
-    },
-    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
-    handleDelete(row) {
-      this.$confirm('鏄惁纭鍒犻櫎"' + row.stageName + '"闃舵锛�', {
-        type: 'warning'
-      }).then(() => {
-        del({id: row.id}).then(res => {
-          this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
-          this.search()
-        })
-      })
-    },
-  },
-};
-</script>
-
-<style scoped></style>
diff --git a/admin-web/src/views/projectConfig/buildPlan/items.js b/admin-web/src/views/projectConfig/buildPlan/items.js
deleted file mode 100644
index 2b060c9..0000000
--- a/admin-web/src/views/projectConfig/buildPlan/items.js
+++ /dev/null
@@ -1,48 +0,0 @@
-import SettingIplatform from "@/utils/settingIplatform";
-
-export default [
-  {
-    type: 'text',
-    dataIndex: 'projectName',
-    label: '妯℃澘鍚嶇О',
-    placeholder: '璇疯緭鍏�',
-    defaultValue: ''
-  },
-  {
-    type: 'text',
-    dataIndex: 'projectCode',
-    label: '妯℃澘缂栧彿',
-    placeholder: '璇疯緭鍏�',
-    defaultValue: ''
-  },
-  {
-    type: 'select',
-    dataIndex: 'planTypeCode',
-    label: '璁″垝绫诲瀷',
-    placeholder: '璇烽�夋嫨',
-    defaultValue: '',
-    options: [],
-    optionsConfig: {
-      label: 'dict_label',
-      value: 'dict_code',
-      url: SettingIplatform.apiBaseURL + '/permit/dict/data/type/PLAN_TYPE'
-    }
-  },
-  {
-    type: 'select',
-    dataIndex: 'status',
-    label: '鐘舵��',
-    placeholder: '璇烽�夋嫨',
-    defaultValue: '1',
-    options: [
-      {
-        label: '鍚敤',
-        value: '1'
-      },
-      {
-        label: '绂佺敤',
-        value: '0'
-      }
-    ]
-  }
-]
diff --git a/admin-web/src/views/projectConfig/buildPlan/nodeChoose/edit.vue b/admin-web/src/views/projectConfig/buildPlan/nodeChoose/edit.vue
deleted file mode 100644
index 836143c..0000000
--- a/admin-web/src/views/projectConfig/buildPlan/nodeChoose/edit.vue
+++ /dev/null
@@ -1,117 +0,0 @@
-<template>
-  <win-sm :title="setting.title" @close="close" :width="'800px'">
-    <el-form v-loading="loading" ref="ruleForm" :model="formData" :rules="rules" class="demo-ruleForm" label-width="100px">
-      <el-form-item label="闃舵鍚嶇О" prop="nodeName">
-        <el-input v-model="formData.nodeName" clearable maxlength="32" show-word-limit style="width: 100%"/>
-      </el-form-item>
-      <el-form-item label="灞曠ず椤哄簭" prop="sort">
-        <el-input-number v-model="formData.sort" clearable :min="1"/>
-      </el-form-item>
-      <el-form-item label="鐘舵��" prop="status">
-        <el-radio-group v-model="formData.status">
-          <el-radio :label="1" border>鍚敤</el-radio>
-          <el-radio :label="0" border>绂佺敤</el-radio>
-        </el-radio-group>
-      </el-form-item>
-      <el-form-item label="澶囨敞" prop="remark">
-        <el-input
-          v-model="formData.remark"
-          type="textarea"
-          :rows="3"
-          maxlength="200"
-          show-word-limit
-        />
-      </el-form-item>
-    </el-form>
-    <div slot="footer" align="center" class="dialog-footer">
-      <my-button name="鍙栨秷" site="form" @click="close"/>
-      <my-button name="淇濆瓨" site="form" @click="save"/>
-    </div>
-  </win-sm>
-</template>
-
-<script>
-import winSm from '@/components/win/win-sm'
-import myButton from '@/components/myButton/myButton'
-import * as node from "@/api/projectConfig/stageNode";
-
-export default {
-  name: 'edit',
-  components: {winSm, myButton},
-  props: {
-    // setting 涓』鑷冲皯鍖呭惈鎺у埗dialog鏄剧ず鎴栭殣钘忕殑灞炴��,鍏朵綑灞炴�у彲鎷撳睍
-    // 灏嗘坊鍔�/淇敼鐨勫ぇ閲忔暟鎹強閫昏緫浠庡垪琛ㄩ〉闈腑鍒嗙鍑烘潵,閬垮厤鍒楄〃椤甸潰浠g爜杩囧,瀹℃煡鍥伴毦
-    // 鑻ユ椤甸潰椤诲洖浼犳暟鎹嚦鐖堕〉闈�,鍙湪寮曠敤缁勪欢鏃舵坊鍔犱簨浠�,鏈〉闈娇鐢╰his.$emit('浜嬩欢鍚�',鍙傛暟1,鍙傛暟2...)鍥炰紶鏁版嵁
-    setting: {
-      type: Object,
-      default: () => {
-      }
-    }
-  },
-  data() {
-    return {
-      loading: false,
-      formData: {
-        nodeName: '',
-        sort: 1,
-        status: 1,
-        remark: '',
-      },
-      rules: {
-        nodeName: [
-          {required: true, message: '璇疯緭鍏ヨ妭鐐瑰悕绉�', trigger: 'blur'}
-        ],
-      }
-    }
-  },
-  created() {
-    this.loading = true
-    this.getInfo()
-  },
-  methods: {
-    getInfo() {
-      this.title = this.setting.title
-      if (this.setting.id != null) {
-        // 鏌ヨ鏁版嵁
-        node.getDetail({id: this.setting.id}).then(res => {
-          this.loading = false
-          this.formData = Object.assign(this.formData, res)
-        })
-      }else{
-        this.loading = false
-      }
-    },
-    close() {
-      this.formData = {
-        nodeName: '',
-        sort: 1,
-        status: 1,
-        remark: '',
-      }
-      this.$emit('close')
-    },
-    save() {
-      this.$refs.ruleForm.validate((valid) => {
-        if (valid) {
-          const params = Object.assign({}, this.formData)
-          this.loading = true
-          node[params.id?'upd':'add'](params).then(res => {
-            this.loading = false
-            if (res) {
-              this.$message.success('淇濆瓨鎴愬姛锛�')
-              this.close()
-              this.$emit('search')
-            } else {
-              this.$message.error('淇濆瓨澶辫触')
-            }
-          }).catch(()=>{
-            this.loading = false
-          })
-        } else {
-          this.$message.error('鏍¢獙鏈�氳繃锛岃妫�鏌ャ��')
-        }
-      })
-    }
-  }
-}
-</script>
diff --git a/admin-web/src/views/projectConfig/buildPlan/nodeChoose/index.vue b/admin-web/src/views/projectConfig/buildPlan/nodeChoose/index.vue
deleted file mode 100644
index ef976e8..0000000
--- a/admin-web/src/views/projectConfig/buildPlan/nodeChoose/index.vue
+++ /dev/null
@@ -1,106 +0,0 @@
-<template>
-  <win-lg :title="setting.title" @close="close" :width="'800px'">
-    <el-tabs v-loading="loading" v-model="activeName" :before-leave="beforeLeave">
-      <el-tab-pane label="閫夋嫨鑺傜偣" name="first">
-        <div class="box">
-          <stageNode :tempProjectId="setting.stageId" ref="stageNode"></stageNode>
-        </div>
-      </el-tab-pane>
-      <el-tab-pane label="鑺傜偣鍛ㄦ湡璁剧疆" name="second">
-        <div class="box">
-          <nodeCycle ref="nodeCycle"/>
-        </div>
-      </el-tab-pane>
-      <el-tab-pane label="棰勮" name="third">
-        <div class="box">
-          <preview ref="preview" :tempProjectStages="tempProjectStages"/>
-        </div>
-      </el-tab-pane>
-    </el-tabs>
-    <div slot="footer" align="center" class="dialog-footer">
-      <my-button name="鍙栨秷" site="form" @click="close"/>
-      <template v-if="activeName === 'first'">
-        <my-button key="4" name="涓嬩竴姝�" type="primary" site="form" @click="activeName = 'second'"/>
-      </template>
-      <my-button v-if="activeName === 'second'" key="1" name="涓婁竴姝�" type="primary" site="form" @click="activeName = 'first'"/>
-      <my-button v-if="activeName === 'second'" key="2" name="淇濆瓨" site="form" @click="doSave" />
-      <my-button @click="activeName='third'" v-if="activeName === 'second'" key="3" name="棰勮" type="warning" site="form"/>
-      <my-button v-if="activeName === 'third'" name="杩斿洖" site="form" @click="activeName='second'"/>
-    </div>
-  </win-lg>
-</template>
-
-<script>
-import winLg from '@/components/win/win-lg'
-import myButton from '@/components/myButton/myButton'
-import stageNode from "@/views/projectConfig/buildPlan/nodeChoose/stageNode";
-import nodeCycle from "@/views/projectConfig/buildPlan/nodeChoose/nodeCycle";
-import preview from "@/views/projectConfig/buildPlan/nodeChoose/preview";
-import {updPStageNode} from '@/api/projectConfig/buildPlanNode'
-export default {
-  name: 'nodeChoose',
-  components: {winLg, myButton,stageNode,nodeCycle,preview},
-  props: {
-    // setting 涓』鑷冲皯鍖呭惈鎺у埗dialog鏄剧ず鎴栭殣钘忕殑灞炴��,鍏朵綑灞炴�у彲鎷撳睍
-    // 灏嗘坊鍔�/淇敼鐨勫ぇ閲忔暟鎹強閫昏緫浠庡垪琛ㄩ〉闈腑鍒嗙鍑烘潵,閬垮厤鍒楄〃椤甸潰浠g爜杩囧,瀹℃煡鍥伴毦
-    // 鑻ユ椤甸潰椤诲洖浼犳暟鎹嚦鐖堕〉闈�,鍙湪寮曠敤缁勪欢鏃舵坊鍔犱簨浠�,鏈〉闈娇鐢╰his.$emit('浜嬩欢鍚�',鍙傛暟1,鍙傛暟2...)鍥炰紶鏁版嵁
-    setting: {
-      type: Object,
-      default: () => {
-      }
-    }
-  },
-  data() {
-    return {
-      loading: false,
-      activeName: 'first',
-      tempProjectStages: []
-    };
-  },
-  mounted() {
-  },
-  methods: {
-    doSave(){
-      console.log(this.$refs.nodeCycle.getSelectTree())
-      this.loading = true
-      updPStageNode({
-        tempProjectId:this.setting.stageId,
-        tempProjectStages:this.$refs.nodeCycle.getSelectTree()
-      }).then(res=>{
-        this.loading = false
-        this.$message.success('淇濆瓨鎴愬姛锛�')
-        this.close()
-        this.$emit('search')
-      }).catch(()=>{
-        this.loading = false
-      })
-    },
-    close() {
-      this.$emit('close')
-    },
-    beforeLeave(activeName, oldActiveName) {
-      let checked = this.$refs.stageNode.tree.some(item=>item.checked)
-      if(activeName==='second'&&checked){
-        this.$refs.stageNode.setNodeCycleData()
-      }
-      if(activeName==='third'&&checked){
-        this.$EventBus.$emit('clearData')
-        this.tempProjectStages = this.$refs.nodeCycle.getSelectTree()
-      }
-      if(activeName!=='first'&&!checked){
-        this.$modal.msgError('璇峰厛閫夋嫨闃舵鑺傜偣')
-        this.activeName = oldActiveName
-      }
-      return checked
-      // return false
-    },
-  },
-};
-</script>
-
-<style scoped>
-.box {
-  height: calc(100vh - 450px);
-  overflow-y: auto;
-}
-</style>
diff --git a/admin-web/src/views/projectConfig/buildPlan/nodeChoose/items.js b/admin-web/src/views/projectConfig/buildPlan/nodeChoose/items.js
deleted file mode 100644
index cd07526..0000000
--- a/admin-web/src/views/projectConfig/buildPlan/nodeChoose/items.js
+++ /dev/null
@@ -1,26 +0,0 @@
-export default [
-  {
-    type: 'text',
-    dataIndex: 'nodeName',
-    label: '鑺傜偣鍚嶇О',
-    placeholder: '鑺傜偣鍚嶇О',
-    defaultValue: ''
-  },
-  {
-    type: 'select',
-    dataIndex: 'status',
-    label: '鐘舵��',
-    placeholder: '璇烽�夋嫨',
-    defaultValue: '',
-    options: [
-      {
-        label: '鍚敤',
-        value: '1'
-      },
-      {
-        label: '绂佺敤',
-        value: '0'
-      }
-    ]
-  }
-]
diff --git a/admin-web/src/views/projectConfig/buildPlan/nodeChoose/nodeCycle.vue b/admin-web/src/views/projectConfig/buildPlan/nodeChoose/nodeCycle.vue
deleted file mode 100644
index 601d0fe..0000000
--- a/admin-web/src/views/projectConfig/buildPlan/nodeChoose/nodeCycle.vue
+++ /dev/null
@@ -1,215 +0,0 @@
-<template>
-  <div>
-    <el-tabs tab-position="left" style="">
-      <template v-for="(stage,i) in tree">
-        <el-tab-pane v-if="stage.checked" :key="i" :label="stage.name">
-          <el-form :model="{tableData: tree}" ref="ruleForm" label-width="120px" class="demo-dynamic">
-            <el-form-item label="闃舵鎬诲懆鏈�(澶�)">
-              <el-input-number v-model="stage.stageTimeDays" :controls="false" :min="1" :step="1" step-strictly style="width: 400px;text-align: left"></el-input-number>
-            </el-form-item>
-            <el-table
-              border
-              height="calc(100vh - 501px)"
-              :data="stage.children.filter(item=>item.checked)"
-              style="width: 100%">
-              <el-table-column
-                prop="name"
-                align="center"
-                label="鑺傜偣"/>
-              <el-table-column
-                align="center"
-                label="鑷」鐩紑濮嬬n澶�"
-                width="180">
-                <template slot-scope="{row}">
-                  <el-input-number v-model="row.nodeTimeStart" :controls="false" :min="getStageStart(i)" :max="getStageEnd(i)" :step="1" step-strictly style="width: 100%;text-align: left"></el-input-number>
-                </template>
-              </el-table-column>
-              <el-table-column
-                align="center"
-                label="鎸佺画澶╂暟"
-                width="180">
-                <template slot-scope="{row}">
-                  <el-input-number v-model="row.nodeTimeDays" :controls="false" :min="1" :max="stage.stageTimeDays||Infinity" :step="1" step-strictly style="width: 100%;text-align: left"></el-input-number>
-                </template>
-              </el-table-column>
-              <el-table-column
-                align="center"
-                label="瀹屾垚鍚庢彁閱�"
-                width="95">
-                <template slot-scope="{row}">
-                  <el-switch
-                    @change="notifyChange($event,row)"
-                    v-model="row.completeNotifyStatus"
-                    active-color="#13ce66"
-                    :active-value="1"
-                    :inactive-value="0">
-                  </el-switch>
-                </template>
-              </el-table-column>
-              <el-table-column
-                align="center"
-                label="鎻愰啋鑺傜偣"
-                width="180">
-                <template slot-scope="{row,$index}">
-                  <el-cascader
-                    v-model="row.notifyTempStageNodeId"
-                    :ref="'cascade'+i+$index"
-                    :disabled="row.completeNotifyStatus===0"
-                    @change="cascadeChange($event,row,'cascade'+i+$index)"
-                    :options="options"
-                    :show-all-levels="false"
-                    :props="{ multiple: true, checkStrictly: true, emitPath: false }"
-                    clearable></el-cascader>
-                </template>
-              </el-table-column>
-              <el-table-column
-                align="center"
-                label="涓存湡棰勮"
-                width="80">
-                <template slot-scope="{row}">
-                  <el-switch
-                    v-model="row.warnNeed"
-                    active-color="#13ce66"
-                    :active-value="1"
-                    :inactive-value="0">
-                  </el-switch>
-                </template>
-              </el-table-column>
-              <el-table-column
-                align="center"
-                label="闄勪欢蹇呬紶"
-                width="80">
-                <template slot-scope="{row}">
-                  <el-switch
-                    v-model="row.fileNeed"
-                    active-color="#13ce66"
-                    :active-value="1"
-                    :inactive-value="0">
-                  </el-switch>
-                </template>
-              </el-table-column>
-            </el-table>
-          </el-form>
-        </el-tab-pane>
-      </template>
-    </el-tabs>
-  </div>
-</template>
-
-<script>
-export default {
-  data() {
-    return {
-      options: [],
-      tree: []
-    }
-  },
-  mounted() {
-    this.$EventBus.$on('setTree', data => {
-      this.tree = data
-      let arr = []
-      data.map(item => {
-        if (item.checked) {
-          let stage = {
-            value: item.id,
-            label: item.name,
-            notifyTempType: 0, // 0闃舵 1鑺傜偣
-            children: []
-          }
-          item.children.map(node => {
-            if (node.checked) {
-              stage.children.push({
-                value: node.id,
-                label: node.name,
-                notifyTempType: 1, // 0闃舵 1鑺傜偣
-              })
-            }
-          })
-          arr.push(stage)
-        }
-      })
-      this.options = arr //鍙�夋嫨涓烘彁閱掕妭鐐圭殑鍒楄〃
-    })
-  },
-  computed:{
-    getStageStart(){
-      return (i)=>{
-        let num = 0
-        this.tree.map((item,idx)=>{
-          if(idx<i){
-            num+=(item.stageTimeDays||0)
-          }
-        })
-        return num+1
-      }
-
-    },
-    getStageEnd(){
-      return (i)=>{
-        let num = 0
-        this.tree.map((item,idx)=>{
-          if(idx<i+1){
-            num+=(item.stageTimeDays||0)
-          }
-        })
-        return num+1
-      }
-
-    }
-  },
-  beforeDestroy() {
-    this.$EventBus.$off('setTree')
-  },
-  methods: {
-    getSelectTree(){
-      let arr = []
-      this.tree.map(item => {
-        if (item.checked) {
-          let stage = JSON.parse(JSON.stringify(item))
-          delete stage.checked
-          delete stage.checkedList
-          delete stage.name
-          let children =[]
-          stage.children.map(node => {
-            if (node.checked) {
-              let item = JSON.parse(JSON.stringify(node))
-              delete item.checked
-              delete item.notifyTempStageNodeId
-              delete item.name
-              children.push(item)
-            }
-          })
-          stage.children = children
-          arr.push(stage)
-        }
-      })
-      return arr
-    },
-    notifyChange(e,row){
-      row.notify = []
-      row.notifyStageNodes = []
-    },
-    cascadeChange(e, row, ref) {
-      let nodes = this.$refs[ref][0].getCheckedNodes(false)
-      let arr = []
-      nodes.map(item => {
-        if (item.checked) {
-          arr.push({
-            tempStageNodeId: row.id,
-            notifyTempType: item.level - 1,
-            notifyTempStageNodeId: item.value
-          })
-        }
-      })
-      row.notify = arr
-    }
-  }
-}
-</script>
-
-<style scoped>
-.tab-content {
-  height: calc(100vh - 450px);
-  overflow-y: auto;
-}
-</style>
diff --git a/admin-web/src/views/projectConfig/buildPlan/nodeChoose/preview.vue b/admin-web/src/views/projectConfig/buildPlan/nodeChoose/preview.vue
deleted file mode 100644
index 3018bc8..0000000
--- a/admin-web/src/views/projectConfig/buildPlan/nodeChoose/preview.vue
+++ /dev/null
@@ -1,205 +0,0 @@
-<template>
-  <div class="box">
-    <div class="f-r">
-      <div>璁剧疆寮�濮嬫椂闂�</div>
-      <el-date-picker
-        style="margin: 0 10px"
-        v-model="startTime"
-        type="date"
-        value-format="yyyyMMddHHmmss"
-        placeholder="閫夋嫨鏃ユ湡">
-      </el-date-picker>
-      <my-button @click="doPreview" name="鐢熸垚棰勮" type="warning" site="form"/>
-    </div>
-    <el-table
-      v-loading="loading"
-      border
-      height="calc(100vh - 505px)"
-      :data="tableData"
-      :span-method="spanMethod"
-      style="width: 100%;margin-top: 15px">
-      <el-table-column
-        prop="stageName"
-        align="center"
-        width="130"
-        label="闃舵"/>
-      <el-table-column
-        prop="nodeName"
-        align="center"
-        width="110"
-        label="鑺傜偣"/>
-      <el-table-column
-        prop="startDate"
-        align="center"
-        label="寮�濮嬫椂闂�"
-        width="110">
-        <template slot-scope="scope">
-          <span>{{ longToDate(scope.row.startDate) }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column
-        prop="endDate"
-        align="center"
-        label="鎴鏃堕棿"
-        width="110">
-        <template slot-scope="scope">
-          <span>{{ longToDate(scope.row.endDate) }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column :width="dates.length*100+2" class-name="my-col">
-        <template slot="header" slot-scope="scope">
-          <span v-for="(item,i) in dates" :key="i" class="item">{{ longToDate(item) }}</span>
-        </template>
-        <template slot-scope="{row,$index}">
-          <!--          <span v-for="(item,i) in dates" :key="i" class="progress" :class="(dates.indexOf(row.startDate)<=i)&&(dates.indexOf(row.endDate)>=i)?'act':''"><span class="act"></span></span>-->
-          <span v-for="(item,i) in dates" :key="i" class="progress">
-            <span v-if="(dates.indexOf(row.startDate)<=i)&&(dates.indexOf(row.endDate)>=i)" class="act"></span>
-          </span>
-        </template>
-      </el-table-column>
-    </el-table>
-  </div>
-</template>
-
-<script>
-import {getPreview} from "@/api/projectConfig/buildPlanNode";
-import myButton from '@/components/myButton/myButton'
-import * as DateFormatter from '@/utils/DateFormatter';
-
-export default {
-  name: 'preview',
-  components: {myButton},
-  props: ['tempProjectStages'],
-  data() {
-    return {
-      loading: false,
-      startTime: '',
-      tableData: [],
-      spanArr: [],
-      pos: 0,
-      dates: []
-    }
-  },
-  mounted() {
-    this.$EventBus.$on('clearData', data => {
-      this.startTime = ''
-      this.tableData = []
-      this.spanArr = []
-      this.pos = 0
-      this.dates = []
-    })
-  },
-  methods: {
-    doPreview() {
-      this.loading = true
-      getPreview({
-        startDate: this.startTime,
-        tempProjectStages: this.tempProjectStages
-      }).then(res => {
-        let arr = []
-        res.map(item => {
-          arr.push(item.startDate)
-          arr.push(item.endDate)
-        })
-        let newArr = arr.filter((value, index, self) => {
-          return self.indexOf(value) === index;
-        });
-        this.dates = newArr.sort()
-        this.tableData = res
-        this.getSpanArr(res)
-        this.loading = false
-      }).catch(() => {
-        this.loading = false
-      })
-    },
-    spanMethod({row, column, rowIndex, columnIndex}) {
-      if (columnIndex === 0) {
-        const rowspan = this.spanArr[rowIndex]
-        const colspan = rowspan > 0 ? 1 : 0
-        return {
-          rowspan, //琛�
-          colspan //鍒�
-        };
-      }
-    },
-    getSpanArr(data) {
-      this.spanArr = [];
-      for (let i = 0; i < data.length; i++) {
-        if (i === 0) {
-          this.spanArr.push(1);
-          this.pos = 0;
-        } else {
-          // 鍒ゆ柇褰撳墠鍏冪礌涓庝笂涓�涓厓绱犳槸鍚︾浉鍚�
-          if (data[i].id === data[i - 1].id && data[i].id) {
-            this.spanArr[this.pos] += 1;
-            this.spanArr.push(0);
-          } else {
-            this.spanArr.push(1);
-            this.pos = i;
-          }
-        }
-      }
-    },
-    longToDate(long) {
-      return DateFormatter.LongToDate(long)
-    }
-  }
-}
-</script>
-<style>
-.my-col {
-  padding: 0 !important;
-}
-
-.my-col .cell {
-  padding: 0 !important;
-}
-
-.el-table__row .my-col {
-  border: none !important;
-}
-</style>
-<style scoped lang="scss">
-.item {
-  display: inline-block;
-  text-align: center;
-  width: 100px;
-}
-
-.progress {
-  position: relative;
-  //left: -50px;
-  display: inline-block;
-  width: 100px;
-  height: 24px;
-  margin-top: 8px;
-
-  &::after {
-    content: '';
-    position: absolute;
-    width: 1px;
-    height: 40px;
-    left: 100px;
-    top: -8px;
-    border-right: 1px dashed #dfe6ec;
-  }
-}
-
-.act {
-  position: absolute;
-  display: inline-block;
-  width: 100px;
-  height: 24px;
-  background-color: #0c8aff;
-  //left: -50px;
-}
-
-.rt {
-  //left: -50px;
-}
-
-.lt {
-
-}
-
-</style>
diff --git a/admin-web/src/views/projectConfig/buildPlan/nodeChoose/stageNode.vue b/admin-web/src/views/projectConfig/buildPlan/nodeChoose/stageNode.vue
deleted file mode 100644
index 3c289fd..0000000
--- a/admin-web/src/views/projectConfig/buildPlan/nodeChoose/stageNode.vue
+++ /dev/null
@@ -1,85 +0,0 @@
-<template>
-  <div class="box" v-loading="loading">
-    <div v-for="(stage,i) in tree" :key="i">
-      <el-checkbox @change="stageChange($event,stage)" v-model="stage.checked">{{ stage.name }}</el-checkbox>
-      <div style="margin: 15px 0;"></div>
-      <div style="margin: 15px 0 15px 20px">
-        <el-checkbox-group @change="nodesChange($event,stage)" v-model="stage.checkedList">
-          <el-checkbox @change="nodeChange($event,stage,node)" v-for="(node,k) in stage.children" :label="node.id" :key="k">{{ node.name }}</el-checkbox>
-        </el-checkbox-group>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-import {getPStageNode} from "@/api/projectConfig/buildPlanNode";
-
-export default {
-  props: ['tempProjectId'],
-  name: 'stageNode',
-  data() {
-    return {
-      loading: true,
-      tree: [],
-      checkAll: false,
-      checkedCities: [],
-    }
-  },
-  mounted() {
-    this.getTree()
-  },
-  methods: {
-    setNodeCycleData() {
-      this.$EventBus.$emit('setTree', this.tree)
-    },
-    setPreviewData() {
-      this.$EventBus.$emit('setPreviewData', this.tree)
-    },
-    stageChange(e, stage) {
-      if (e) {
-        stage.checkedList = stage.children.map(item => {
-          item.checked = true
-          return item.id
-        })
-      } else {
-        stage.checkedList = []
-      }
-    },
-    nodesChange(e, stage) {
-      stage.checked = e.length > 0
-    },
-    nodeChange(e, stage, node) {
-      node.checked = e
-    },
-    getTree() {
-      getPStageNode({tempProjectId: this.tempProjectId}).then(res => {
-        this.loading = false
-        res.map((stage, i) => {
-          stage.checked = stage.children.some(item => item.isDelete === 0)
-          stage.stageTimeDays = stage.stageTimeDays || undefined
-          let checkedList = []
-          stage.children.map(node => {
-            if (node.isDelete === 0) {
-              checkedList.push(node.id)
-            }
-            node.checked = node.isDelete === 0
-            node.nodeTimeStart = node.nodeTimeStart || undefined //鑷」鐩紑濮嬬N澶�
-            node.nodeTimeDays = node.nodeTimeDays || undefined //鎸佺画澶╂暟
-            if(node.notify){
-              node.notifyTempStageNodeId = node.notify.map(n=>n.notifyTempStageNodeId)
-            }
-
-          })
-          stage.checkedList = checkedList
-        })
-        this.tree = res
-      })
-    }
-  }
-}
-</script>
-
-<style scoped>
-
-</style>
diff --git a/admin-web/src/views/projectConfig/kanbanConfig/edit.vue b/admin-web/src/views/projectConfig/kanbanConfig/edit.vue
deleted file mode 100644
index c8d1761..0000000
--- a/admin-web/src/views/projectConfig/kanbanConfig/edit.vue
+++ /dev/null
@@ -1,115 +0,0 @@
-<template>
-  <win-sm :title="setting.title" @close="close" :width="'800px'">
-    <el-form v-loading="loading" ref="ruleForm" :model="formData" :rules="rules" class="demo-ruleForm" label-width="120px">
-      <el-form-item label="鍏抽敭鑺傜偣鍚嶇О" prop="boardName">
-        <el-input v-model="formData.boardName" placeholder="璇疯緭鍏ュ叧閿妭鐐瑰悕绉�" clearable maxlength="32" show-word-limit style="width: 100%"/>
-      </el-form-item>
-<!--      <el-form-item label="缂栧彿" prop="boardCode">
-        <el-input v-model="formData.boardCode" placeholder="璇疯緭鍏ョ紪鍙�" clearable maxlength="32" show-word-limit style="width: 100%"/>
-      </el-form-item>-->
-      <el-form-item label="灞曠ず椤哄簭" prop="sort">
-        <el-input-number v-model="formData.sort" clearable :min="1"/>
-      </el-form-item>
-      <el-form-item label="鐘舵��" prop="status">
-        <el-radio-group v-model="formData.status">
-          <el-radio :label="1" border>鍚敤</el-radio>
-          <el-radio :label="0" border>绂佺敤</el-radio>
-        </el-radio-group>
-      </el-form-item>
-    </el-form>
-    <div slot="footer" align="center" class="dialog-footer">
-      <my-button name="鍙栨秷" site="form" @click="close"/>
-      <my-button name="淇濆瓨" site="form" @click="save"/>
-    </div>
-  </win-sm>
-</template>
-
-<script>
-import winSm from '@/components/win/win-sm'
-import myButton from '@/components/myButton/myButton'
-import * as api from "@/api/projectConfig/kanbanConfig";
-
-export default {
-  name: 'edit',
-  components: {winSm, myButton},
-  props: {
-    // setting 涓』鑷冲皯鍖呭惈鎺у埗dialog鏄剧ず鎴栭殣钘忕殑灞炴��,鍏朵綑灞炴�у彲鎷撳睍
-    // 灏嗘坊鍔�/淇敼鐨勫ぇ閲忔暟鎹強閫昏緫浠庡垪琛ㄩ〉闈腑鍒嗙鍑烘潵,閬垮厤鍒楄〃椤甸潰浠g爜杩囧,瀹℃煡鍥伴毦
-    // 鑻ユ椤甸潰椤诲洖浼犳暟鎹嚦鐖堕〉闈�,鍙湪寮曠敤缁勪欢鏃舵坊鍔犱簨浠�,鏈〉闈娇鐢╰his.$emit('浜嬩欢鍚�',鍙傛暟1,鍙傛暟2...)鍥炰紶鏁版嵁
-    setting: {
-      type: Object,
-      default: () => {
-      }
-    }
-  },
-  data() {
-    return {
-      loading: false,
-      formData: {
-        boardName: '',
-        boardCode: '',
-        sort: '',
-        status: 1
-      },
-      rules: {
-        boardName: [
-          {required: true, message: '璇疯緭鍏ュ叧閿妭鐐瑰悕绉�', trigger: 'blur'},
-        ],
-        boardCode: [
-          {required: true, message: '璇疯緭鍏ョ紪鍙�', trigger: 'blur'},
-        ]
-      }
-    }
-  },
-  created() {
-    this.loading = true
-    this.getInfo()
-  },
-  methods: {
-    getInfo() {
-      this.title = this.setting.title
-      if (this.setting.id != null) {
-        // 鏌ヨ鏁版嵁
-        api.getDetail({id: this.setting.id}).then(res => {
-          this.loading = false
-          this.formData = Object.assign(this.formData, res)
-        })
-      }else{
-        this.loading = false
-      }
-    },
-    close() {
-      this.formData = {
-        planTypeCode: '',
-        projectName: '',
-        projectCode: '',
-        status: 1,
-        remark: '',
-      }
-      this.$emit('close')
-    },
-    save() {
-      this.$refs.ruleForm.validate((valid) => {
-        if (valid) {
-          const params = Object.assign({}, this.formData)
-          this.loading = true
-          api[params.id?'upd':'add'](params).then(res => {
-            this.loading = false
-            if (res) {
-              this.$message.success('淇濆瓨鎴愬姛锛�')
-              this.close()
-              this.$emit('search')
-            } else {
-              this.$message.error('淇濆瓨澶辫触')
-            }
-          }).catch(()=>{
-            this.loading = false
-          })
-        } else {
-          this.$message.error('鏍¢獙鏈�氳繃锛岃妫�鏌ャ��')
-        }
-      })
-    }
-  }
-}
-</script>
diff --git a/admin-web/src/views/projectConfig/kanbanConfig/index.vue b/admin-web/src/views/projectConfig/kanbanConfig/index.vue
deleted file mode 100644
index 89ad20c..0000000
--- a/admin-web/src/views/projectConfig/kanbanConfig/index.vue
+++ /dev/null
@@ -1,166 +0,0 @@
-<template>
-  <div class="app-container">
-    <el-card class="box-card" shadow="never">
-      <div class="filter-container" style="margin-bottom: 10px">
-        <my-search ref="searchBar" :items="items" @search="filterForm"></my-search>
-      </div>
-      <!--鍒楄〃-->
-      <my-table-v2 ref="myTable" :filter="filterFrom" :table="table"/>
-    </el-card>
-    <edit v-if="editSetting.show" :setting="editSetting" @close="editSetting.show = false" @search="search"></edit>
-    <nodeChoose v-if="nodeSetting.show" :setting="nodeSetting" @close="nodeSetting.show = false" @search="search"></nodeChoose>
-  </div>
-</template>
-
-<script>
-import MyTableV2 from '@/components/myTable/myTableV2';
-import SettingIplatform from '@/utils/settingIplatform';
-import items from './items';
-import edit from './edit'
-import nodeChoose from "@/views/projectConfig/kanbanConfig/nodeChoose";
-import {updStatus} from "@/api/projectConfig/kanbanConfig";
-
-export default {
-  components: {MyTableV2, edit,nodeChoose},
-  data() {
-    return {
-      // 鎼滅储鏉′欢
-      items: items,
-      filterFrom: {
-        boardName: '',
-        status: '1',
-      },
-      //鏂板缂栬緫
-      editSetting: {
-        title: '',
-        id: '',
-        show: false,
-      },
-      //鑺傜偣璁剧疆
-      nodeSetting: {
-        title: '妯℃澘鑺傜偣璁剧疆',
-        stageId: '',
-        show: false,
-      },
-      // 琛ㄦ牸鏁版嵁
-      table: {
-        showIndex: true, // 鏄惁鏄剧ず搴忓彿
-        expand: false, // 鏄惁鏄剧ず璇︽儏鏁版嵁
-        url: SettingIplatform.apiBaseURL + '/pc/p/temp/project/board/list', // 璇锋眰鍦板潃
-        // 宸ュ叿鏉�
-        tools: {
-          columnsCtrl: {
-            // 鍒楁帶鍒舵寜閽�
-            show: false,
-          },
-          generalExport: {
-            // 閫氱敤瀵煎嚭鎸夐挳
-            show: false,
-          },
-          // 鑷畾涔夊伐鍏锋潯鎸夐挳
-          custom: [],
-        },
-        // 鍒椾俊鎭�
-        columns: [
-          {title: '鍏抽敭鑺傜偣鍚嶇О', field: 'boardName', align: 'left'},
-          // {title: '缂栧彿', field: 'boardCode', align: 'center'},
-          {title: '椤哄簭鍙�', field: 'sort', align: 'left'},
-          {
-            field: 'status',
-            title: '鐘舵��',
-            align: 'center',
-            width: 80,
-            switch: (row) => {
-              return {
-                value: row.status === 1, // 寮�
-                label: row.status === 1 ? '鍚敤' : '绂佺敤', // 寮�鐨勬弿杩�
-                click: () => {
-                  // 鐐瑰嚮浜嬩欢
-                  this.updState(row);
-                },
-              };
-            },
-          },
-        ],
-        // 鎿嶄綔淇℃伅
-        operation: {
-          show: true, // 鏄剧ず鎿嶄綔鍒�
-          width: '250', // 鍒楀
-          attr: [
-            {
-              title: '缂栬緫',
-              events: (row) => {
-                this.showAdd(row.id);
-              },
-            },
-            {
-              title: '妯℃澘鑺傜偣璁剧疆',
-              type: 'success',
-              events: (row) => {
-                this.showNode(row.id);
-              },
-            },
-          ],
-        },
-        paging: {
-          show: false, // 鏄剧ず鍒嗛〉
-          // 鍒嗛〉淇℃伅
-          page: {
-            small: false,
-            pageNum: 1,
-            pageSize: 10,
-            total: 0,
-          },
-        },
-      },
-    };
-  },
-  mounted() {
-  },
-  methods: {
-    // 鏌ヨtable鍒楄〃
-    search(pageNum) {
-      if (pageNum != undefined) {
-        this.$refs.myTable.search(pageNum);
-      } else {
-        this.$refs.myTable.search();
-      }
-    },
-    filterForm(params) {
-      this.filterFrom = Object.assign(this.filterFrom, params);
-      this.search();
-    },
-    //娣诲姞銆佺紪杈�
-    showAdd(id) {
-      let title = '娣诲姞';
-      if (id != null) {
-        title = '缂栬緫';
-      }
-      this.editSetting.id = id;
-      this.editSetting.title = title;
-      this.editSetting.show = true;
-    },
-    updState(row) {
-      let text = row.status === 0 ? "鍚敤" : "绂佺敤";
-      this.$modal.confirm('纭瑕�' + text + '"' + row.boardName + '"鑺傜偣鍚楋紵').then(() => {
-        let status = row.status === 1 ? 0 : 1
-        updStatus({
-          id: row.id,
-          status
-        }).then(res => {
-          if (res) {
-            row.status = row.status === 1 ? 0 : 1
-            this.$modal.msgSuccess(text + "鎴愬姛");
-          }
-        })
-      })
-    },
-    showNode(id) {
-      this.nodeSetting.id = id;
-      this.nodeSetting.show = true;
-    },
-  },
-};
-</script>
-
-<style scoped></style>
diff --git a/admin-web/src/views/projectConfig/kanbanConfig/items.js b/admin-web/src/views/projectConfig/kanbanConfig/items.js
deleted file mode 100644
index bebbf01..0000000
--- a/admin-web/src/views/projectConfig/kanbanConfig/items.js
+++ /dev/null
@@ -1,33 +0,0 @@
-export default [
-  {
-    type: 'text',
-    dataIndex: 'boardName',
-    label: '鍏抽敭鑺傜偣鍚嶇О',
-    placeholder: '璇疯緭鍏�',
-    defaultValue: ''
-  },
-  /*{
-    type: 'text',
-    dataIndex: 'boardCode',
-    label: '妯℃澘缂栧彿',
-    placeholder: '妯℃澘缂栧彿',
-    defaultValue: ''
-  },*/
-  {
-    type: 'select',
-    dataIndex: 'status',
-    label: '鐘舵��',
-    placeholder: '璇烽�夋嫨',
-    defaultValue: '1',
-    options: [
-      {
-        label: '鍚敤',
-        value: '1'
-      },
-      {
-        label: '绂佺敤',
-        value: '0'
-      }
-    ]
-  }
-]
diff --git a/admin-web/src/views/projectConfig/kanbanConfig/nodeChoose.vue b/admin-web/src/views/projectConfig/kanbanConfig/nodeChoose.vue
deleted file mode 100644
index 054bfa3..0000000
--- a/admin-web/src/views/projectConfig/kanbanConfig/nodeChoose.vue
+++ /dev/null
@@ -1,129 +0,0 @@
-<template>
-  <win-md :title="setting.title" @close="close" :width="'800px'">
-    <div style="min-height: 300px">
-      <el-table
-        v-loading="loading"
-        border
-        :data="tableData"
-        style="width: 100%;margin-top: 15px">
-        <el-table-column
-          prop="tempProjectName"
-          align="center"
-          width="200"
-          label="妯℃澘"/>
-        <el-table-column
-          align="center"
-          label="閫夋嫨鑺傜偣">
-          <template slot-scope="{row,$index}">
-            <el-cascader
-              :key="$index"
-              style="width: 100%;"
-              v-model="row.tempStageNodeIds"
-              :options="row.options"
-              :show-all-levels="false"
-              :props="{ multiple: true, emitPath: false,value:'id', label:'name'}"
-              clearable></el-cascader>
-          </template>
-        </el-table-column>
-      </el-table>
-    </div>
-
-    <div slot="footer" align="center" class="dialog-footer">
-      <my-button name="鍙栨秷" site="form" @click="close"/>
-      <my-button name="淇濆瓨" site="form" @click="save"/>
-    </div>
-  </win-md>
-</template>
-
-<script>
-import winMd from '@/components/win/win-md'
-import myButton from '@/components/myButton/myButton'
-import {getList, getTree, upd} from "@/api/projectConfig/kanbanNode";
-
-export default {
-  name: 'nodeChoose',
-  components: {winMd, myButton},
-  props: {
-    // setting 涓』鑷冲皯鍖呭惈鎺у埗dialog鏄剧ず鎴栭殣钘忕殑灞炴��,鍏朵綑灞炴�у彲鎷撳睍
-    // 灏嗘坊鍔�/淇敼鐨勫ぇ閲忔暟鎹強閫昏緫浠庡垪琛ㄩ〉闈腑鍒嗙鍑烘潵,閬垮厤鍒楄〃椤甸潰浠g爜杩囧,瀹℃煡鍥伴毦
-    // 鑻ユ椤甸潰椤诲洖浼犳暟鎹嚦鐖堕〉闈�,鍙湪寮曠敤缁勪欢鏃舵坊鍔犱簨浠�,鏈〉闈娇鐢╰his.$emit('浜嬩欢鍚�',鍙傛暟1,鍙傛暟2...)鍥炰紶鏁版嵁
-    setting: {
-      type: Object,
-      default: () => {
-      }
-    }
-  },
-  data() {
-    return {
-      loading: false,
-      options: [],
-      tableData: []
-    }
-  },
-  mounted() {
-  },
-  created() {
-    this.getList()
-  },
-  methods: {
-    getList() {
-      this.loading = true
-      getList({id: this.setting.id}).then(res => {
-        let count = res.length
-        res.map((item) => {
-          getTree({tempProjectId: item.id}).then(ret => {
-            item.options = ret
-            count--
-            if (count < 1) {
-              this.tableData = res
-              this.loading = false
-            }
-          })
-        })
-      })
-    },
-    close() {
-      this.loading = false
-      this.tableData = []
-      this.$emit('close')
-    },
-    save() {
-      let arr = []
-      if (this.tableData.every(item => item.tempStageNodeIds.length === 0)) {
-        this.$modal.msgError('璇烽�夋嫨鑺傜偣')
-        return;
-      }
-      for (let i = 0; i < this.tableData.length; i++) {
-        const item = this.tableData[i]
-        item.tempStageNodeIds.map(node => {
-          item.tempStageNodeId = node
-          arr.push({...item})
-        })
-      }
-      arr.map(item => {
-        item.tempProjectId = item.id
-        delete item.tempStageNodeIds
-        delete item.id
-        delete item.options
-        delete item.tempProjectName
-      })
-      this.loading = true
-      upd({
-        id: this.setting.id,
-        tempProjectBoardNode: arr
-      }).then(res => {
-        this.loading = false
-        if (res) {
-          this.$message.success('淇濆瓨鎴愬姛锛�')
-          this.close()
-          this.$emit('search')
-        } else {
-          this.$message.error('淇濆瓨澶辫触')
-        }
-      }).catch(() => {
-        this.loading = false
-      })
-    }
-  }
-}
-</script>
diff --git a/admin-web/src/views/projectConfig/stageConfig/edit.vue b/admin-web/src/views/projectConfig/stageConfig/edit.vue
deleted file mode 100644
index c99c81b..0000000
--- a/admin-web/src/views/projectConfig/stageConfig/edit.vue
+++ /dev/null
@@ -1,116 +0,0 @@
-<template>
-  <win-sm :title="setting.title" @close="close" :width="'800px'">
-    <el-form v-loading="loading" ref="ruleForm" :model="formData" :rules="rules" class="demo-ruleForm" label-width="100px">
-      <el-form-item label="闃舵鍚嶇О" prop="stageName">
-        <el-input v-model="formData.stageName" clearable maxlength="32" show-word-limit style="width: 100%"/>
-      </el-form-item>
-      <el-form-item label="灞曠ず椤哄簭" prop="sort">
-        <el-input-number v-model="formData.sort" clearable :min="1"/>
-      </el-form-item>
-      <el-form-item label="鐘舵��" prop="status">
-        <el-radio-group v-model="formData.status">
-          <el-radio :label="1" border>鍚敤</el-radio>
-          <el-radio :label="0" border>绂佺敤</el-radio>
-        </el-radio-group>
-      </el-form-item>
-      <el-form-item label="澶囨敞" prop="remark">
-        <el-input
-          v-model="formData.remark"
-          type="textarea"
-          :rows="3"
-          maxlength="200"
-          show-word-limit
-        />
-      </el-form-item>
-    </el-form>
-    <div slot="footer" align="center" class="dialog-footer">
-      <my-button name="鍙栨秷" site="form" @click="close"/>
-      <my-button name="淇濆瓨" site="form" @click="save"/>
-    </div>
-  </win-sm>
-</template>
-
-<script>
-import winSm from '@/components/win/win-sm'
-import myButton from '@/components/myButton/myButton'
-import * as stage from "@/api/projectConfig/stageConfig";
-
-export default {
-  name: 'edit',
-  components: {winSm, myButton},
-  props: {
-    // setting 涓』鑷冲皯鍖呭惈鎺у埗dialog鏄剧ず鎴栭殣钘忕殑灞炴��,鍏朵綑灞炴�у彲鎷撳睍
-    // 灏嗘坊鍔�/淇敼鐨勫ぇ閲忔暟鎹強閫昏緫浠庡垪琛ㄩ〉闈腑鍒嗙鍑烘潵,閬垮厤鍒楄〃椤甸潰浠g爜杩囧,瀹℃煡鍥伴毦
-    // 鑻ユ椤甸潰椤诲洖浼犳暟鎹嚦鐖堕〉闈�,鍙湪寮曠敤缁勪欢鏃舵坊鍔犱簨浠�,鏈〉闈娇鐢╰his.$emit('浜嬩欢鍚�',鍙傛暟1,鍙傛暟2...)鍥炰紶鏁版嵁
-    setting: {
-      type: Object,
-      default: () => {
-      }
-    }
-  },
-  data() {
-    return {
-      loading: false,
-      formData: {
-        stageName: '',
-        sort: 1,
-        status: 1,
-        remark: '',
-      },
-      rules: {
-        stageName: [
-          {required: true, message: '璇疯緭鍏ラ樁娈靛悕绉�', trigger: 'blur'}
-        ],
-      }
-    }
-  },
-  created() {
-    this.loading = true
-    this.getInfo()
-  },
-  methods: {
-    getInfo() {
-      if (this.setting.id != null) {
-        // 鏌ヨ鏁版嵁
-        stage.getDetail({id: this.setting.id}).then(res => {
-          this.loading = false
-          this.formData = Object.assign(this.formData, res)
-        })
-      }else{
-        this.loading = false
-      }
-    },
-    close() {
-      this.formData = {
-        stageName: '',
-        sort: 1,
-        status: 1,
-        remark: '',
-      }
-      this.$emit('close')
-    },
-    save() {
-      this.$refs.ruleForm.validate((valid) => {
-        if (valid) {
-          const params = Object.assign({}, this.formData)
-          this.loading = true
-          stage[params.id?'upd':'add'](params).then(res => {
-            this.loading = false
-            if (res) {
-              this.$message.success('淇濆瓨鎴愬姛锛�')
-              this.close()
-              this.$emit('search')
-            } else {
-              this.$message.error('淇濆瓨澶辫触')
-            }
-          }).catch(()=>{
-            this.loading = false
-          })
-        } else {
-          this.$message.error('鏍¢獙鏈�氳繃锛岃妫�鏌ャ��')
-        }
-      })
-    }
-  }
-}
-</script>
diff --git a/admin-web/src/views/projectConfig/stageConfig/index.vue b/admin-web/src/views/projectConfig/stageConfig/index.vue
deleted file mode 100644
index 8440bb1..0000000
--- a/admin-web/src/views/projectConfig/stageConfig/index.vue
+++ /dev/null
@@ -1,191 +0,0 @@
-<template>
-  <div class="app-container">
-    <el-card class="box-card" shadow="never">
-      <div class="filter-container" style="margin-bottom: 10px">
-        <my-search ref="searchBar" :items="items" @search="filterForm"></my-search>
-      </div>
-      <!--鍒楄〃-->
-      <my-table-v2 ref="myTable" :filter="filterFrom" :table="table"/>
-    </el-card>
-    <edit v-if="editSetting.show" :setting="editSetting" @close="editSetting.show = false" @search="search"></edit>
-    <nodeConfig v-if="nodeSetting.show" :setting="nodeSetting" @close="nodeSetting.show = false" @search="search"></nodeConfig>
-  </div>
-</template>
-
-<script>
-import MyTableV2 from '@/components/myTable/myTableV2';
-import SettingIplatform from '@/utils/settingIplatform';
-import items from './items';
-import edit from './edit'
-import nodeConfig from './node/node'
-import {del, updStatus} from "@/api/projectConfig/stageConfig";
-
-export default {
-  components: {MyTableV2, edit, nodeConfig},
-  data() {
-    return {
-      // 鎼滅储鏉′欢
-      items: items,
-      filterFrom: {
-        stageName: '',
-        status: '1',
-      },
-      //鏂板缂栬緫
-      editSetting: {
-        title: '',
-        id: '',
-        show: false,
-      },
-      //鑺傜偣璁剧疆
-      nodeSetting: {
-        title: '鑺傜偣璁剧疆',
-        stageId: '',
-        show: false,
-      },
-      // 琛ㄦ牸鏁版嵁
-      table: {
-        showIndex: true, // 鏄惁鏄剧ず搴忓彿
-        expand: false, // 鏄惁鏄剧ず璇︽儏鏁版嵁
-        url: SettingIplatform.apiBaseURL + '/pc/p/temp/stage/list', // 璇锋眰鍦板潃
-        // 宸ュ叿鏉�
-        tools: {
-          columnsCtrl: {
-            // 鍒楁帶鍒舵寜閽�
-            show: false,
-          },
-          generalExport: {
-            // 閫氱敤瀵煎嚭鎸夐挳
-            show: false,
-          },
-          // 鑷畾涔夊伐鍏锋潯鎸夐挳
-          custom: [
-            {
-              name: '鏂板',
-              click: () => {
-                this.showAdd(null);
-              },
-            },
-          ],
-        },
-        // 鍒椾俊鎭�
-        columns: [
-          {title: '闃舵鍚嶇О', field: 'stageName', align: 'left', width: '200px'},
-          {title: '椤哄簭鍙�', field: 'sort', align: 'center', width: '80px'},
-          {title: '鍖呭惈鑺傜偣', field: 'nodeName', align: 'left'},
-          {
-            field: 'status',
-            title: '鐘舵��',
-            align: 'center',
-            width: 80,
-            switch: (row) => {
-              return {
-                value: row.status === 1, // 寮�
-                label: row.status === 1 ? '鍚敤' : '绂佺敤', // 寮�鐨勬弿杩�
-                click: () => {
-                  // 鐐瑰嚮浜嬩欢
-                  this.updState(row);
-                },
-              };
-            },
-          },
-        ],
-        // 鎿嶄綔淇℃伅
-        operation: {
-          show: true, // 鏄剧ず鎿嶄綔鍒�
-          width: '250', // 鍒楀
-          attr: [
-            {
-              title: '缂栬緫',
-              events: (row) => {
-                this.showAdd(row.id);
-              },
-            },
-            {
-              title: '鑺傜偣璁剧疆',
-              type: 'warning',
-              events: (row) => {
-                this.showNode(row.id);
-              },
-            },
-            {
-              title: '鍒犻櫎',
-              events: (row) => {
-                this.handleDelete(row);
-              },
-            },
-          ],
-        },
-        paging: {
-          show: true, // 鏄剧ず鍒嗛〉
-          // 鍒嗛〉淇℃伅
-          page: {
-            small: false,
-            pageNum: 1,
-            pageSize: 10,
-            total: 0,
-          },
-        },
-      },
-    };
-  },
-  mounted() {
-  },
-  methods: {
-    // 鏌ヨtable鍒楄〃
-    search(pageNum) {
-      if (pageNum != undefined) {
-        this.$refs.myTable.search(pageNum);
-      } else {
-        this.$refs.myTable.search();
-      }
-    },
-    filterForm(params) {
-      this.filterFrom = Object.assign(this.filterFrom, params);
-      this.search();
-    },
-    //娣诲姞銆佺紪杈�
-    showAdd(id) {
-      let title = '娣诲姞';
-      if (id != null) {
-        title = '缂栬緫';
-      }
-      this.editSetting.id = id;
-      this.editSetting.title = title;
-      this.editSetting.show = true;
-    },
-    updState(row) {
-      let text = row.status === 0 ? "鍚敤" : "绂佺敤";
-      this.$modal.confirm('纭瑕�' + text + '"' + row.stageName + '"鍚楋紵').then(() => {
-        let status = row.status === 1 ? 0 : 1
-        updStatus({
-          id: row.id,
-          status
-        }).then(res => {
-          if (res) {
-            row.status = row.status === 1 ? 0 : 1
-            this.$modal.msgSuccess(text + "鎴愬姛");
-            this.search()
-          }
-        })
-      })
-    },
-    showNode(id) {
-      this.nodeSetting.stageId = id;
-      this.nodeSetting.show = true;
-    },
-    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
-    handleDelete(row) {
-      this.$confirm('鏄惁纭鍒犻櫎"' + row.stageName + '"闃舵锛�', {
-        type: 'warning'
-      }).then(() => {
-        del({id: row.id}).then(res => {
-          this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
-          this.search()
-        })
-      })
-    },
-  },
-};
-</script>
-
-<style scoped></style>
diff --git a/admin-web/src/views/projectConfig/stageConfig/items.js b/admin-web/src/views/projectConfig/stageConfig/items.js
deleted file mode 100644
index acdebae..0000000
--- a/admin-web/src/views/projectConfig/stageConfig/items.js
+++ /dev/null
@@ -1,26 +0,0 @@
-export default [
-  {
-    type: 'text',
-    dataIndex: 'stageName',
-    label: '闃舵鍚嶇О',
-    placeholder: '璇疯緭鍏�',
-    defaultValue: ''
-  },
-  {
-    type: 'select',
-    dataIndex: 'status',
-    label: '鐘舵��',
-    placeholder: '璇烽�夋嫨',
-    defaultValue: '1',
-    options: [
-      {
-        label: '鍚敤',
-        value: '1'
-      },
-      {
-        label: '绂佺敤',
-        value: '0'
-      }
-    ]
-  }
-]
diff --git a/admin-web/src/views/projectConfig/stageConfig/node/edit.vue b/admin-web/src/views/projectConfig/stageConfig/node/edit.vue
deleted file mode 100644
index d8624c2..0000000
--- a/admin-web/src/views/projectConfig/stageConfig/node/edit.vue
+++ /dev/null
@@ -1,118 +0,0 @@
-<template>
-  <win-sm :title="setting.title" @close="close" :width="'800px'">
-    <el-form v-loading="loading" ref="ruleForm" :model="formData" :rules="rules" class="demo-ruleForm" label-width="100px">
-      <el-form-item label="鑺傜偣鍚嶇О" prop="nodeName">
-        <el-input v-model="formData.nodeName" clearable maxlength="32" show-word-limit style="width: 100%"/>
-      </el-form-item>
-      <el-form-item label="灞曠ず椤哄簭" prop="sort">
-        <el-input-number v-model="formData.sort" clearable :min="1"/>
-      </el-form-item>
-      <el-form-item label="鐘舵��" prop="status">
-        <el-radio-group v-model="formData.status">
-          <el-radio :label="1" border>鍚敤</el-radio>
-          <el-radio :label="0" border>绂佺敤</el-radio>
-        </el-radio-group>
-      </el-form-item>
-      <el-form-item label="澶囨敞" prop="remark">
-        <el-input
-          v-model="formData.remark"
-          type="textarea"
-          :rows="3"
-          maxlength="200"
-          show-word-limit
-        />
-      </el-form-item>
-    </el-form>
-    <div slot="footer" align="center" class="dialog-footer">
-      <my-button name="鍙栨秷" site="form" @click="close"/>
-      <my-button name="淇濆瓨" site="form" @click="save"/>
-    </div>
-  </win-sm>
-</template>
-
-<script>
-import winSm from '@/components/win/win-sm'
-import myButton from '@/components/myButton/myButton'
-import * as node from "@/api/projectConfig/stageNode";
-
-export default {
-  name: 'edit',
-  components: {winSm, myButton},
-  props: {
-    // setting 涓』鑷冲皯鍖呭惈鎺у埗dialog鏄剧ず鎴栭殣钘忕殑灞炴��,鍏朵綑灞炴�у彲鎷撳睍
-    // 灏嗘坊鍔�/淇敼鐨勫ぇ閲忔暟鎹強閫昏緫浠庡垪琛ㄩ〉闈腑鍒嗙鍑烘潵,閬垮厤鍒楄〃椤甸潰浠g爜杩囧,瀹℃煡鍥伴毦
-    // 鑻ユ椤甸潰椤诲洖浼犳暟鎹嚦鐖堕〉闈�,鍙湪寮曠敤缁勪欢鏃舵坊鍔犱簨浠�,鏈〉闈娇鐢╰his.$emit('浜嬩欢鍚�',鍙傛暟1,鍙傛暟2...)鍥炰紶鏁版嵁
-    setting: {
-      type: Object,
-      default: () => {
-      }
-    }
-  },
-  data() {
-    return {
-      loading: false,
-      formData: {
-        nodeName: '',
-        sort: 1,
-        status: 1,
-        remark: '',
-      },
-      rules: {
-        nodeName: [
-          {required: true, message: '璇疯緭鍏ヨ妭鐐瑰悕绉�', trigger: 'blur'}
-        ],
-      }
-    }
-  },
-  created() {
-    this.loading = true
-    this.getInfo()
-  },
-  methods: {
-    getInfo() {
-      this.title = this.setting.title
-      if (this.setting.id != null) {
-        // 鏌ヨ鏁版嵁
-        node.getDetail({id: this.setting.id}).then(res => {
-          this.loading = false
-          this.formData = Object.assign(this.formData, res)
-        })
-      }else{
-        this.loading = false
-      }
-    },
-    close() {
-      this.formData = {
-        nodeName: '',
-        sort: 1,
-        status: 1,
-        remark: '',
-      }
-      this.$emit('close')
-    },
-    save() {
-      this.$refs.ruleForm.validate((valid) => {
-        if (valid) {
-          const params = Object.assign({}, this.formData)
-          params.stageId = this.setting.stageId
-          this.loading = true
-          node[params.id?'upd':'add'](params).then(res => {
-            this.loading = false
-            if (res) {
-              this.$message.success('淇濆瓨鎴愬姛锛�')
-              this.close()
-              this.$emit('search')
-            } else {
-              this.$message.error('淇濆瓨澶辫触')
-            }
-          }).catch(()=>{
-            this.loading = false
-          })
-        } else {
-          this.$message.error('鏍¢獙鏈�氳繃锛岃妫�鏌ャ��')
-        }
-      })
-    }
-  }
-}
-</script>
diff --git a/admin-web/src/views/projectConfig/stageConfig/node/items.js b/admin-web/src/views/projectConfig/stageConfig/node/items.js
deleted file mode 100644
index 3b75f44..0000000
--- a/admin-web/src/views/projectConfig/stageConfig/node/items.js
+++ /dev/null
@@ -1,26 +0,0 @@
-export default [
-  {
-    type: 'text',
-    dataIndex: 'nodeName',
-    label: '鑺傜偣鍚嶇О',
-    placeholder: '璇疯緭鍏�',
-    defaultValue: ''
-  },
-  {
-    type: 'select',
-    dataIndex: 'status',
-    label: '鐘舵��',
-    placeholder: '璇烽�夋嫨',
-    defaultValue: '1',
-    options: [
-      {
-        label: '鍚敤',
-        value: '1'
-      },
-      {
-        label: '绂佺敤',
-        value: '0'
-      }
-    ]
-  }
-]
diff --git a/admin-web/src/views/projectConfig/stageConfig/node/node.vue b/admin-web/src/views/projectConfig/stageConfig/node/node.vue
deleted file mode 100644
index 75a2212..0000000
--- a/admin-web/src/views/projectConfig/stageConfig/node/node.vue
+++ /dev/null
@@ -1,192 +0,0 @@
-<template>
-  <win-lg :title="setting.title" @close="close" :width="'800px'">
-    <el-card class="box-card" shadow="never">
-      <div class="filter-container" style="margin-bottom: 10px">
-        <my-search ref="searchBar" :items="items" @search="filterForm"></my-search>
-      </div>
-      <!--鍒楄〃-->
-      <my-table-v2 ref="myTable" :filter="filterFrom" :table="table"/>
-    </el-card>
-    <edit v-if="editSetting.show" :setting="editSetting" @close="closeNode" @search="search"></edit>
-  </win-lg>
-</template>
-
-<script>
-import MyTableV2 from '@/components/myTable/myTableV2';
-import winLg from '@/components/win/win-lg'
-import SettingIplatform from '@/utils/settingIplatform';
-import items from './items';
-import edit from './edit'
-import {del, updStatus} from "@/api/projectConfig/stageNode";
-
-export default {
-  name: 'nodeConfig',
-  components: {MyTableV2, winLg, edit},
-  props: {
-    // setting 涓』鑷冲皯鍖呭惈鎺у埗dialog鏄剧ず鎴栭殣钘忕殑灞炴��,鍏朵綑灞炴�у彲鎷撳睍
-    // 灏嗘坊鍔�/淇敼鐨勫ぇ閲忔暟鎹強閫昏緫浠庡垪琛ㄩ〉闈腑鍒嗙鍑烘潵,閬垮厤鍒楄〃椤甸潰浠g爜杩囧,瀹℃煡鍥伴毦
-    // 鑻ユ椤甸潰椤诲洖浼犳暟鎹嚦鐖堕〉闈�,鍙湪寮曠敤缁勪欢鏃舵坊鍔犱簨浠�,鏈〉闈娇鐢╰his.$emit('浜嬩欢鍚�',鍙傛暟1,鍙傛暟2...)鍥炰紶鏁版嵁
-    setting: {
-      type: Object,
-      default: () => {
-      }
-    }
-  },
-  data() {
-    return {
-      // 鎼滅储鏉′欢
-      items: items,
-      filterFrom: {
-        nodeName: '',
-        status: '1',
-      },
-      //鏂板缂栬緫
-      editSetting: {
-        title: '',
-        id: '',
-        show: false,
-      },
-      // 琛ㄦ牸鏁版嵁
-      table: {
-        showIndex: true, // 鏄惁鏄剧ず搴忓彿
-        expand: false, // 鏄惁鏄剧ず璇︽儏鏁版嵁
-        url: SettingIplatform.apiBaseURL + '/pc/p/temp/stage/node/list?stageId='+this.setting.stageId, // 璇锋眰鍦板潃
-        // 宸ュ叿鏉�
-        tools: {
-          columnsCtrl: {
-            // 鍒楁帶鍒舵寜閽�
-            show: false,
-          },
-          generalExport: {
-            // 閫氱敤瀵煎嚭鎸夐挳
-            show: false,
-          },
-          // 鑷畾涔夊伐鍏锋潯鎸夐挳
-          custom: [
-            {
-              name: '鏂板',
-              click: () => {
-                this.showAdd(null);
-              },
-            },
-          ],
-        },
-        // 鍒椾俊鎭�
-        columns: [
-          {title: '鑺傜偣鍚嶇О', field: 'nodeName', align: 'center'},
-          {title: '椤哄簭鍙�', field: 'sort', align: 'center'},
-          {title: '璇存槑', field: 'remark', align: 'center'},
-          {
-            field: 'status',
-            title: '鐘舵��',
-            align: 'center',
-            width: 80,
-            switch: (row) => {
-              return {
-                value: row.status === 1, // 寮�
-                label: row.status === 1 ? '鍚敤' : '绂佺敤', // 寮�鐨勬弿杩�
-                click: () => {
-                  // 鐐瑰嚮浜嬩欢
-                  this.updState(row);
-                },
-              };
-            },
-          },
-        ],
-        // 鎿嶄綔淇℃伅
-        operation: {
-          show: true, // 鏄剧ず鎿嶄綔鍒�
-          width: '200', // 鍒楀
-          attr: [
-            {
-              title: '缂栬緫',
-              events: (row) => {
-                this.showAdd(row.id);
-              },
-            },
-            {
-              title: '鍒犻櫎',
-              events: (row) => {
-                this.handleDelete(row);
-              },
-            },
-          ],
-        },
-        paging: {
-          show: true, // 鏄剧ず鍒嗛〉
-          // 鍒嗛〉淇℃伅
-          page: {
-            small: false,
-            pageNum: 1,
-            pageSize: 10,
-            total: 0,
-          },
-        },
-      },
-    };
-  },
-  mounted() {
-  },
-  methods: {
-    close() {
-      this.$emit('close')
-    },
-    closeNode() {
-      this.editSetting.show = false
-      this.$emit('search')
-    },
-    // 鏌ヨtable鍒楄〃
-    search(pageNum) {
-      if (pageNum != undefined) {
-        this.$refs.myTable.search(pageNum);
-      } else {
-        this.$refs.myTable.search();
-      }
-    },
-    filterForm(params) {
-      this.filterFrom = Object.assign(this.filterFrom, params);
-      this.search();
-    },
-    //娣诲姞銆佺紪杈�
-    showAdd(id) {
-      let title = '娣诲姞';
-      if (id != null) {
-        title = '缂栬緫';
-      }
-      this.editSetting.id = id||this.setting.id;
-      this.editSetting.stageId = this.setting.stageId;
-      this.editSetting.title = title;
-      this.editSetting.show = true;
-    },
-    updState(row) {
-      let text = row.status === 0 ? "鍚敤" : "绂佺敤";
-      this.$modal.confirm('纭瑕�' + text + '"' + row.nodeName + '"鍚楋紵').then(() => {
-        let status = row.status === 1 ? 0 : 1
-        updStatus({
-          id: row.id,
-          status
-        }).then(res => {
-          if (res) {
-            row.status = row.status === 1 ? 0 : 1
-            this.$modal.msgSuccess(text + "鎴愬姛");
-            this.search()
-          }
-        })
-      })
-    },
-    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
-    handleDelete(row) {
-      this.$confirm('鏄惁纭鍒犻櫎"' + row.nodeName + '"闃舵锛�', {
-        type: 'warning'
-      }).then(() => {
-        del({id:row.id}).then(res=>{
-          this.$modal.msgSuccess( "鍒犻櫎鎴愬姛");
-          this.search()
-        })
-      })
-    },
-  },
-};
-</script>
-
-<style scoped></style>
diff --git a/admin-web/src/views/projectConfig/warningConfig/chooseItems.js b/admin-web/src/views/projectConfig/warningConfig/chooseItems.js
deleted file mode 100644
index e478dfd..0000000
--- a/admin-web/src/views/projectConfig/warningConfig/chooseItems.js
+++ /dev/null
@@ -1,16 +0,0 @@
-export default [
-  {
-    type: 'text',
-    dataIndex: 'userName',
-    label: '浜哄憳濮撳悕',
-    placeholder: "璇疯緭鍏�",
-    defaultValue: ''
-  },
-  {
-    type: 'text',
-    dataIndex: 'userPhone',
-    label: '鎵嬫満鍙�',
-    placeholder: "璇疯緭鍏�",
-    defaultValue: ''
-  }
-]
diff --git a/admin-web/src/views/projectConfig/warningConfig/chooseUser.vue b/admin-web/src/views/projectConfig/warningConfig/chooseUser.vue
deleted file mode 100644
index 6e0140f..0000000
--- a/admin-web/src/views/projectConfig/warningConfig/chooseUser.vue
+++ /dev/null
@@ -1,206 +0,0 @@
-<template>
-  <win-md :title="setting.title" @close="close" width="1000px">
-    <el-row :gutter="15">
-      <!--宸︿晶鏍戝舰寮�濮�-->
-      <el-col :span="6">
-        <el-card style="height: calc(100vh - 400px);overflow-y: auto" shadow="never">
-          <my-tree ref="searchTree" :tree-list="treeDataList" @setNode="nodeClick" @search="search"></my-tree>
-        </el-card>
-      </el-col>
-      <!--宸︿晶鏍戝舰缁撴潫-->
-      <!--鍙充晶鍒楄〃寮�濮�-->
-      <el-col :span="18">
-        <el-card class="box-card" shadow="never">
-          <!--鎼滅储鏉′欢-->
-          <div class="filter-container">
-            <my-search ref="searchBar" :items="chooseItems" @search="fifterForm"></my-search>
-          </div>
-          <el-row style="margin-top: 15px">
-            <el-col>
-              <!--鍒楄〃-->
-              <my-table ref="myTable" :parentSelectionsObject="setting.selections" :filter="filterFrom" :table="table"/>
-            </el-col>
-          </el-row>
-        </el-card>
-      </el-col>
-    </el-row>
-    <div slot="footer" align="center" class="dialog-footer">
-      <my-button name="鍙栨秷" site="form" @click="close"/>
-      <my-button name="淇濆瓨" site="form" @click="save"/>
-    </div>
-  </win-md>
-</template>
-
-<script>
-import winMd from '@/components/win/win-md'
-import myButton from '@/components/myButton/myButton'
-import myTree from '@/components/myTree/index';
-import MyTable from '@/components/myTable/myTable';
-import SettingIplatform from "@/utils/settingIplatform";
-import * as DateFormatter from "@/utils/DateFormatter";
-import {getTree} from "@/api/baseSetting/finsystenant";
-import chooseItems from './chooseItems'
-
-export default {
-  name: "chooseUser",
-  components: {winMd, myButton, MyTable, myTree},
-  props: {
-    // setting 涓』鑷冲皯鍖呭惈鎺у埗dialog鏄剧ず鎴栭殣钘忕殑灞炴��,鍏朵綑灞炴�у彲鎷撳睍
-    // 灏嗘坊鍔�/淇敼鐨勫ぇ閲忔暟鎹強閫昏緫浠庡垪琛ㄩ〉闈腑鍒嗙鍑烘潵,閬垮厤鍒楄〃椤甸潰浠g爜杩囧,瀹℃煡鍥伴毦
-    // 鑻ユ椤甸潰椤诲洖浼犳暟鎹嚦鐖堕〉闈�,鍙湪寮曠敤缁勪欢鏃舵坊鍔犱簨浠�,鏈〉闈娇鐢╰his.$emit('浜嬩欢鍚�',鍙傛暟1,鍙傛暟2...)鍥炰紶鏁版嵁
-    setting: {
-      type: Object,
-      default: () => {
-      }
-    }
-  },
-  data() {
-    return {
-      chooseItems: chooseItems,
-      // 鏍戞暟鎹�
-      treeDataList: [],
-      // 鎼滅储鏉′欢
-      filterFrom: {
-        tenantCode: 0,
-        trnantId: 0,
-        userName: null,
-        userPhone: null,
-      },
-      // 琛ㄦ牸鏁版嵁
-      table: {
-        showIndex: true, // 鏄惁鏄剧ず搴忓彿
-        showCheckBox: true,
-        expand: false, // 鏄惁鏄剧ず璇︽儏鏁版嵁
-        url: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/user/select/list?status=1', // 璇锋眰鍦板潃
-        // 宸ュ叿鏉�
-        tools: {
-          columnsCtrl: {
-            // 鍒楁帶鍒舵寜閽�
-            show: false,
-          },
-          generalExport: {
-            // 閫氱敤瀵煎嚭鎸夐挳
-            show: false,
-          },
-          // 鑷畾涔夊伐鍏锋潯鎸夐挳
-          custom: [
-            {
-              name: '鏂板',
-              click: () => {
-                this.showAdd(null);
-              },
-            },
-          ],
-        },
-        // 鍒椾俊鎭�
-        columns: [
-          {title: '浜哄憳濮撳悕', field: 'userName', align: 'left'},
-          {title: '鍛樺伐缂栧彿', field: 'userCode', align: 'left'},
-          {title: '鎵嬫満鍙�', field: 'userPhone', align: 'center', width: 120},
-          {
-            title: '鍒涘缓鏃堕棿',
-            field: 'createTime',
-            align: 'center',
-            width: 160,
-            formatter: (row) => {
-              return {value: DateFormatter.LongToDateTime(row.createTime)};
-            },
-          },
-        ],
-        // 鎿嶄綔淇℃伅
-        operation: {
-          show: false, // 鏄剧ず鎿嶄綔鍒�
-        },
-        paging: {
-          show: true, // 鏄剧ず鍒嗛〉
-          // 鍒嗛〉淇℃伅
-          page: {
-            small: false,
-            pageNum: 1,
-            pageSize: 10,
-            total: 0,
-          },
-        },
-      },
-    }
-  },
-  created() {
-    // 鑾峰彇鏈烘瀯鏍�
-    this.initTreeData();
-  },
-  mounted() {
-  },
-  methods: {
-    close() {
-      this.$emit('close')
-    },
-    save() {
-      let checkUsers = this.$refs.myTable.getChedkObject()
-      if (checkUsers.length === 0) {
-        this.$message.error('璇烽�夋嫨浜哄憳')
-        return false
-      }
-      this.$emit('checkUsers', checkUsers.map(item => {
-        return {
-          id: item.id,
-          userName: item.userName
-        }
-      }))
-    },
-    // 宸︿晶鏍戝垵濮嬪寲
-    initTreeData() {
-      getTree().then((res) => {
-        const content = res || [];
-        this.treeDataList.splice(0, this.treeDataList.length);
-        this.treeDataList = content;
-        if (this.treeDataList && this.treeDataList.length > 0) {
-          this.tenantId = this.treeDataList[0].id;
-          this.tenantCode = this.treeDataList[0].code;
-        }
-      });
-    },
-    nodeClick(param) {
-      param = param || {};
-      this.p = Object.assign(
-        {},
-        {
-          id: param.id,
-          name: param.name,
-          code: param.code,
-        },
-      );
-      if (this.p.code != undefined && this.p.code != null) {
-        this.filterFrom.tenantCode = this.p.code;
-        this.tenantId = this.p.id;
-      } else {
-        this.filterFrom.tenantCode = 0;
-      }
-      this.table.paging.page.pageNum = 1;
-      this.search(1);
-    },
-    // 鏌ヨtable鍒楄〃
-    search(pageNum) {
-      if (pageNum != undefined) {
-        this.$refs.myTable.search(pageNum);
-      } else {
-        this.$refs.myTable.search();
-      }
-    },
-    // 閲嶇疆
-    reset() {
-      this.filterFrom.tenantCode = null;
-      this.filterFrom.userName = null;
-      this.filterFrom.userPhone = null;
-      this.search(1);
-    },
-    fifterForm(params) {
-      this.filterFrom = Object.assign(this.filterFrom, params);
-      this.search();
-    },
-  }
-}
-</script>
-
-<style scoped>
-
-</style>
diff --git a/admin-web/src/views/projectConfig/warningConfig/edit.vue b/admin-web/src/views/projectConfig/warningConfig/edit.vue
deleted file mode 100644
index 6d0dcc8..0000000
--- a/admin-web/src/views/projectConfig/warningConfig/edit.vue
+++ /dev/null
@@ -1,330 +0,0 @@
-<template>
-  <win-md :title="setting.title" @close="close" :width="'800px'">
-    <el-form v-loading="loading" ref="ruleForm" :model="formData" :rules="rules" class="demo-ruleForm" label-width="100px">
-      <el-form-item label="妯℃澘鍚嶇О" prop="tempExpirationNotifyName">
-        <el-input v-model="formData.tempExpirationNotifyName" placeholder="" clearable maxlength="32" show-word-limit style="width: 400px"/>
-      </el-form-item>
-      <h1>涓存湡鍓嶉璀�</h1>
-      <el-form-item label="涓存湡鍓�" prop="expireBefore1">
-        <el-input-number v-model="formData.expireBefore1" :controls="false" :min="1" :max="10" :step="1" step-strictly style="width: 100px"></el-input-number>
-        <span style="margin-right: 10px">澶�</span>
-        <el-checkbox v-model="formData.beforeManagerNotify1" :true-label="1" :false-label="0">閫氱煡椤圭洰缁忕悊</el-checkbox>
-      </el-form-item>
-      <el-form-item label="閫氱煡浜哄憳" prop="beforeManagerNotifyUser1">
-        <el-button @click="chooseUser('beforeManagerNotifyUser1')" type="primary" plain>閫夋嫨浜哄憳</el-button>
-        <el-tag
-          v-for="(item,i) in formData.beforeManagerNotifyUser1"
-          :key="item.id"
-          type="danger"
-          closable
-          @close="closeUser('beforeManagerNotifyUser1',i)"
-          effect="plain">
-          {{ item.userName }}
-        </el-tag>
-      </el-form-item>
-      <el-form-item label="涓存湡鍓�" prop="expireBefore2">
-        <el-input-number v-model="formData.expireBefore2" :controls="false" :min="1" :max="10" :step="1" step-strictly style="width: 100px"></el-input-number>
-        <span style="margin-right: 10px">澶�</span>
-        <el-checkbox v-model="formData.beforeManagerNotify2" :true-label="1" :false-label="0">閫氱煡椤圭洰缁忕悊</el-checkbox>
-      </el-form-item>
-      <el-form-item label="閫氱煡浜哄憳" prop="beforeManagerNotifyUser2">
-        <el-button @click="chooseUser('beforeManagerNotifyUser2')" type="primary" plain>閫夋嫨浜哄憳</el-button>
-        <el-tag
-          v-for="(item,i) in formData.beforeManagerNotifyUser2"
-          :key="item.id"
-          type="danger"
-          closable
-          @close="closeUser('beforeManagerNotifyUser2',i)"
-          effect="plain">
-          {{ item.userName }}
-        </el-tag>
-      </el-form-item>
-      <el-form-item label="涓存湡鍓�" prop="expireBefore3">
-        <el-input-number v-model="formData.expireBefore3" :controls="false" :min="1" :max="10" :step="1" step-strictly style="width: 100px"></el-input-number>
-        <span style="margin-right: 10px">澶�</span>
-        <el-checkbox v-model="formData.beforeManagerNotify3" :true-label="1" :false-label="0">閫氱煡椤圭洰缁忕悊</el-checkbox>
-      </el-form-item>
-      <el-form-item label="閫氱煡浜哄憳" prop="beforeManagerNotifyUser3">
-        <el-button @click="chooseUser('beforeManagerNotifyUser3')" type="primary" plain>閫夋嫨浜哄憳</el-button>
-        <el-tag
-          v-for="(item,i) in formData.beforeManagerNotifyUser3"
-          :key="item.id"
-          type="danger"
-          closable
-          @close="closeUser('beforeManagerNotifyUser3',i)"
-          effect="plain">
-          {{ item.userName }}
-        </el-tag>
-      </el-form-item>
-      <h1>瓒呮湡鍚庨璀�</h1>
-      <el-form-item label="瓒呮湡鍚�" prop="expireAfter1">
-        <el-input-number v-model="formData.expireAfter1" :controls="false" :min="1" :max="10" :step="1" step-strictly style="width: 100px"></el-input-number>
-        <span style="margin-right: 10px">澶�</span>
-        <el-checkbox v-model="formData.afterManagerNotify1" :true-label="1" :false-label="0">閫氱煡椤圭洰缁忕悊</el-checkbox>
-      </el-form-item>
-      <el-form-item label="閫氱煡浜哄憳" prop="afterManagerNotifyUser1">
-        <el-button @click="chooseUser('afterManagerNotifyUser1')" type="primary" plain>閫夋嫨浜哄憳</el-button>
-        <el-tag
-          v-for="(item,i) in formData.afterManagerNotifyUser1"
-          :key="item.id"
-          type="danger"
-          closable
-          @close="closeUser('afterManagerNotifyUser1',i)"
-          effect="plain">
-          {{ item.userName }}
-        </el-tag>
-      </el-form-item>
-      <el-form-item label="瓒呮湡鍚�" prop="expireAfter2">
-        <el-input-number v-model="formData.expireAfter2" :controls="false" :min="1" :max="10" :step="1" step-strictly style="width: 100px"></el-input-number>
-        <span style="margin-right: 10px">澶�</span>
-        <el-checkbox v-model="formData.afterManagerNotify2" :true-label="1" :false-label="0">閫氱煡椤圭洰缁忕悊</el-checkbox>
-      </el-form-item>
-      <el-form-item label="閫氱煡浜哄憳" prop="afterManagerNotifyUser2">
-        <el-button @click="chooseUser('afterManagerNotifyUser2')" type="primary" plain>閫夋嫨浜哄憳</el-button>
-        <el-tag
-          v-for="(item,i) in formData.afterManagerNotifyUser2"
-          :key="item.id"
-          type="danger"
-          closable
-          @close="closeUser('afterManagerNotifyUser2',i)"
-          effect="plain">
-          {{ item.userName }}
-        </el-tag>
-      </el-form-item>
-      <el-form-item label="瓒呮湡鍚�" prop="expireAfter3">
-        <el-input-number v-model="formData.expireAfter3" :controls="false" :min="1" :max="10" :step="1" step-strictly style="width: 100px"></el-input-number>
-        <span style="margin-right: 10px">澶�</span>
-        <el-checkbox v-model="formData.afterManagerNotify3" :true-label="1" :false-label="0">閫氱煡椤圭洰缁忕悊</el-checkbox>
-      </el-form-item>
-      <el-form-item label="閫氱煡浜哄憳" prop="afterManagerNotifyUser3">
-        <el-button @click="chooseUser('afterManagerNotifyUser3')" type="primary" plain>閫夋嫨浜哄憳</el-button>
-        <el-tag
-          v-for="(item,i) in formData.afterManagerNotifyUser3"
-          :key="item.id"
-          type="danger"
-          closable
-          @close="closeUser('afterManagerNotifyUser3',i)"
-          effect="plain">
-          {{ item.userName }}
-        </el-tag>
-      </el-form-item>
-      <h1>棰勮鏂瑰紡</h1>
-      <div style="margin-left: 50px;margin-bottom: 20px">
-        <el-checkbox v-model="formData.notifyWx" :true-label="1" :false-label="0">寰俊娑堟伅</el-checkbox>
-        <div style="margin-top: 20px">
-          <el-checkbox v-model="formData.notifyMobMsg" :true-label="1" :false-label="0">鐭俊</el-checkbox>
-          <el-radio v-model="formData.notifyMobMsgWay" :label="0">鑷姩鍙戦��</el-radio>
-          <el-radio v-model="formData.notifyMobMsgWay" :label="1">鎵嬪姩鍙戦��</el-radio>
-        </div>
-      </div>
-      <template v-if="formData.notifyMobMsg===1">
-        <el-form-item label="鎵嬫満鍙�" prop="notifyMob">
-          <el-input
-            v-model="formData.notifyMob"
-            type="textarea"
-            :rows="3"
-            maxlength="1024"
-            show-word-limit
-          />
-        </el-form-item>
-      </template>
-      <el-form-item label="鍙戦�佹椂闂�" prop="notifyTime">
-        <el-select v-model="formData.notifyTime" placeholder="">
-          <el-option
-            v-for="i in 24"
-            :key="i"
-            :label="(i-1)+'鐐�'"
-            :value="i-1">
-          </el-option>
-        </el-select>
-      </el-form-item>
-
-    </el-form>
-    <div slot="footer" align="center" class="dialog-footer">
-      <my-button name="鍙栨秷" site="form" @click="close"/>
-      <my-button name="淇濆瓨" site="form" @click="save"/>
-    </div>
-    <chooseUser v-if="chooseSetting.show" :setting="chooseSetting" @close="chooseSetting.show = false" @checkUsers="checkUsers"></chooseUser>
-  </win-md>
-</template>
-
-<script>
-import winMd from '@/components/win/win-md'
-import myButton from '@/components/myButton/myButton'
-import chooseUser from "@/views/projectConfig/warningConfig/chooseUser";
-import * as api from "@/api/projectConfig/warningConfig";
-
-export default {
-  name: 'edit',
-  components: {winMd, myButton, chooseUser},
-  props: {
-    // setting 涓』鑷冲皯鍖呭惈鎺у埗dialog鏄剧ず鎴栭殣钘忕殑灞炴��,鍏朵綑灞炴�у彲鎷撳睍
-    // 灏嗘坊鍔�/淇敼鐨勫ぇ閲忔暟鎹強閫昏緫浠庡垪琛ㄩ〉闈腑鍒嗙鍑烘潵,閬垮厤鍒楄〃椤甸潰浠g爜杩囧,瀹℃煡鍥伴毦
-    // 鑻ユ椤甸潰椤诲洖浼犳暟鎹嚦鐖堕〉闈�,鍙湪寮曠敤缁勪欢鏃舵坊鍔犱簨浠�,鏈〉闈娇鐢╰his.$emit('浜嬩欢鍚�',鍙傛暟1,鍙傛暟2...)鍥炰紶鏁版嵁
-    setting: {
-      type: Object,
-      default: () => {
-      }
-    }
-  },
-  data() {
-    return {
-      chooseSetting: {
-        title: '閫夋嫨浜哄憳',
-        setting: [],
-        show: false
-      },
-      loading: false,
-      formData: {
-        tempExpirationNotifyName: '',
-        expireBefore1: undefined,
-        beforeManagerNotify1: '',
-        beforeManagerNotifyUser1: [],
-        expireBefore2: undefined,
-        beforeManagerNotify2: '',
-        beforeManagerNotifyUser2: [],
-        expireBefore3: undefined,
-        beforeManagerNotify3: '',
-        beforeManagerNotifyUser3: [],
-        expireAfter1: undefined,
-        afterManagerNotify1: '',
-        afterManagerNotifyUser1: [],
-        expireAfter2: undefined,
-        afterManagerNotify2: '',
-        afterManagerNotifyUser2: [],
-        expireAfter3: undefined,
-        afterManagerNotify3: '',
-        afterManagerNotifyUser3: [],
-        notifyWx: 0,
-        notifyMobMsg: 0,
-        notifyMobMsgWay: '',
-        notifyMob: '',
-        notifyTime: ''
-      },
-      rules: {
-        tempExpirationNotifyName: [
-          {required: true, message: '璇疯緭鍏ユā鏉垮悕绉�', trigger: 'blur'},
-        ],
-        notifyTime: [
-          {required: true, message: '璇烽�夋嫨鍙戦�佹椂闂�', trigger: 'blur'},
-        ]
-      },
-      cur: ''
-    }
-  },
-  created() {
-    this.loading = true
-    this.getInfo()
-  },
-  methods: {
-    chooseUser(cur) {
-      this.cur = cur
-      this.chooseSetting.selections = this.formData[cur]
-      this.chooseSetting.show = true
-    },
-    closeUser(key, i) {
-      this.formData[key].splice(i, 1)
-    },
-    checkUsers(users) {
-      console.log(users)
-      this.formData[this.cur] = users
-      this.chooseSetting.show = false
-      this.cur = ''
-    },
-    getInfo() {
-      this.title = this.setting.title
-      if (this.setting.id != null) {
-        // 鏌ヨ鏁版嵁
-        api.getDetail({id: this.setting.id}).then(res => {
-          this.loading = false
-          this.formData = Object.assign(this.formData, res)
-        })
-      } else {
-        this.loading = false
-      }
-    },
-    close() {
-      this.formData = {
-        tempExpirationNotifyName: '',
-        expireBefore1: undefined,
-        beforeManagerNotify1: '',
-        beforeManagerNotifyUser1: [],
-        expireBefore2: undefined,
-        beforeManagerNotify2: '',
-        beforeManagerNotifyUser2: [],
-        expireBefore3: undefined,
-        beforeManagerNotify3: '',
-        beforeManagerNotifyUser3: [],
-        expireAfter1: undefined,
-        afterManagerNotify1: '',
-        afterManagerNotifyUser1: [],
-        expireAfter2: undefined,
-        afterManagerNotify2: '',
-        afterManagerNotifyUser2: [],
-        expireAfter3: undefined,
-        afterManagerNotify3: '',
-        afterManagerNotifyUser3: [],
-        notifyWx: 0,
-        notifyMobMsg: 0,
-        notifyMobMsgWay: '',
-        notifyMob: '',
-        notifyTime: ''
-      }
-      this.$emit('close')
-    },
-    save() {
-      this.$refs.ruleForm.validate((valid) => {
-        if (valid) {
-          const params = Object.assign({}, this.formData)
-          let check1 = ['expireBefore1','expireBefore2','expireBefore3','expireAfter1','expireAfter2','expireAfter3']
-          let check2 = ['beforeManagerNotifyUser1','beforeManagerNotifyUser2','beforeManagerNotifyUser3','afterManagerNotifyUser1','afterManagerNotifyUser2','afterManagerNotifyUser3']
-          if(!check1.some(key=>params[key])){
-            this.$message.error('璇峰~鍐欓璀︽椂闂�')
-            return
-          }
-          if(params.notifyWx===0&&params.notifyMobMsg===0){
-            this.$message.error('璇疯缃璀︽柟寮�')
-            return
-          }
-          if(params.notifyMobMsg===1&&!check2.some(key=>params[key].length>0)&&params.notifyMob===''){
-            this.$message.error('璇疯缃�氱煡浜哄憳')
-            return
-          }
-          if(params.notifyMobMsg===0&&!check2.some(key=>params[key].length>0)){
-            this.$message.error('璇疯缃�氱煡浜哄憳')
-            return
-          }
-          if(params.notifyMobMsg===1&&params.notifyMobMsgWay===''){
-            this.$message.error('璇疯缃煭淇″彂閫佹柟寮�')
-            return
-          }
-          this.loading = true
-          api[params.id ? 'upd' : 'add'](params).then(res => {
-            this.loading = false
-            if (res) {
-              this.$message.success('淇濆瓨鎴愬姛锛�')
-              this.close()
-              this.$emit('search')
-            } else {
-              this.$message.error('淇濆瓨澶辫触')
-            }
-          }).catch(() => {
-            this.loading = false
-          })
-        } else {
-          this.$message.error('鏍¢獙鏈�氳繃锛岃妫�鏌ャ��')
-        }
-      })
-    }
-  }
-}
-</script>
-<style scoped lang="scss">
-h1 {
-  font-size: 18px;
-  color: #000;
-  font-weight: bold;
-  margin-bottom: 20px;
-  padding-left: 20px;
-}
-</style>
diff --git a/admin-web/src/views/projectConfig/warningConfig/index.vue b/admin-web/src/views/projectConfig/warningConfig/index.vue
deleted file mode 100644
index 2363542..0000000
--- a/admin-web/src/views/projectConfig/warningConfig/index.vue
+++ /dev/null
@@ -1,209 +0,0 @@
-<template>
-  <div class="app-container">
-    <el-card class="box-card" shadow="never">
-      <div class="filter-container" style="margin-bottom: 10px">
-        <my-search ref="searchBar" :items="items" @search="filterForm"></my-search>
-      </div>
-      <!--鍒楄〃-->
-      <my-table-v2 ref="myTable" :filter="filterFrom" :table="table"/>
-    </el-card>
-    <edit v-if="editSetting.show" :setting="editSetting" @close="editSetting.show = false" @search="search"></edit>
-  </div>
-</template>
-
-<script>
-import MyTableV2 from '@/components/myTable/myTableV2';
-import SettingIplatform from '@/utils/settingIplatform';
-import items from './items';
-import edit from './edit'
-import {del, updStatus} from "@/api/projectConfig/warningConfig";
-
-export default {
-  components: {MyTableV2, edit},
-  data() {
-    return {
-      // 鎼滅储鏉′欢
-      items: items,
-      filterFrom: {
-        projectName: '',
-        projectCode: '',
-        planTypeCode: '',
-        status: '1',
-      },
-      //鏂板缂栬緫
-      editSetting: {
-        title: '',
-        id: '',
-        show: false,
-      },
-      //鑺傜偣璁剧疆
-      nodeSetting: {
-        title: '鑺傜偣璁剧疆',
-        stageId: '',
-        show: false,
-      },
-      // 琛ㄦ牸鏁版嵁
-      table: {
-        showIndex: true, // 鏄惁鏄剧ず搴忓彿
-        expand: false, // 鏄惁鏄剧ず璇︽儏鏁版嵁
-        url: SettingIplatform.apiBaseURL + '/pc/p/temp/expiration/notify/list', // 璇锋眰鍦板潃
-        // 宸ュ叿鏉�
-        tools: {
-          columnsCtrl: {
-            // 鍒楁帶鍒舵寜閽�
-            show: false,
-          },
-          generalExport: {
-            // 閫氱敤瀵煎嚭鎸夐挳
-            show: false,
-          },
-          // 鑷畾涔夊伐鍏锋潯鎸夐挳
-          custom: [
-            {
-              name: '鏂板',
-              click: () => {
-                this.showAdd(null);
-              },
-            },
-          ],
-        },
-        // 鍒椾俊鎭�
-        columns: [
-          {
-            title: '妯℃澘鍚嶇О', field: 'tempExpirationNotifyName', align: 'left',
-            /*formatter: (row) => {
-              return {
-                value: row.projectName,
-                type: 'primary',
-                click: () => {
-                  // 鐐瑰嚮浜嬩欢
-                  this.updState(row);
-                },
-              }
-            }*/
-          },
-          {title: '缂栧彿', field: 'tempExpirationNotifyCode', align: 'center'},
-          {title: '鎵�灞炴満鏋�', field: 'createOrgName', align: 'left'},
-          {
-            title: '寰俊娑堟伅', field: 'notifyWx', align: 'center',width: 80,
-            formatter: (row) => {
-              return {
-                value: row.notifyWx === 1 ? '寮�' : '鍏�'
-              }
-            }
-          },
-          {
-            title: '鐭俊', field: 'notifyMobMsg', align: 'center',width: 80,
-            formatter: (row) => {
-              return {
-                value: row.notifyMobMsg === 1 ? row.notifyMobMsgWay === 1 ? '鎵嬪姩' : '鑷姩' : '鍏�',
-              }
-            }
-          },
-          {
-            field: 'status',
-            title: '鐘舵��',
-            align: 'center',
-            width: 80,
-            switch: (row) => {
-              return {
-                value: row.status === 1, // 寮�
-                label: row.status === 1 ? '鍚敤' : '绂佺敤', // 寮�鐨勬弿杩�
-                click: () => {
-                  // 鐐瑰嚮浜嬩欢
-                  this.updState(row);
-                },
-              };
-            },
-          },
-        ],
-        // 鎿嶄綔淇℃伅
-        operation: {
-          show: true, // 鏄剧ず鎿嶄綔鍒�
-          width: 180, // 鍒楀
-          attr: [
-            {
-              title: '缂栬緫',
-              events: (row) => {
-                this.showAdd(row.id);
-              },
-            },
-            {
-              title: '鍒犻櫎',
-              events: (row) => {
-                this.handleDelete(row);
-              },
-            },
-          ],
-        },
-        paging: {
-          show: false, // 鏄剧ず鍒嗛〉
-          // 鍒嗛〉淇℃伅
-          page: {
-            small: false,
-            pageNum: 1,
-            pageSize: 10,
-            total: 0,
-          },
-        },
-      },
-    };
-  },
-  mounted() {
-  },
-  methods: {
-    // 鏌ヨtable鍒楄〃
-    search(pageNum) {
-      if (pageNum != undefined) {
-        this.$refs.myTable.search(pageNum);
-      } else {
-        this.$refs.myTable.search();
-      }
-    },
-    /*鎼滅储*/
-    filterForm(params) {
-      this.filterFrom = Object.assign(this.filterFrom, params);
-      this.search();
-    },
-    //娣诲姞銆佺紪杈�
-    showAdd(id) {
-      let title = '娣诲姞';
-      if (id != null) {
-        title = '缂栬緫';
-      }
-      this.editSetting.id = id;
-      this.editSetting.title = title;
-      this.editSetting.show = true;
-    },
-    /*寮�鍚叧闂�*/
-    updState(row) {
-      let text = row.status === 0 ? "鍚敤" : "绂佺敤";
-      this.$modal.confirm('纭瑕�' + text + '"' + row.tempExpirationNotifyName + '"妯℃澘鍚楋紵').then(() => {
-        let status = row.status === 1 ? 0 : 1
-        updStatus({
-          id: row.id,
-          status
-        }).then(res => {
-          if (res) {
-            row.status = row.status === 1 ? 0 : 1
-            this.$modal.msgSuccess(text + "鎴愬姛");
-          }
-        })
-      })
-    },
-    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
-    handleDelete(row) {
-      this.$confirm('鏄惁纭鍒犻櫎"' + row.tempExpirationNotifyName + '"妯$増锛�', {
-        type: 'warning'
-      }).then(() => {
-        del({id: row.id}).then(res => {
-          this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
-          this.search()
-        })
-      })
-    },
-  },
-};
-</script>
-
-<style scoped></style>
diff --git a/admin-web/src/views/projectConfig/warningConfig/items.js b/admin-web/src/views/projectConfig/warningConfig/items.js
deleted file mode 100644
index c2f2b21..0000000
--- a/admin-web/src/views/projectConfig/warningConfig/items.js
+++ /dev/null
@@ -1,45 +0,0 @@
-
-import SettingIplatform from '@/utils/settingIplatform';
-export default [
-  {
-    type: 'text',
-    dataIndex: 'projectName',
-    label: '妯℃澘鍚嶇О',
-    placeholder: '璇疯緭鍏�',
-    defaultValue: ''
-  },
-  {
-    type: 'text',
-    dataIndex: 'projectCode',
-    label: '妯℃澘缂栧彿',
-    placeholder: '璇疯緭鍏�',
-    defaultValue: ''
-  },
-  {
-    type: 'cascader',
-    dataIndex: 'planTypeCode',
-    label: '鎵�灞炴満鏋�',
-    placeholder: '璇烽�夋嫨',
-    options: [],
-    optionsConfig: {
-      url: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/select/tree_fin_tenant'
-    }
-  },
-  {
-    type: 'select',
-    dataIndex: 'status',
-    label: '鐘舵��',
-    placeholder: '璇烽�夋嫨',
-    defaultValue: '1',
-    options: [
-      {
-        label: '鍚敤',
-        value: '1'
-      },
-      {
-        label: '绂佺敤',
-        value: '0'
-      }
-    ]
-  }
-]
diff --git a/admin-web/src/views/stock/accessStock/outbound/index.vue b/admin-web/src/views/stock/accessStock/outbound/index.vue
index b6ce027..e574460 100644
--- a/admin-web/src/views/stock/accessStock/outbound/index.vue
+++ b/admin-web/src/views/stock/accessStock/outbound/index.vue
@@ -12,50 +12,53 @@
             <div class="table-tool-bar" style="margin-bottom: 15px;">
               <my-button name="鏂板" @click="handleAdd" site="tools" size="medium" />
             </div>
-            <div :style="{ 'overflow-y': 'auto', height: `${clientHeight - 320}px` }" v-loading="loading">
-              <el-row v-if="list.length" class="card" :gutter="5">
-                <el-col v-for="(item, index) in list" :key="index" class="cm-item">
-                  <el-card class="card-data">
-                    <div class="card-container">
-                      <div class="card-header">
-                        <div class="card-header-left">
-                          <span>鍑哄簱鍗曞彿锛�</span>
-                          <span class="value">{{ item.businessFormCode }}</span>
-                        </div>
-                        <div class="card-header-right">
+            <div>
+              <div :style="{ 'overflow-y': 'auto', height: 'calc(100vh - 352px)' }" v-loading="loading">
+                <el-row v-if="list.length" class="card" :gutter="5">
+                  <el-col v-for="(item, index) in list" :key="index" class="cm-item">
+                    <el-card class="card-data">
+                      <div class="card-container">
+                        <div class="card-header">
+                          <div class="card-header-left">
+                            <span>鍑哄簱鍗曞彿锛�</span>
+                            <span class="value">{{ item.businessFormCode }}</span>
+                          </div>
+                          <div class="card-header-right">
                             <el-button site="form" type="success" size="mini" @click="handleExport(item)"
-                              >瀵煎嚭鍑哄簱鍗�</el-button
+                            >瀵煎嚭鍑哄簱鍗�</el-button
                             >
-                          <el-button name="鏌ョ湅璇︽儏" site="form" type="info" size="mini" @click="handleDetail(item)"
+                            <el-button name="鏌ョ湅璇︽儏" site="form" type="info" size="mini" @click="handleDetail(item)"
                             >鏌ョ湅璇︽儏</el-button
-                          >
+                            >
+                          </div>
                         </div>
-                      </div>
-                      <div class="one-hed">
-                        <div class="box"><span class="span-two">鏈烘瀯锛�</span>{{ item.agencyName }}</div>
-                        <div class="box"><span class="span-two">鎿嶄綔浜猴細</span>{{ item.operatorName }}</div>
-                        <div class="box">
-                          <span class="span-two">鍑哄簱鏃堕棿锛�</span>{{ item.dealTime | formatTime }}
+                        <div class="one-hed">
+                          <div class="box"><span class="span-two">鏈烘瀯锛�</span>{{ item.agencyName }}</div>
+                          <div class="box"><span class="span-two">鎿嶄綔浜猴細</span>{{ item.operatorName }}</div>
+                          <div class="box">
+                            <span class="span-two">鍑哄簱鏃堕棿锛�</span>{{ item.dealTime | formatTime }}
+                          </div>
                         </div>
-                      </div>
-                      <div class="card-end">
-                        <div v-for="(just, index) in item.formOutputTemplateInfoList" :key="index" class="item">
-                          <div class="name">{{ just.goodsName }}</div>
-                          <div class="value-box">
-                            <div class="value-box-item">
-                              <span class="label">鏁伴噺锛�</span>
-                              <span class="value">{{ just.count }}</span>
-                              <span class="unit">{{ just.unit }}</span>
+                        <div class="card-end">
+                          <div v-for="(just, index) in item.formOutputTemplateInfoList" :key="index" class="item">
+                            <div class="name">{{ just.goodsName }}</div>
+                            <div class="value-box">
+                              <div class="value-box-item">
+                                <span class="label">鏁伴噺锛�</span>
+                                <span class="value">{{ just.count }}</span>
+                                <span class="unit">{{ just.unit }}</span>
+                              </div>
                             </div>
                           </div>
                         </div>
                       </div>
-                    </div>
-                  </el-card>
-                </el-col>
-              </el-row>
-              <div class="no-data" v-else>鏆傛棤鏁版嵁</div>
+                    </el-card>
+                  </el-col>
+                </el-row>
+                <div class="no-data" v-else>鏆傛棤鏁版嵁</div>
+              </div>
             </div>
+
             <el-pagination
               :small="false"
               :current-page="pageNum"
diff --git a/admin-web/src/views/stock/accessStock/outboundDetails/index.vue b/admin-web/src/views/stock/accessStock/outboundDetails/index.vue
index e0d322f..002dd06 100644
--- a/admin-web/src/views/stock/accessStock/outboundDetails/index.vue
+++ b/admin-web/src/views/stock/accessStock/outboundDetails/index.vue
@@ -10,11 +10,13 @@
           <el-row style="margin-top: 15px">
             <el-col>
               <!--鍒楄〃-->
-              <my-table-v2 ref="myTable" :filter="filterFrom" :table="table" />
+              <my-table-v2 ref="myTable" :filter="filterFrom" :table="table"/>
             </el-col>
           </el-row>
           <!--娣诲姞/缂栬緫寮圭獥-->
-          <detail v-if="detailSetting.show" :setting="detailSetting" @close="detailSetting.show = false" />
+          <!--          <detail/>-->
+          <component v-if="detailSetting.show" :setting="detailSetting" @close="detailSetting.show = false"
+                     :is="activeDetail"></component>
         </el-card>
       </el-container>
     </el-container>
@@ -25,23 +27,41 @@
 import MyTableV2 from '@/components/myTable/myTableV2';
 import MyButton from '@/components/myButton/myButton';
 import SettingIplatform from '@/utils/settingIplatform';
-import detail from '../outbound/detail';
-import * as finsystenant from '@/api/baseSetting/finsystenant';
 import myImport from '@/views/components/myImport';
-import { goodsTemplate, goodsModel } from '@/api/baseSetting/finsystenant';
-import { outputDtailList } from '@/api/stock/accessStock';
 import * as DateFormatter from '@/utils/DateFormatter';
+import stockType from '@/utils/stockType';
+import detail from '../outbound/detail';
+import purchaseDetail from '@/views/stock/procure/purchaseOrder/detail.vue';// 閲囪喘鍗曡鎯�
+import transferDetail from '@/views/stock/transfer/transferissue/detail.vue';// 璋冩嫧鍗曡鎯�
+import inventoryDetail from '@/views/stock/inventorycount/inventorytask/detail.vue';// 鐩樼偣鍗曡鎯�
+import scrapDetail from '@/views/stock/scrap/itemScrapping/detail.vue';// 鎶ュ簾鍗曡鎯�
+import distributionDetail from '@/views/departmentitem/itemdis/distribution/detail.vue';// 鍒嗗彂鍗曡鎯�
+import itemscrDetail from '@/views/departmentitem/itemscr/scrapping/detail.vue';// 閮ㄩ棬鎶ュ簾鍗曡鎯�
+import returnNoteDetail from '@/views/departmentitem/itemret/returnNote/detail.vue';// 閮ㄩ棬閫�杩樺崟璇︽儏
 
 export default {
   name: 'index',
-  components: { MyButton, MyTableV2, detail, myImport },
+  components: {
+    MyButton,
+    MyTableV2,
+    detail,
+    myImport,
+    purchaseDetail,
+    transferDetail,
+    inventoryDetail,
+    scrapDetail,
+    distributionDetail,
+    itemscrDetail,
+    returnNoteDetail
+  },
   data() {
     return {
+      activeDetail: '',
       // 鎼滅储妗�
       items: [
         {
           type: 'text',
-          dataIndex: 'businessFormId',
+          dataIndex: 'businessFormCode',
           label: '鍗曞彿',
           placeholder: '璇疯緭鍏�',
           defaultValue: '',
@@ -66,7 +86,7 @@
           placeholder: '璇烽�夋嫨',
           defaultValue: '',
           options: [],
-          cascader: [{ key: 'baseGoodsModelsId', queryKey: 'goodsTemplatesId' }],
+          cascader: [{key: 'baseGoodsModelsId', queryKey: 'goodsTemplatesId'}],
           optionsConfig: {
             label: 'goodsName',
             value: 'id',
@@ -91,26 +111,26 @@
           dataIndex: 'agencyId',
           label: '鏈烘瀯',
           placeholder: '璇烽�夋嫨',
-          optionsConfig: { url: '/pc/fin/sys/tenant/select/tree_fin_tenant', props: null },
+          optionsConfig: {url: '/pc/fin/sys/tenant/select/tree_fin_tenant', props: null},
           defaultValue: '',
           options: [],
         },
         {
           type: 'text',
-          dataIndex: 'createdName',
+          dataIndex: 'createName',
           label: '鍒涘缓浜�',
           placeholder: '璇疯緭鍏�',
           defaultValue: '',
         },
         {
           type: 'date-picker',
-          dataIndex: 'dealTimeStart',
+          dataIndex: 'startTime',
           label: '鏃堕棿',
           defaultValue: '',
         },
         {
           type: 'date-picker',
-          dataIndex: 'dealTimeEnd',
+          dataIndex: 'endTime',
           label: '鑷�',
           defaultValue: '',
         },
@@ -155,28 +175,34 @@
         },
         // 鍒椾俊鎭�
         columns: [
-          { title: '绫诲瀷', field: 'thisType', align: 'left' },
-          { title: '鍗曞彿', field: 'businessFormId', align: 'center' },
-          { title: '鐗╁搧鍚嶇О', field: 'goodsTemplateName', align: 'center' },
-          { title: '瑙勬牸鍨嬪彿', field: 'baseGoodsModelsName', align: 'center' },
-          { title: '鍑哄叆搴撴暟閲�', field: 'thisCount', align: 'left' },
-          { title: '閲戦', field: 'totalPrice', align: 'left' },
-          { title: '鎵�灞炴満鏋�', field: 'agencyName', align: 'left' },
-          { title: '鍒涘缓浜�', field: 'createdName', align: 'left' },
+          {
+            title: '绫诲瀷', field: 'thisType', align: 'left',
+            formatter: (row) => {
+              let result = stockType(row)
+              return {value: result};
+            },
+          },
+          {title: '鍗曞彿', field: 'businessFormCode', align: 'center', width: 130},
+          {title: '鐗╁搧鍚嶇О', field: 'goodsTemplateName', align: 'left', minWidth: 130},
+          {title: '瑙勬牸鍨嬪彿', field: 'baseGoodsModelsName', align: 'left', minWidth: 130},
+          {title: '鍑哄叆搴撴暟閲�', field: 'thisCount', align: 'center', width: 100},
+          {title: '閲戦', field: 'totalPrice', align: 'center', width: 100},
+          {title: '鎵�灞炴満鏋�', field: 'agencyName', align: 'left', minWidth: 130},
+          {title: '鍒涘缓浜�', field: 'operatorName', align: 'left', width: 100},
           {
             title: '鎿嶄綔鏃堕棿',
             field: 'dealTime',
             align: 'center',
             width: 160,
             formatter: (row) => {
-              return { value: DateFormatter.LongToDateTime(row.createTime) };
+              return {value: DateFormatter.LongToDateTime(row.dealTime)};
             },
           },
         ],
         // 鎿嶄綔淇℃伅
         operation: {
           show: true, // 鏄剧ず鎿嶄綔鍒�
-          width: '150', // 鍒楀
+          width: 100, // 鍒楀
           attr: [
             {
               title: '璇︽儏',
@@ -197,12 +223,24 @@
           },
         },
       },
+      components: {
+        '1': 'purchaseDetail',
+        '2': 'returnNoteDetail',
+        '3': 'transferDetail',
+        '4': 'inventoryDetail',
+        '5': 'itemscrDetail',
+        '6': 'transferDetail',
+        '7': 'inventoryDetail',
+        '8': 'scrapDetail',
+        '9': 'detail',
+      }
     };
   },
   created() {
   },
   methods: {
     showDetail(row) {
+      this.activeDetail = this.components[row.mixType]
       this.detailSetting.id = row.id;
       this.detailSetting.info = JSON.stringify(row);
       this.detailSetting.title = '璇︽儏';
@@ -211,7 +249,7 @@
     // 鏌ヨtable鍒楄〃
     search(pageNum) {
       if (pageNum != undefined) {
-        this.$refs.myTable.search(pageNum);
+        this.$refs.myTable.search({pageNum});
       } else {
         this.$refs.myTable.search();
       }
diff --git a/admin-web/src/views/stock/inventorycount/exceptionDetails/index.vue b/admin-web/src/views/stock/inventorycount/exceptionDetails/index.vue
index 3c1b726..2ba53aa 100644
--- a/admin-web/src/views/stock/inventorycount/exceptionDetails/index.vue
+++ b/admin-web/src/views/stock/inventorycount/exceptionDetails/index.vue
@@ -10,7 +10,7 @@
           <el-row style="margin-top: 15px">
             <el-col>
               <!--鍒楄〃-->
-              <my-table-v2 ref="myTable" :filter="filterFrom" :table="table" />
+              <my-table-v2 ref="myTable" :filter="filterFrom" :table="table"/>
             </el-col>
           </el-row>
         </el-card>
@@ -23,16 +23,12 @@
 import MyTableV2 from '@/components/myTable/myTableV2';
 import MyButton from '@/components/myButton/myButton';
 import SettingIplatform from '@/utils/settingIplatform';
-import * as finsystenant from '@/api/baseSetting/finsystenant';
-import { getBaseUrl } from '@/utils/base';
-import { mapGetters } from 'vuex';
-import { selectTenantWarehouse, goodsModel } from '@/api/baseSetting/finsystenant';
-import { getDicts } from '@/api/system/dict/data';
+import {mapGetters} from 'vuex';
 import * as DateFormatter from '@/utils/DateFormatter';
 
 export default {
   name: 'index',
-  components: { MyButton, MyTableV2 },
+  components: {MyButton, MyTableV2},
   data() {
     return {
       // 鎼滅储妗�
@@ -42,7 +38,7 @@
           dataIndex: 'agencyId',
           label: '鏈烘瀯',
           placeholder: '璇烽�夋嫨',
-          optionsConfig: { url: '/pc/fin/sys/tenant/select/tree_fin_tenant', props: null },
+          optionsConfig: {url: '/pc/fin/sys/tenant/select/tree_fin_tenant', props: null},
           defaultValue: '',
           options: [],
         },
@@ -66,7 +62,7 @@
           placeholder: '璇疯緭鍏�',
           defaultValue: '',
           options: [],
-          cascader: [{ key: 'baseGoodsModelsId', queryKey: 'goodsTemplatesId' }],
+          cascader: [{key: 'baseGoodsModelsId', queryKey: 'goodsTemplatesId'}],
           optionsConfig: {
             label: 'goodsName',
             value: 'id',
@@ -158,8 +154,7 @@
       // 鏍戞暟鎹�
       treeDataList: [],
       // 鎼滅储鏉′欢
-      filterFrom: {
-      },
+      filterFrom: {},
       // 琛ㄦ牸鏁版嵁
       table: {
         showIndex: true, // 鏄惁鏄剧ず搴忓彿
@@ -180,30 +175,35 @@
         },
         // 鍒椾俊鎭�
         columns: [
-          { title: '浠撳簱', field: 'warehouseName', align: 'left' },
-          { title: '鐗╁搧鍚嶇О', field: 'goodsTemplateName', align: 'center' },
-          { title: '瑙勬牸鍨嬪彿', field: 'baseGoodsModelsName', align: 'center' },
-          { title: '绫诲瀷', field: 'inventoryResultType', align: 'center' },
-          { title: '搴撳瓨鏁伴噺', field: 'initCounts', align: 'left' },
-          { title: '鐩樼偣鏁伴噺', field: 'inventoryCounts', align: 'left' },
-          { title: '寮傚父鏁伴噺', field: 'errorCounts', align: 'left' },
+          {title: '浠撳簱', field: 'warehouseName', align: 'left', width: 140},
+          {title: '鐗╁搧鍚嶇О', field: 'goodsTemplateName', align: 'left', minWidth: 130},
+          {title: '瑙勬牸鍨嬪彿', field: 'baseGoodsModelsName', align: 'left', width: 120},
+          {title: '绫诲瀷', field: 'inventoryResultType', align: 'center'},
+          {title: '搴撳瓨鏁伴噺', field: 'initCounts', align: 'left'},
+          {title: '鐩樼偣鏁伴噺', field: 'inventoryCounts', align: 'left'},
+          {title: '寮傚父鏁伴噺', field: 'errorCounts', align: 'left'},
           {
             title: '鍑哄叆搴撶被鍨�',
             field: 'inventoryType',
-            align: 'left',
+            align: 'center',
+            width: 100,
             formatter: (row) => {
-              return { value: row.inventoryType, type: row.inventoryType && row.inventoryType.includes('鐩樼泩') ? 'success' : 'danger' };
+              return {
+                value: row.inventoryType,
+                type: row.inventoryType && row.inventoryType.includes('鐩樼泩') ? 'success' : 'danger'
+              };
             },
           },
-          { title: '鍑哄叆搴撳崟鍙�', field: 'warehouseFormCode', align: 'left' },
-          { title: '鏈烘瀯', field: 'agencyName', align: 'left' },
-          { title: '鎿嶄綔浜�', field: 'operatorName', align: 'left' },
+          {title: '鍑哄叆搴撳崟鍙�', field: 'warehouseFormCode', align: 'center', width: 130},
+          {title: '鏈烘瀯', field: 'agencyName', align: 'left', width: 130},
+          {title: '鎿嶄綔浜�', field: 'operatorName', align: 'center', width: 90},
           {
             title: '鎿嶄綔鏃堕棿',
             field: 'operatorTime',
             align: 'center',
+            width: 160,
             formatter: (row) => {
-              return { value: row.operatorTime ? DateFormatter.LongToDateTime(row.operatorTime) : '-' };
+              return {value: row.operatorTime ? DateFormatter.LongToDateTime(row.operatorTime) : '-'};
             },
           },
         ],
@@ -230,7 +230,8 @@
   computed: {
     ...mapGetters(['userInfo']),
   },
-  created() {},
+  created() {
+  },
   methods: {
     showAudit(row) {
       this.editSetting.id = row.id;
diff --git a/admin-web/src/views/stock/inventorycount/inventorytask/detail.vue b/admin-web/src/views/stock/inventorycount/inventorytask/detail.vue
index 34f314d..589680a 100644
--- a/admin-web/src/views/stock/inventorycount/inventorytask/detail.vue
+++ b/admin-web/src/views/stock/inventorycount/inventorytask/detail.vue
@@ -10,7 +10,11 @@
       <el-table-column prop="baseGoodsModelsName" label="鍨嬪彿" align="center"> </el-table-column>
       <el-table-column prop="inventoryCount" label="搴旂洏鏁伴噺" align="center"></el-table-column>
       <el-table-column prop="realNum" label="瀹炵洏鏁伴噺" align="center"></el-table-column>
-      <el-table-column prop="states" label="鐘舵��" align="center"></el-table-column>
+      <el-table-column prop="states" label="鐘舵��" align="center">
+        <template slot-scope="{row}">
+          {{row.inventoryResultType}}
+        </template>
+      </el-table-column>
     </el-table>
   </win-md>
 </template>
diff --git a/admin-web/src/views/stock/inventorycount/inventorytask/edit.vue b/admin-web/src/views/stock/inventorycount/inventorytask/edit.vue
index 7708d9f..7a661e7 100644
--- a/admin-web/src/views/stock/inventorycount/inventorytask/edit.vue
+++ b/admin-web/src/views/stock/inventorycount/inventorytask/edit.vue
@@ -1,6 +1,6 @@
 <template>
   <win-sm :title="`${setting.title}鐩樼偣`" @close="close" :width="'800px'">
-    <el-form ref="ruleForm" :model="formData" :rules="rules" class="demo-ruleForm" label-width="100px">
+    <el-form v-loading="loading" ref="ruleForm" :model="formData" :rules="rules" class="demo-ruleForm" label-width="100px">
       <el-form-item label="鐩樼偣鍗曞悕" prop="businessFormName">
         <el-input
           v-model="formData.businessFormName"
@@ -62,13 +62,20 @@
   },
   data() {
     return {
-      loading:true,
+      count: 0,
+      loading: true,
       checkAll: false,
       checkedList: [],
       warehouseOptions: [], // 浠撳簱鍒楄〃
       operatorOptions: [],
       operatorOptions2: [],
-      formData: {},
+      formData: {
+        businessFormName: '',
+        warehouseId: '',
+        operatorUserId: '',
+        monitorUserId: '',
+        remark: '',
+      },
       rules: {
         businessFormName: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }],
         warehouseId: [{ required: true, message: '璇烽�夋嫨', trigger: 'blur' }],
@@ -97,19 +104,31 @@
     // 鑾峰彇浠撳簱鍒楄〃
     handleSelectTenantWarehouse() {
       selectTenantWarehouse({ agencyId: this.userInfo.tenantId }).then((res) => {
+        this.count++
         this.warehouseOptions = res;
+        if(this.count>1){
+          this.loading = false
+        }
       });
     },
     // 鑾峰彇鐩樼偣浜�
     getPdr() {
       warehouseManagerList({ tenantId: this.userInfo.tenantId }).then((res) => {
+        this.count++
         this.operatorOptions = res;
+        if(this.count>1){
+          this.loading = false
+        }
       });
     },
     // 鑾峰彇鐩戠洏浜�
     getJpr() {
       tenantUserQueryUser({ tenantId: this.userInfo.tenantId }).then((res) => {
+        this.count++
         this.operatorOptions2 = res;
+        if(this.count>1){
+          this.loading = false
+        }
       });
     },
     getEditInfo(id) {},
@@ -120,18 +139,25 @@
       this.$refs.ruleForm.validate((valid) => {
         if (valid) {
           const params = Object.assign({}, this.formData);
+          this.loading = true
           if (this.setting.id) {
             // 缂栬緫鎺ュ彛
             inventoryEdit(params).then((res) => {
+              this.loading = false
               this.$message.success('淇濆瓨鎴愬姛锛�');
               this.close();
               this.$emit('search');
+            }).catch(()=>{
+              this.loading = false
             });
           } else {
             inventoryAdd(params).then((res) => {
+              this.loading = false
               this.$message.success('淇濆瓨鎴愬姛锛�');
               this.close();
               this.$emit('search');
+            }).catch(()=>{
+              this.loading = false
             });
           }
         } else {
diff --git a/admin-web/src/views/stock/inventorycount/inventorytask/index.vue b/admin-web/src/views/stock/inventorycount/inventorytask/index.vue
index 4e02bcb..28cfe68 100644
--- a/admin-web/src/views/stock/inventorycount/inventorytask/index.vue
+++ b/admin-web/src/views/stock/inventorycount/inventorytask/index.vue
@@ -162,11 +162,11 @@
         },
         // 鍒椾俊鎭�
         columns: [
-          { title: '鐩樼偣鍗曞彿', field: 'businessFormCode', align: 'left' },
-          { title: '浠诲姟鍚嶇О', field: 'businessFormName', align: 'left' },
-          { title: '鐩樼偣浠撳簱', field: 'warehouseName', align: 'left' },
-          { title: '鐩樼偣浜�', field: 'operatorName', align: 'left' },
-          { title: '鐩戠洏浜�', field: 'operatorName2', align: 'left' },
+          { title: '鐩樼偣鍗曞彿', field: 'businessFormCode', align: 'center', width: 130 },
+          { title: '浠诲姟鍚嶇О', field: 'businessFormName', align: 'left', minWidth: 140 },
+          { title: '鐩樼偣浠撳簱', field: 'warehouseName', align: 'left', minWidth: 130  },
+          { title: '鐩樼偣浜�', field: 'operatorName', align: 'center', width: 120  },
+          { title: '鐩戠洏浜�', field: 'operatorName2', align: 'center', width: 120  },
           {
             title: '鐩樼偣鏃堕棿',
             field: 'inventoryDate',
@@ -188,7 +188,8 @@
           {
             title: '鐘舵��',
             field: 'states',
-            align: 'left',
+            align: 'center',
+            width: 90,
             type: 'primary',
             formatter: (row) => {
               return {
@@ -263,7 +264,7 @@
               },
             },
             {
-              title: '鐢熶骇鐩樼偣琛�',
+              title: '鐢熸垚鐩樼偣琛�',
               type: 'primary',
               hidden: (row) => {
                 if (row.states != 2) {
diff --git a/admin-web/src/views/stock/inventorycount/inventorytask/inventory.vue b/admin-web/src/views/stock/inventorycount/inventorytask/inventory.vue
index fa31464..4fa870b 100644
--- a/admin-web/src/views/stock/inventorycount/inventorytask/inventory.vue
+++ b/admin-web/src/views/stock/inventorycount/inventorytask/inventory.vue
@@ -1,6 +1,6 @@
 <template>
   <win-md :title="setting.title" @close="close" :width="'1200px'">
-    <el-form class="form" ref="ruleForm" :model="formData" :rules="rules">
+    <el-form v-loading="loading" class="form" ref="ruleForm" :model="formData" :rules="rules">
       <el-row :gutter="20" style="margin-bottom: 20px" type="flex" align="middle">
         <el-col :span="6">鐩樼偣鍗曞彿锛歿{ formData.businessFormCode }}</el-col>
         <el-col :span="6">鐩樼偣浠诲姟锛歿{ formData.businessFormName }}</el-col>
@@ -10,7 +10,6 @@
         </el-col>
       </el-row>
       <el-table
-        v-loading="loading"
         :data="formData.formInventoryGoodsList"
         :rules="rules"
         height="500"
@@ -25,6 +24,7 @@
         <el-table-column prop="realNum" label="瀹炵洏鏁伴噺" align="center">
           <template slot-scope="scope">
             <el-form-item
+              style="margin-bottom: 0"
               label-width="0"
               :prop="`formInventoryGoodsList[${scope.$index}].realNum`"
               :rules="rules.realNum"
@@ -57,7 +57,7 @@
   },
   data() {
     return {
-      loading: false,
+      loading: true,
       btnLoading: false,
       formData: {
         businessFormCode: '',
@@ -75,17 +75,22 @@
   },
   created() {
     const info = JSON.parse(this.setting.info);
-    console.log('info', info);
     if (info.states == 1) {
       // 缁х画鐩樼偣
       inventoryDetail({ id: this.setting.id }).then((res) => {
+        this.loading = false
         this.formData = res;
         this.formData.id = this.setting.id;
+      }).catch(()=>{
+        this.loading = false
       });
     } else {
       inventoryQuery({ id: this.setting.id }).then((res) => {
+        this.loading = false
         this.formData = res;
         this.formData.id = this.setting.id;
+      }).catch(()=>{
+        this.loading = false
       });
     }
   },
@@ -98,10 +103,14 @@
         id: this.formData.id,
         inventoryGoodsList: this.formData.formInventoryGoodsList,
       };
+      this.loading = true
       inventoryTemporaryStorage(params).then(() => {
+        this.loading = false
         this.$message.success('鏆傚瓨鎴愬姛锛�');
         this.close();
         this.$emit('search');
+      }).catch(()=>{
+        this.loading = false
       });
     },
     save() {
@@ -111,10 +120,13 @@
             ...this.formData,
             inventoryGoodsList: this.formData.formInventoryGoodsList,
           };
+          this.loading = true
           inventoryFinish(params).then(() => {
             this.$message.success('鏆傚瓨鎴愬姛锛�');
             this.close();
             this.$emit('search');
+          }).catch(()=>{
+            this.loading = false
           });
         }
       });
diff --git a/admin-web/src/views/stock/ledger/alertQuery/index.vue b/admin-web/src/views/stock/ledger/alertQuery/index.vue
index b4afedf..b27f0e8 100644
--- a/admin-web/src/views/stock/ledger/alertQuery/index.vue
+++ b/admin-web/src/views/stock/ledger/alertQuery/index.vue
@@ -10,7 +10,7 @@
           <el-row style="margin-top: 15px">
             <el-col>
               <!--鍒楄〃-->
-              <my-table-v2 ref="myTable" :filter="filterFrom" :table="table" />
+              <my-table-v2 ref="myTable" :filter="filterFrom" :table="table"/>
             </el-col>
           </el-row>
         </el-card>
@@ -24,13 +24,13 @@
 import MyButton from '@/components/myButton/myButton';
 import SettingIplatform from '@/utils/settingIplatform';
 import * as finsystenant from '@/api/baseSetting/finsystenant';
-import { goodsModel, getCategorySelectTree } from '@/api/baseSetting/finsystenant';
-import { getDicts } from '@/api/system/dict/data';
+import {goodsModel, getCategorySelectTree} from '@/api/baseSetting/finsystenant';
+import {getDicts} from '@/api/system/dict/data';
 import * as DateFormatter from '@/utils/DateFormatter';
 
 export default {
   name: 'index',
-  components: { MyButton, MyTableV2 },
+  components: {MyButton, MyTableV2},
   data() {
     return {
       // 鎼滅储妗�
@@ -42,12 +42,12 @@
           placeholder: '璇烽�夋嫨',
           defaultValue: '',
           options: [],
-          cascader: [{key:'baseGoodsModelsId',queryKey: 'goodsTemplatesId'}],
+          cascader: [{key: 'baseGoodsModelsId', queryKey: 'goodsTemplatesId'}],
           optionsConfig: {
             label: 'label',
             value: 'id',
             url: SettingIplatform.apiBaseURL + '/pc/base/category/select/tree',
-            props:{checkStrictly:false}
+            props: {checkStrictly: false}
           },
         },
         {
@@ -57,7 +57,7 @@
           placeholder: '璇疯緭鍏�',
           defaultValue: '',
           options: [],
-          cascader: [{key:'baseGoodsModelsId',queryKey: 'goodsTemplatesId'}],
+          cascader: [{key: 'baseGoodsModelsId', queryKey: 'goodsTemplatesId'}],
           optionsConfig: {
             label: 'goodsName',
             value: 'id',
@@ -84,14 +84,14 @@
           placeholder: '璇烽�夋嫨',
           defaultValue: '',
           options: [{
-            label:'A',
-            value:'1'
-          },{
-            label:'B',
-            value:'2'
-          },{
-            label:'C',
-            value:'3'
+            label: 'A',
+            value: '1'
+          }, {
+            label: 'B',
+            value: '2'
+          }, {
+            label: 'C',
+            value: '3'
           }],
         },
       ],
@@ -130,16 +130,17 @@
         },
         // 鍒椾俊鎭�
         columns: [
-          { title: '鐗╁搧鍚嶇О', field: 'baseGoodsTemplateName', align: 'left' },
-          { title: '瑙勬牸鍨嬪彿', field: 'baseGoodsModelsName', align: 'center' },
-          { title: '鍗曚綅', field: 'unit', align: 'center' },
-          { title: '褰撳墠搴撳瓨', field: 'warehouseCount', align: 'center' },
-          { title: '淇濆簳搴撳瓨', field: 'lowerLimit', align: 'left' },
-          { title: '灏侀《搴撳瓨', field: 'upperLimit', align: 'left' },
+          {title: '鐗╁搧鍚嶇О', field: 'baseGoodsTemplateName', align: 'left', minWidth: 140},
+          {title: '瑙勬牸鍨嬪彿', field: 'baseGoodsModelsName', align: 'left', minWidth: 130},
+          {title: '鍗曚綅', field: 'unit', align: 'center', width: 80},
+          {title: '褰撳墠搴撳瓨', field: 'warehouseCount', align: 'center', width: 130},
+          {title: '淇濆簳搴撳瓨', field: 'lowerLimit', align: 'center', width: 130},
+          {title: '灏侀《搴撳瓨', field: 'upperLimit', align: 'center', width: 130},
           {
             title: '鐘舵��',
             field: 'warningType',
-            align: 'left',
+            align: 'center',
+            width: 90,
             formatter: (row) => {
               return {
                 type: row.warningType == 1 ? 'warning' : 'danger',
@@ -150,10 +151,10 @@
           {
             title: '棰勮鏃堕棿',
             field: 'warningTime',
-            align: 'left',
+            align: 'center',
             width: 160,
             formatter: (row) => {
-              return { value: DateFormatter.LongToDateTime(row.warningTime) };
+              return {value: DateFormatter.LongToDateTime(row.warningTime)};
             },
           },
         ],
@@ -177,13 +178,15 @@
       this.$modal
         .confirm('鏄惁纭鍒犻櫎鍚嶇О涓�"' + row.name + '"鐨勬満鏋勫悧锛�')
         .then(function () {
-          finsystenant.del({ id: row.id }).then((res) => {});
+          finsystenant.del({id: row.id}).then((res) => {
+          });
         })
         .then((res) => {
           this.$message.success('鍒犻櫎鎴愬姛锛�');
           this.search();
         })
-        .catch(() => {});
+        .catch(() => {
+        });
     },
     // 鏌ヨtable鍒楄〃
     search(pageNum) {
diff --git a/admin-web/src/views/stock/ledger/inventoryAlert/index.vue b/admin-web/src/views/stock/ledger/inventoryAlert/index.vue
index 150b2fb..2b38e4b 100644
--- a/admin-web/src/views/stock/ledger/inventoryAlert/index.vue
+++ b/admin-web/src/views/stock/ledger/inventoryAlert/index.vue
@@ -178,14 +178,14 @@
         },
         // 鍒椾俊鎭�
         columns: [
-          { title: '鏈烘瀯', field: 'agencyName', align: 'left' },
-          { title: '浠撳簱', field: 'warehouseName', align: 'center' },
-          { title: '鍒嗙被', field: 'categoryName', align: 'center' },
-          { title: '鎵�灞炵被鍒�', field: 'costType', align: 'center' },
-          { title: '鐗╁搧鍚嶇О', field: 'goodsName', align: 'left' },
-          { title: '瑙勬牸鍨嬪彿', field: 'modelName', align: 'left' },
-          { title: '淇濆簳搴撳瓨', field: 'lowerLimit', align: 'left' },
-          { title: '灏侀《搴撳瓨', field: 'upperLimit', align: 'left' },
+          { title: '鏈烘瀯', field: 'agencyName', align: 'left', minWidth: 130 },
+          { title: '浠撳簱', field: 'warehouseName', align: 'left', minWidth: 130 },
+          { title: '鍒嗙被', field: 'categoryName', align: 'left', minWidth: 130 },
+          { title: '鎵�灞炵被鍒�', field: 'costType', align: 'center', width: 80 },
+          { title: '鐗╁搧鍚嶇О', field: 'goodsName', align: 'left', minWidth: 130 },
+          { title: '瑙勬牸鍨嬪彿', field: 'modelName', align: 'left', minWidth: 130 },
+          { title: '淇濆簳搴撳瓨', field: 'lowerLimit', align: 'center', width: 100 },
+          { title: '灏侀《搴撳瓨', field: 'upperLimit', align: 'center', width: 100 },
         ],
         // 鎿嶄綔淇℃伅
         operation: {
diff --git a/admin-web/src/views/stock/ledger/inventoryQuery/index.vue b/admin-web/src/views/stock/ledger/inventoryQuery/index.vue
index 56f4188..f24b0c8 100644
--- a/admin-web/src/views/stock/ledger/inventoryQuery/index.vue
+++ b/admin-web/src/views/stock/ledger/inventoryQuery/index.vue
@@ -16,7 +16,7 @@
         </el-card>
       </el-container>
     </el-container>
-    
+
   </div>
 </template>
 
@@ -140,14 +140,14 @@
         },
         // 鍒椾俊鎭�
         columns: [
-          { title: '鏈烘瀯', field: 'agencyName', align: 'center' },
-          { title: '浠撳簱', field: 'warehouseName', align: 'center' },
-          { title: '鍒嗙被', field: 'categoryName', align: 'center' },
-          { title: '鎵�灞炵被鍒�', field: 'costType', align: 'center' },
-          { title: '鐗╁搧鍚嶇О', field: 'goodsTemplateName', align: 'left' },
-          { title: '瑙勬牸鍨嬪彿', field: 'baseGoodsModelsName', align: 'left' },
-          { title: '鍗曚綅', field: 'unit', align: 'left' },
-          { title: '褰撳墠搴撳瓨', field: 'kucun', align: 'left' },
+          { title: '鏈烘瀯', field: 'agencyName', align: 'left', minWidth: 130 },
+          { title: '浠撳簱', field: 'warehouseName', align: 'left', minWidth: 130 },
+          { title: '鍒嗙被', field: 'categoryName', align: 'left', minWidth: 130 },
+          { title: '鎵�灞炵被鍒�', field: 'costType', align: 'center', width:80 },
+          { title: '鐗╁搧鍚嶇О', field: 'goodsTemplateName', align: 'left', minWidth: 140 },
+          { title: '瑙勬牸鍨嬪彿', field: 'baseGoodsModelsName', align: 'left', minWidth: 130 },
+          { title: '鍗曚綅', field: 'unit', align: 'center', width:80 },
+          { title: '褰撳墠搴撳瓨', field: 'kucun', align: 'center' },
         ],
         paging: {
           show: true, // 鏄剧ず鍒嗛〉
diff --git a/admin-web/src/views/stock/ledger/ledgerQuery/index.vue b/admin-web/src/views/stock/ledger/ledgerQuery/index.vue
index 16a2193..5bf9cd5 100644
--- a/admin-web/src/views/stock/ledger/ledgerQuery/index.vue
+++ b/admin-web/src/views/stock/ledger/ledgerQuery/index.vue
@@ -182,28 +182,29 @@
         },
         // 鍒椾俊鎭�
         columns: [
-          { title: '鏈烘瀯', field: 'agencyName', align: 'left' },
-          { title: '浠撳簱', field: 'warehouseName', align: 'center' },
-          { title: '鐗╁搧鍚嶇О', field: 'goodsTemplateName', align: 'center' },
-          { title: '瑙勬牸鍨嬪彿', field: 'baseGoodsModelsName', align: 'center' },
+          { title: '鏈烘瀯', field: 'agencyName', align: 'left', width: 130 },
+          { title: '浠撳簱', field: 'warehouseName', align: 'left', width: 130 },
+          { title: '鐗╁搧鍚嶇О', field: 'goodsTemplateName', align: 'left', minWidth: 130 },
+          { title: '瑙勬牸鍨嬪彿', field: 'baseGoodsModelsName', align: 'left', width: 130 },
           {
             title: '绫诲瀷',
             field: 'summary',
-            align: 'left',
+            align: 'center',
             formatter: (row) => {
               let result = stockType(row)
               return { value: result };
             },
           },
-          { title: '鍗曞彿', field: 'businessFormCode', align: 'left' },
-          { title: '鏁伴噺', field: 'thisCount', align: 'left' },
-          { title: '鎿嶄綔鍓嶆暟閲�', field: 'initialCount', align: 'left' },
-          { title: '鎿嶄綔鍚庢暟閲�', field: 'endCount', align: 'left' },
-          { title: '鍦ㄩ��', field: 'zaiTuCount', align: 'left' },
+          { title: '鍗曞彿', field: 'businessFormCode', align: 'center', width: 130 },
+          { title: '鏁伴噺', field: 'thisCount', align: 'center', width: 100 },
+          { title: '鎿嶄綔鍓嶆暟閲�', field: 'initialCount', align: 'center', width: 100 },
+          { title: '鎿嶄綔鍚庢暟閲�', field: 'endCount', align: 'center', width: 100 },
+          { title: '鍦ㄩ��', field: 'zaiTuCount', align: 'center', width: 100 },
           {
             title: '鎿嶄綔鏃堕棿',
             field: 'dealTime',
-            align: 'left',
+            align: 'center',
+            width: 160,
             formatter: (row) => {
               return { value: DateFormatter.LongToDateTime(row.dealTime) };
             },
diff --git a/admin-web/src/views/stock/procure/purchaseOrder/edit.vue b/admin-web/src/views/stock/procure/purchaseOrder/edit.vue
index 6b4a2a1..e5afac4 100644
--- a/admin-web/src/views/stock/procure/purchaseOrder/edit.vue
+++ b/admin-web/src/views/stock/procure/purchaseOrder/edit.vue
@@ -229,7 +229,6 @@
     };
     // 閲戦鏍¢獙
     var checkPrice = (rule, value, callback) => {
-      console.log(value);
       if (!value) {
         return callback(new Error('璇疯緭鍏�'));
       }
@@ -241,7 +240,6 @@
     };
     // 鏁伴噺鏍¢獙
     var checkCounts = (rule, value, callback) => {
-      console.log(value);
       if (!value) {
         return callback(new Error('璇疯緭鍏�'));
       }
@@ -314,7 +312,6 @@
         title: '涓婁紶',
         max: 20, // 鏈�澶уぇ灏忥紝鍗曚綅M
         num: 10, // 鏀寔涓婁紶鍥剧墖涓暟
-        accept: '.jpg,.png', // 闄愬埗鏍煎紡
         tip: '', // 鎻愮ず 榛樿锛歚鍙兘涓婁紶${this.defaultSettings.num}涓�${this.defaultSettings.accept}鏂囦欢锛屼笖涓嶈秴杩�${this.defaultSettings.max}kb`
         uploadUrl: getUploadUrl(), // 涓婁紶璺緞
         multiple: true, // 鏄惁鏀寔鎵归噺涓婁紶
@@ -504,7 +501,6 @@
       this.$refs['ruleForm'].validate((valid) => {
         if (valid) {
           this.loading = true;
-          console.log('formData', this.formData);
           if (!this.setting.id) {
             procureAdd(this.formData)
               .then((res) => {
@@ -513,7 +509,6 @@
                 this.$emit('search');
               })
               .catch((err) => {
-                console.log('create err', err);
                 this.loading = false;
                 this.$message.error('淇濆瓨澶辫触');
               });
@@ -525,7 +520,6 @@
                 this.$emit('search');
               })
               .catch((err) => {
-                console.log('edit err', err);
                 this.loading = false;
                 this.$message.error('淇濆瓨澶辫触');
               });
diff --git a/admin-web/src/views/stock/procure/purchaseOrder/index.vue b/admin-web/src/views/stock/procure/purchaseOrder/index.vue
index 6973b29..110ee7a 100644
--- a/admin-web/src/views/stock/procure/purchaseOrder/index.vue
+++ b/admin-web/src/views/stock/procure/purchaseOrder/index.vue
@@ -13,69 +13,72 @@
               <my-button name="鏂板" @click="handleAdd" site="tools" size="medium" />
               <my-button name="瀵煎叆" @click="importSetting.dialogShow = true" site="tools" size="medium" />
             </div>
-            <div :style="{ 'overflow-y': 'auto', height: `${clientHeight - 320}px` }" v-loading="loading">
-              <el-row v-if="list.length" class="card" :gutter="5">
-                <el-col v-for="(item, index) in list" :key="index" class="cm-item">
-                  <el-card class="card-data">
-                    <div class="card-container">
-                      <div class="card-header">
-                        <div class="card-header-left">
-                          <span>鍏ュ簱鍗曞彿锛�</span>
-                          <span class="value">{{ item.businessFormCode }}</span>
-                          <div class="states" :class="item.states == 1 ? '' : 'states-success'">
-                            {{ item.states == 1 ? '寰呭叆搴�' : '宸插叆搴�' }}
+            <div v-loading="loading" style="margin-bottom: 15px">
+              <div :style="{ 'overflow-y': 'auto', height: 'calc(100vh - 352px)' }">
+                <el-row v-if="list.length" class="card" :gutter="5">
+                  <el-col v-for="(item, index) in list" :key="index" class="cm-item">
+                    <el-card class="card-data">
+                      <div class="card-container">
+                        <div class="card-header">
+                          <div class="card-header-left">
+                            <span>鍏ュ簱鍗曞彿锛�</span>
+                            <span class="value">{{ item.businessFormCode }}</span>
+                            <div class="states" :class="item.states == 1 ? '' : 'states-success'">
+                              {{ item.states == 1 ? '寰呭叆搴�' : '宸插叆搴�' }}
+                            </div>
+                          </div>
+                          <div class="card-header-right">
+                            <template v-if="item.states == 1">
+                              <el-button name="缂栬緫" site="form" type="success" size="mini" @click="handleEdit(item)"
+                              >缂栬緫</el-button
+                              >
+                              <el-button name="鍏ュ簱" site="form" type="primary" size="mini" @click="handleIncome(item)"
+                              >鍏ュ簱</el-button
+                              >
+                              <el-button name="鍒犻櫎" site="form" type="danger" size="mini" @click="del(item)"
+                              >鍒犻櫎</el-button
+                              >
+                            </template>
+                            <template v-if="item.states != 1">
+                              <el-button site="form" type="success" size="mini" @click="handleExport(item)"
+                              >瀵煎嚭鍏ュ簱鍗�</el-button
+                              >
+                            </template>
+                            <el-button name="鏌ョ湅璇︽儏" site="form" type="info" size="mini" @click="handleDetail(item)"
+                            >鏌ョ湅璇︽儏</el-button
+                            >
                           </div>
                         </div>
-                        <div class="card-header-right">
-                          <template v-if="item.states == 1">
-                            <el-button name="缂栬緫" site="form" type="success" size="mini" @click="handleEdit(item)"
-                            >缂栬緫</el-button
-                            >
-                            <el-button name="鍏ュ簱" site="form" type="primary" size="mini" @click="handleIncome(item)"
-                            >鍏ュ簱</el-button
-                            >
-                            <el-button name="鍒犻櫎" site="form" type="danger" size="mini" @click="del(item)"
-                            >鍒犻櫎</el-button
-                            >
-                          </template>
-                          <template v-if="item.states != 1">
-                            <el-button site="form" type="success" size="mini" @click="handleExport(item)"
-                            >瀵煎嚭鍏ュ簱鍗�</el-button
-                            >
-                          </template>
-                          <el-button name="鏌ョ湅璇︽儏" site="form" type="info" size="mini" @click="handleDetail(item)"
-                          >鏌ョ湅璇︽儏</el-button
-                          >
+                        <div class="one-hed">
+                          <div class="box"><span class="span-two">鏈烘瀯锛�</span>{{ item.agencyId }}</div>
+                          <div class="box"><span class="span-two">鎿嶄綔浜猴細</span>{{ item.buyerName }}</div>
+                          <div class="box">
+                            <span class="span-two">閲囪喘鏃堕棿锛�</span>{{ item.procureTime | formatTime }}
+                          </div>
+                          <div class="box">
+                            <span class="span-two">鍏ュ簱鏃堕棿锛�</span>{{ item.incomeTime | formatTime }}
+                          </div>
                         </div>
-                      </div>
-                      <div class="one-hed">
-                        <div class="box"><span class="span-two">鏈烘瀯锛�</span>{{ item.agencyId }}</div>
-                        <div class="box"><span class="span-two">鎿嶄綔浜猴細</span>{{ item.buyerName }}</div>
-                        <div class="box">
-                          <span class="span-two">閲囪喘鏃堕棿锛�</span>{{ item.procureTime | formatTime }}
-                        </div>
-                        <div class="box">
-                          <span class="span-two">鍏ュ簱鏃堕棿锛�</span>{{ item.incomeTime | formatTime }}
-                        </div>
-                      </div>
-                      <div class="card-end">
-                        <div v-for="(just, index) in item.fromProcureTemplateInfoList" :key="index" class="item">
-                          <div class="name">{{ just.goodsTemplateName }}</div>
-                          <div class="value-box">
-                            <div class="value-box-item">
-                              <span class="label">鏁伴噺锛�</span>
-                              <span class="value">{{ just.count }}</span>
-                              <span class="unit">{{ just.unit }}</span>
+                        <div class="card-end">
+                          <div v-for="(just, index) in item.fromProcureTemplateInfoList" :key="index" class="item">
+                            <div class="name">{{ just.goodsTemplateName }}</div>
+                            <div class="value-box">
+                              <div class="value-box-item">
+                                <span class="label">鏁伴噺锛�</span>
+                                <span class="value">{{ just.count }}</span>
+                                <span class="unit">{{ just.unit }}</span>
+                              </div>
                             </div>
                           </div>
                         </div>
                       </div>
-                    </div>
-                  </el-card>
-                </el-col>
-              </el-row>
-              <div class="no-data" v-else>鏆傛棤鏁版嵁</div>
+                    </el-card>
+                  </el-col>
+                </el-row>
+                <div class="no-data" v-else>鏆傛棤鏁版嵁</div>
+              </div>
             </div>
+
             <el-pagination
               :small="false"
               :current-page="pageNum"
@@ -246,7 +249,6 @@
         this.list = res.datas;
         this.total = res.totalRows;
         this.loading = false;
-        console.log(this.list);
       });
     },
 
diff --git a/admin-web/src/views/stock/procure/receiptDetails/index.vue b/admin-web/src/views/stock/procure/receiptDetails/index.vue
index 67a4754..9e884bd 100644
--- a/admin-web/src/views/stock/procure/receiptDetails/index.vue
+++ b/admin-web/src/views/stock/procure/receiptDetails/index.vue
@@ -159,9 +159,9 @@
         },
         // 鍒椾俊鎭�
         columns: [
-          { title: '鍗曞彿', field: 'businessFormCode', align: 'center' },
-          { title: '鐗╁搧鍚嶇О', field: 'goodsTemplateName', align: 'center' },
-          { title: '瑙勬牸鍨嬪彿', field: 'baseGoodsModelsName', align: 'center' },
+          { title: '鍗曞彿', field: 'businessFormCode', align: 'center', width: 130 },
+          { title: '鐗╁搧鍚嶇О', field: 'goodsTemplateName', align: 'left', width: 140 },
+          { title: '瑙勬牸鍨嬪彿', field: 'baseGoodsModelsName', align: 'left', width: 130 },
           {
             title: '鍗曚环',
             field: 'price',
@@ -179,8 +179,8 @@
               return { value: row.price / 100 };
             },
           },
-          { title: '鎵�灞炴満鏋�', field: 'agencyName', align: 'center' },
-          { title: '鍒涘缓浜�', field: 'buyerName', align: 'center' },
+          { title: '鎵�灞炴満鏋�', field: 'agencyName', align: 'center', width: 130 },
+          { title: '鍒涘缓浜�', field: 'buyerName', align: 'center', width: 90 },
           {
             title: '鎿嶄綔鏃堕棿',
             field: 'procureTime',
@@ -194,7 +194,7 @@
         // 鎿嶄綔淇℃伅
         operation: {
           show: true, // 鏄剧ず鎿嶄綔鍒�
-          width: '150', // 鍒楀
+          width: 100, // 鍒楀
           attr: [
             {
               title: '璇︽儏',
diff --git a/admin-web/src/views/stock/scrap/itemScrapping/detail.vue b/admin-web/src/views/stock/scrap/itemScrapping/detail.vue
index ab9f27f..938b3ad 100644
--- a/admin-web/src/views/stock/scrap/itemScrapping/detail.vue
+++ b/admin-web/src/views/stock/scrap/itemScrapping/detail.vue
@@ -36,34 +36,18 @@
       <el-row :gutter="20">
         <el-col :span="8">
           <span>鐗╁搧鍒嗙被锛�</span>
-          <span>{{ goodsItem.baseCategoryName }}</span>
+          <span>{{ goodsItem.categoryName }}</span>
         </el-col>
         <el-col :span="8">
           <span>鐗╁搧鍚嶇О锛�</span>
-          <span>{{ goodsItem.goodsTemplateName }}</span>
+          <span>{{ goodsItem.goodsName }}</span>
         </el-col>
       </el-row>
       <el-table :data="goodsItem.models" :stripe="true" style="margin-top: 20px">
-        <el-table-column prop="baseGoodsModelsName" label="瑙勬牸鍨嬪彿" align="center">
-          <template slot-scope="scope">
-            {{ scope.row.baseGoodsModelsName }}
-          </template>
-        </el-table-column>
-        <el-table-column label="鍗曚綅" align="center">
-          <template slot-scope="scope">
-            {{ scope.row.unit }}
-          </template>
-        </el-table-column>
-        <el-table-column prop="counts" label="鎶ュ簾鏁伴噺" align="center">
-          <template slot-scope="scope">
-            {{ scope.row.counts }}
-          </template>
-        </el-table-column>
-        <el-table-column prop="scrappedCode" label="鎶ュ簾鍘熷洜" align="center">
-          <template slot-scope="scope">
-            {{ getDictName(scope.row.scrappedCode) }}
-          </template>
-        </el-table-column>
+        <el-table-column prop="baseGoodsModelsName" label="瑙勬牸鍨嬪彿" align="center"></el-table-column>
+        <el-table-column label="鍗曚綅" prop="unit" align="center"></el-table-column>
+        <el-table-column prop="counts" label="鎶ュ簾鏁伴噺" align="center"></el-table-column>
+        <el-table-column prop="scrappedName" label="鎶ュ簾鍘熷洜" align="center"></el-table-column>
       </el-table>
     </div>
     <div id="uploadPreviewImages" style="display: none">
@@ -113,7 +97,7 @@
         states: '',
         createName: '',
         time: '',
-        scrappedGoodsInfo: [],
+        scrappedGoods: [],
       },
     };
   },
diff --git a/admin-web/src/views/stock/scrap/itemScrapping/edit.vue b/admin-web/src/views/stock/scrap/itemScrapping/edit.vue
index a4846ec..ea65c12 100644
--- a/admin-web/src/views/stock/scrap/itemScrapping/edit.vue
+++ b/admin-web/src/views/stock/scrap/itemScrapping/edit.vue
@@ -139,9 +139,9 @@
                 <el-select v-model="scope.row.scrappedCode" placeholder="璇烽�夋嫨">
                   <el-option
                     v-for="item in scrapReasonOptions"
-                    :key="item.dict_value"
+                    :key="item.dict_code"
                     :label="item.dict_label"
-                    :value="item.dict_value"
+                    :value="item.dict_code"
                   />
                 </el-select>
               </template>
@@ -241,7 +241,6 @@
         warehouseId: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
         dealTime: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
         buyType: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
-
         uploadFiles: [{ required: true, message: '璇蜂笂浼�', trigger: 'change' }],
         baseCategoryIds: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
         baseGoodsTemplateId: [{ validator: checkGoodsTemplateId, trigger: ['blur', 'change'] }],
@@ -252,7 +251,6 @@
         title: '涓婁紶',
         max: 20, // 鏈�澶уぇ灏忥紝鍗曚綅M
         num: 10, // 鏀寔涓婁紶鍥剧墖涓暟
-        accept: '.jpg,.png', // 闄愬埗鏍煎紡
         tip: '', // 鎻愮ず 榛樿锛歚鍙兘涓婁紶${this.defaultSettings.num}涓�${this.defaultSettings.accept}鏂囦欢锛屼笖涓嶈秴杩�${this.defaultSettings.max}kb`
         uploadUrl: getUploadUrl(), // 涓婁紶璺緞
         multiple: true, // 鏄惁鏀寔鎵归噺涓婁紶
@@ -272,7 +270,7 @@
       this.getWarehouseList();
       this.getgoodsTemplate();
       this.getgoodsModel();
-      this.getCategoryTree();
+      await this.getCategoryTree();
       this.formData.scrappedGoodsInfo.push(JSON.parse(JSON.stringify(this.goodsItem)));
       this.formData.operatorId = this.userInfo.id;
       this.formData.operatorName = this.userInfo.userName;
@@ -291,7 +289,7 @@
 
     // 鑾峰彇鎶ュ簾浠撳簱鍒楄〃
     getWarehouseList() {
-      selectTenantWarehouse()
+      selectTenantWarehouse({ agencyId: this.userInfo.tenantId })
         .then((res) => {
           this.warehouses = res;
           if (this.warehouses.length && !this.formData.warehouseId) {
@@ -427,7 +425,6 @@
     handleSubmit() {
       this.$refs['ruleForm'].validate((valid) => {
         if (valid) {
-          console.log('this.formData', this.formData);
           scrappedAdd(this.formData)
             .then((res) => {
               this.$message.success('淇濆瓨鎴愬姛锛�');
diff --git a/admin-web/src/views/stock/scrap/itemScrapping/index.vue b/admin-web/src/views/stock/scrap/itemScrapping/index.vue
index 4f2565c..97373c7 100644
--- a/admin-web/src/views/stock/scrap/itemScrapping/index.vue
+++ b/admin-web/src/views/stock/scrap/itemScrapping/index.vue
@@ -12,7 +12,7 @@
             <div class="table-tool-bar" style="margin-bottom: 15px">
               <my-button name="鏂板" @click="handleAdd" site="tools" size="medium" />
             </div>
-            <div :style="{ 'overflow-y': 'auto', height: `${clientHeight - 320}px` }">
+            <div :style="{ 'overflow-y': 'auto', height: 'calc(100vh - 352px)' }">
               <el-row class="card" :gutter="5" v-loading="loading">
                 <el-col v-for="(item, index) in list" :key="index" class="cm-item">
                   <el-card class="card-data">
@@ -21,7 +21,7 @@
                         <div class="card-header-left">
                           <span>鎶ュ簾鍗曞彿锛�</span>
                           <span class="value">{{ item.businessFormCode }}</span>
-                          
+
                         </div>
                         <div class="card-header-right">
                           <el-button site="form" type="success" size="mini" @click="handleExport(item)"
@@ -138,13 +138,13 @@
         },
         {
           type: 'date-picker',
-          dataIndex: 'incomeTimeStart',
+          dataIndex: 'startTime',
           label: '鎶ュ簾鏃堕棿',
           defaultValue: '',
         },
         {
           type: 'date-picker',
-          dataIndex: 'incomeTimeEnd',
+          dataIndex: 'endTime',
           label: '鑷�',
           defaultValue: '',
         },
@@ -199,7 +199,6 @@
         this.list = res.datas;
         this.total = res.totalRows;
         this.loading = false;
-        console.log(this.list);
       });
     },
 
diff --git a/admin-web/src/views/stock/scrap/scrapDetails/index.vue b/admin-web/src/views/stock/scrap/scrapDetails/index.vue
index d694dca..235d732 100644
--- a/admin-web/src/views/stock/scrap/scrapDetails/index.vue
+++ b/admin-web/src/views/stock/scrap/scrapDetails/index.vue
@@ -164,16 +164,17 @@
         },
         // 鍒椾俊鎭�
         columns: [
-          { title: '鍗曞彿', field: 'businessFormCode', align: 'left' },
-          { title: '鐗╁搧鍚嶇О', field: 'goodsTemplateName', align: 'center' },
-          { title: '瑙勬牸鍨嬪彿', field: 'baseGoodsModelsName', align: 'center' },
-          { title: '鎶ュ簾鏁伴噺', field: 'lv', align: 'center' },
-          { title: '鎵�灞炴満鏋�', field: 'agencyName', align: 'left' },
+          { title: '鍗曞彿', field: 'businessFormCode', align: 'center', width: 130 },
+          { title: '鐗╁搧鍚嶇О', field: 'goodsTemplateName', align: 'left', minWidth: 130 },
+          { title: '瑙勬牸鍨嬪彿', field: 'baseGoodsModelsName', align: 'left', minWidth: 130  },
+          { title: '鎶ュ簾鏁伴噺', field: 'counts', align: 'center' },
+          { title: '鎵�灞炴満鏋�', field: 'agencyName', align: 'left', minWidth: 130 },
           { title: '鍒涘缓浜�', field: 'operatorName', align: 'left' },
           {
             title: '鎿嶄綔鏃堕棿',
             field: 'dealTime',
-            align: 'left',
+            align: 'center',
+            width: 160,
             formatter: (row) => {
               return { value: DateFormatter.LongToDateTime(row.dealTime) };
             },
@@ -182,7 +183,7 @@
         // 鎿嶄綔淇℃伅
         operation: {
           show: true, // 鏄剧ず鎿嶄綔鍒�
-          width: '150', // 鍒楀
+          width: 100, // 鍒楀
           attr: [
             {
               title: '璇︽儏',
diff --git a/admin-web/src/views/stock/transfer/transferApplication/index.vue b/admin-web/src/views/stock/transfer/transferApplication/index.vue
index b514269..8e1a11a 100644
--- a/admin-web/src/views/stock/transfer/transferApplication/index.vue
+++ b/admin-web/src/views/stock/transfer/transferApplication/index.vue
@@ -12,7 +12,7 @@
             <div class="table-tool-bar" style="margin-bottom: 15px">
               <my-button name="璋冩嫧鐢宠" icon="el-icon-plus" @click="handleAdd" site="tools" size="medium" />
             </div>
-            <div :style="{ 'overflow-y': 'auto', height: `${clientHeight - 320}px` }" v-loading="loading">
+            <div :style="{ 'overflow-y': 'auto', height: 'calc(100vh - 352px)' }" v-loading="loading">
               <el-row v-if="list.length" class="card" :gutter="5">
                 <el-col v-for="(item, index) in list" :key="index" class="cm-item">
                   <el-card class="card-data">
diff --git a/admin-web/src/views/stock/transfer/transferdetails/index.vue b/admin-web/src/views/stock/transfer/transferdetails/index.vue
index 0817f63..b630062 100644
--- a/admin-web/src/views/stock/transfer/transferdetails/index.vue
+++ b/admin-web/src/views/stock/transfer/transferdetails/index.vue
@@ -160,12 +160,12 @@
         },
         // 鍒椾俊鎭�
         columns: [
-          { title: '鍗曞彿', field: 'businessFormCode', align: 'center' },
-          { title: '鐗╁搧鍚嶇О', field: 'goodsName', align: 'center' },
-          { title: '瑙勬牸鍨嬪彿', field: 'baseGoodsModelsName', align: 'center' },
-          { title: '鏁伴噺', field: 'counts', align: 'left' },
-          { title: '鎺ュ彈鏈烘瀯', field: 'inAgencyName', align: 'left' },
-          { title: '鍒涘缓浜�', field: 'operatorName', align: 'left' },
+          { title: '鍗曞彿', field: 'businessFormCode', align: 'center', width: 130 },
+          { title: '鐗╁搧鍚嶇О', field: 'goodsName', align: 'left', width: 140 },
+          { title: '瑙勬牸鍨嬪彿', field: 'baseGoodsModelsName', align: 'left', width: 130 },
+          { title: '鏁伴噺', field: 'counts', align: 'center' },
+          { title: '鎺ュ彈鏈烘瀯', field: 'inAgencyName', align: 'left', width: 130 },
+          { title: '鍒涘缓浜�', field: 'operatorName', align: 'center', width: 90 },
           {
             title: '鐢宠鏃堕棿',
             field: 'createTime',
@@ -184,11 +184,12 @@
               return { value: row.inTime ? DateFormatter.LongToDateTime(row.inTime) : '-' };
             },
           },
-          { title: '璋冩嫧鏈烘瀯', field: 'outAgencyName', align: 'left' },
+          { title: '璋冩嫧鏈烘瀯', field: 'outAgencyName', align: 'left', width: 130 },
           {
             title: '璋冩嫧浜�',
             field: 'outOperatorName',
             align: 'center',
+            width: 90,
             formatter: (row) => {
               return { value: row.outOperatorName || '-' };
             },
@@ -206,7 +207,7 @@
         // 鎿嶄綔淇℃伅
         operation: {
           show: true, // 鏄剧ず鎿嶄綔鍒�
-          width: '150', // 鍒楀
+          width: 100, // 鍒楀
           attr: [
             {
               title: '璇︽儏',
diff --git a/admin-web/src/views/stock/transfer/transferissue/index.vue b/admin-web/src/views/stock/transfer/transferissue/index.vue
index c151048..f1a4aea 100644
--- a/admin-web/src/views/stock/transfer/transferissue/index.vue
+++ b/admin-web/src/views/stock/transfer/transferissue/index.vue
@@ -9,7 +9,7 @@
         <el-row style="margin-top: 15px">
           <el-col>
             <!--鍒楄〃-->
-            <div :style="{ 'overflow-y': 'auto', height: `${clientHeight - 320}px` }" v-loading="loading">
+            <div :style="{ 'overflow-y': 'auto', height: 'calc(100vh - 352px)' }" v-loading="loading">
               <el-row v-if="list.length" class="card" :gutter="5">
                 <el-col v-for="(item, index) in list" :key="index" class="cm-item">
                   <el-card class="card-data">
diff --git a/consum-base/src/main/java/com/consum/base/controller/BaseCategoryController.java b/consum-base/src/main/java/com/consum/base/controller/BaseCategoryController.java
index 343c47b..4cea9f8 100644
--- a/consum-base/src/main/java/com/consum/base/controller/BaseCategoryController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/BaseCategoryController.java
@@ -1,6 +1,7 @@
 package com.consum.base.controller;
 
 import com.consum.base.BaseController;
+import com.consum.base.core.utils.CommonUtil;
 import com.consum.base.pojo.BaseCategoryParam;
 import com.consum.base.pojo.ProjectTreeResult;
 import com.consum.base.service.BaseCategoryServiceImpl;
@@ -11,17 +12,13 @@
 import com.walker.infrastructure.tree.TreeNode;
 import com.walker.infrastructure.utils.StringUtils;
 import com.walker.web.ResponseValue;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
 import java.util.List;
 import java.util.Map;
 import java.util.TreeMap;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.util.CollectionUtils;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
 
 /**
  * @Description 鐗╁搧鍒嗙被
@@ -50,7 +47,7 @@
      * @Date 2023/10/30
      */
     @GetMapping("/select/tree")
-    public ResponseValue tree(String categoryName) {
+    public ResponseValue trees() {
         List<ProjectTreeResult> tree = this.baseCategoryService.tree();
         return ResponseValue.success(tree);
     }
@@ -61,7 +58,11 @@
      * @Date 2023/10/23
      */
     @PostMapping("/add")
-    public ResponseValue add(@RequestBody BaseCategoryParam param) {
+    public ResponseValue add() {
+        BaseCategoryParam param = CommonUtil.getObjFromReqBody(BaseCategoryParam.class);
+        BaseCategoryParam param2 = new BaseCategoryParam();
+        CommonUtil.copyProperties(param, param2);
+        param = param2;
         if (StringUtils.isEmpty(param.getCategoryName())) {
             return ResponseValue.error("鍒嗙被鍚嶇О涓虹┖");
         }
@@ -87,7 +88,12 @@
      * @Date 2023/10/23
      */
     @GetMapping("/list")
-    public ResponseValue queryBaseCategoryList(BaseCategoryParam param) {
+    public ResponseValue queryBaseCategoryList() {
+        BaseCategoryParam param = CommonUtil.getObjFromReq(BaseCategoryParam.class);
+        BaseCategoryParam param2 = new BaseCategoryParam();
+        CommonUtil.copyProperties(param, param2);
+        param = param2;
+
         S_user_core currentUser = this.getCurrentUser();
         if (currentUser == null) {
             return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
@@ -103,7 +109,12 @@
      * @Date 2023/10/23
      */
     @PostMapping("/edit")
-    public ResponseValue edit(@RequestBody BaseCategory baseCategory) {
+    public ResponseValue edit() {
+        BaseCategory baseCategory = CommonUtil.getObjFromReqBody(BaseCategory.class);
+        BaseCategory param2 = new BaseCategory();
+        CommonUtil.copyProperties(baseCategory, param2);
+        baseCategory = param2;
+
         Long id = baseCategory.getId();
         if (id == null || id.longValue() <= 0) {
             return ResponseValue.error("缂栬緫鐨勭墿鍝佸垎绫讳笉瀛樺湪");
@@ -131,7 +142,12 @@
      */
     //鍒嗙被涓嬫湁姝e父鐘舵�佺殑鐗╁搧鏃讹紝涓嶅厑璁哥鐢�
     @PostMapping("/updStatus")
-    public ResponseValue updateStatus(@RequestBody BaseCategory baseCategory) {
+    public ResponseValue updateStatus() {
+        BaseCategory baseCategory = CommonUtil.getObjFromReqBody(BaseCategory.class);
+        BaseCategory param2 = new BaseCategory();
+        CommonUtil.copyProperties(baseCategory, param2);
+        baseCategory = param2;
+
         if (baseCategory == null || baseCategory.getId() == null || baseCategory.getStates() == null) {
             return ResponseValue.error("鍙傛暟閿欒");
         }
@@ -151,7 +167,12 @@
      * @Date 2023/10/23
      */
     @DeleteMapping("/del")
-    public ResponseValue updateById(@RequestBody BaseCategory baseCategory) {
+    public ResponseValue updateById() {
+        BaseCategory baseCategory = CommonUtil.getObjFromReqBody(BaseCategory.class);
+        BaseCategory param2 = new BaseCategory();
+        CommonUtil.copyProperties(baseCategory, param2);
+        baseCategory = param2;
+
         if (baseCategory.getId() == null) {
             return ResponseValue.error("鍒嗙被id涓虹┖");
         }
diff --git a/consum-base/src/main/java/com/consum/base/controller/BaseGoodsModelsController.java b/consum-base/src/main/java/com/consum/base/controller/BaseGoodsModelsController.java
index b43e991..f074e93 100644
--- a/consum-base/src/main/java/com/consum/base/controller/BaseGoodsModelsController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/BaseGoodsModelsController.java
@@ -1,6 +1,7 @@
 package com.consum.base.controller;
 
 import com.consum.base.BaseController;
+import com.consum.base.core.utils.CommonUtil;
 import com.consum.base.service.BaseGoodsModelsServiceImpl;
 import com.consum.model.po.BaseGoodsModels;
 import com.iplatform.model.po.S_user_core;
@@ -48,7 +49,12 @@
      * @Date 2023/10/23
      */
     @PostMapping("/add")
-    public ResponseValue add(@RequestBody BaseGoodsModels models) {
+    public ResponseValue add() {
+        BaseGoodsModels models = CommonUtil.getObjFromReqBody(BaseGoodsModels.class);
+        BaseGoodsModels param2 = new BaseGoodsModels();
+        CommonUtil.copyProperties(models, param2);
+        models = param2;
+
         if (models.getGoodsTemplatesId() == null || StringUtils.isEmpty(models.getModelName()) || StringUtils.isEmpty(models.getUnit()) || models.getStates() == null) {
             return ResponseValue.error("鍙傛暟閿欒");
         }
@@ -69,7 +75,12 @@
      * @date 2023/10/25
      */
     @PostMapping("/updStatus")
-    public ResponseValue updateStatus(@RequestBody BaseGoodsModels models) {
+    public ResponseValue updateStatus() {
+        BaseGoodsModels models = CommonUtil.getObjFromReqBody(BaseGoodsModels.class);
+        BaseGoodsModels param2 = new BaseGoodsModels();
+        CommonUtil.copyProperties(models, param2);
+        models = param2;
+
         if (models == null || models.getId() == null || models.getStates() == null) {
             return ResponseValue.error("鍙傛暟閿欒");
         }
@@ -84,7 +95,12 @@
      * @Date 2023/10/25
      */
     @DeleteMapping("/del")
-    public ResponseValue updateById(@RequestBody BaseGoodsModels models) {
+    public ResponseValue updateById() {
+        BaseGoodsModels models = CommonUtil.getObjFromReqBody(BaseGoodsModels.class);
+        BaseGoodsModels param2 = new BaseGoodsModels();
+        CommonUtil.copyProperties(models, param2);
+        models = param2;
+
         if (models.getId() == null) {
             return ResponseValue.error("瑙勬牸鍨嬪彿id涓虹┖");
         }
diff --git a/consum-base/src/main/java/com/consum/base/controller/BaseGoodsTemplateController.java b/consum-base/src/main/java/com/consum/base/controller/BaseGoodsTemplateController.java
index c7c053a..f4ede5c 100644
--- a/consum-base/src/main/java/com/consum/base/controller/BaseGoodsTemplateController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/BaseGoodsTemplateController.java
@@ -1,6 +1,7 @@
 package com.consum.base.controller;
 
 import com.consum.base.BaseController;
+import com.consum.base.core.utils.CommonUtil;
 import com.consum.base.core.utils.MapUtils;
 import com.consum.base.core.utils.MapperUtil;
 import com.consum.base.pojo.BaseGoodsTemplateParam;
@@ -8,11 +9,7 @@
 import com.consum.base.service.BaseGoodsTemplateServiceImpl;
 import com.consum.base.service.BaseWarehouseServiceImpl;
 import com.consum.base.service.LWhGoodsService;
-import com.consum.model.po.BaseGoodsModels;
-import com.consum.model.po.BaseGoodsTemplate;
-import com.consum.model.po.BaseWarehouse;
-import com.consum.model.po.FinSysTenantUser;
-import com.consum.model.po.SDictData;
+import com.consum.model.po.*;
 import com.consum.model.vo.BaseGoodsTemplateVo;
 import com.walker.db.page.GenericPager;
 import com.walker.infrastructure.utils.StringUtils;
@@ -20,18 +17,14 @@
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
 import org.apache.commons.compress.utils.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.CollectionUtils;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @Description 鐗╁搧妯℃澘
@@ -57,7 +50,12 @@
      * @Date 2023/10/24
      */
     @PostMapping("/add")
-    public ResponseValue add(@RequestBody BaseGoodsTemplateParam param) {
+    public ResponseValue add() {
+        BaseGoodsTemplateParam param = CommonUtil.getObjFromReqBody(BaseGoodsTemplateParam.class);
+        BaseGoodsTemplateParam param2 = new BaseGoodsTemplateParam();
+        CommonUtil.copyProperties(param, param2);
+        param = param2;
+
         FinSysTenantUser sysInfo = this.getSysInfo();
         if (param.getCategoryId() == null) {
             return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
@@ -87,7 +85,12 @@
      * @Date 2023/10/24
      */
     @GetMapping("/list")
-    public ResponseValue queryList(BaseGoodsTemplateParam param) {
+    public ResponseValue queryList() {
+        BaseGoodsTemplateParam param = CommonUtil.getObjFromReq(BaseGoodsTemplateParam.class);
+        BaseGoodsTemplateParam param2 = new BaseGoodsTemplateParam();
+        CommonUtil.copyProperties(param, param2);
+        param = param2;
+
         FinSysTenantUser sysInfo = this.getSysInfo();
         if (sysInfo == null) {
             return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
@@ -121,7 +124,12 @@
      * @Date 2023/10/24
      */
     @PostMapping("/edit")
-    public ResponseValue edit(@RequestBody BaseGoodsTemplateParam param) {
+    public ResponseValue edit() {
+        BaseGoodsTemplateParam param = CommonUtil.getObjFromReqBody(BaseGoodsTemplateParam.class);
+        BaseGoodsTemplateParam param2 = new BaseGoodsTemplateParam();
+        CommonUtil.copyProperties(param, param2);
+        param = param2;
+
         if (StringUtils.isEmpty(param.getGoodsName())) {
             return ResponseValue.error("鐗╁搧鍚嶇О涓虹┖");
         }
@@ -142,7 +150,12 @@
      */
     //TODO 鐗╁搧鐨勭鐢ㄦ垨鍒犻櫎锛屼笉褰卞搷宸茬粡閲囪喘鍏ヨ繃搴撶殑鐗╁搧淇℃伅銆�
     @PostMapping("/updStatus")
-    public ResponseValue updateStatus(@RequestBody BaseGoodsTemplate goodsTemplate) {
+    public ResponseValue updateStatus() {
+        BaseGoodsTemplate goodsTemplate = CommonUtil.getObjFromReqBody(BaseGoodsTemplate.class);
+        BaseGoodsTemplate param2 = new BaseGoodsTemplate();
+        CommonUtil.copyProperties(goodsTemplate, param2);
+        goodsTemplate = param2;
+
         if (goodsTemplate == null || goodsTemplate.getId() == null || goodsTemplate.getStates() == null) {
             return ResponseValue.error("鍙傛暟閿欒");
         }
@@ -158,7 +171,12 @@
      */
     //TODO 鐗╁搧鐨勭鐢ㄦ垨鍒犻櫎锛屼笉褰卞搷宸茬粡閲囪喘鍏ヨ繃搴撶殑鐗╁搧淇℃伅銆�
     @DeleteMapping("/del")
-    public ResponseValue updateById(@RequestBody BaseGoodsTemplate goodsTemplate) {
+    public ResponseValue updateById() {
+        BaseGoodsTemplate goodsTemplate = CommonUtil.getObjFromReqBody(BaseGoodsTemplate.class);
+        BaseGoodsTemplate param2 = new BaseGoodsTemplate();
+        CommonUtil.copyProperties(goodsTemplate, param2);
+        goodsTemplate = param2;
+
         if (goodsTemplate.getId() == null) {
             return ResponseValue.error("鐗╁搧id涓虹┖");
         }
diff --git a/consum-base/src/main/java/com/consum/base/controller/BaseWarehouseController.java b/consum-base/src/main/java/com/consum/base/controller/BaseWarehouseController.java
index b1dcd6a..9c1bb36 100644
--- a/consum-base/src/main/java/com/consum/base/controller/BaseWarehouseController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/BaseWarehouseController.java
@@ -1,6 +1,7 @@
 package com.consum.base.controller;
 
 import com.consum.base.BaseController;
+import com.consum.base.core.utils.CommonUtil;
 import com.consum.base.pojo.BaseWarehouseParam;
 import com.consum.base.pojo.query.WarehouseQry;
 import com.consum.base.service.BaseWarehouseServiceImpl;
@@ -13,15 +14,10 @@
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
-import java.util.List;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 /**
  * @Description 浠撳簱绠$悊
@@ -44,7 +40,12 @@
      * @Date 2023/10/26
      */
     @PostMapping("/add")
-    public ResponseValue add(@RequestBody BaseWarehouseParam param) {
+    public ResponseValue add() {
+        BaseWarehouseParam param = CommonUtil.getObjFromReqBody(BaseWarehouseParam.class);
+        BaseWarehouseParam param2 = new BaseWarehouseParam();
+        CommonUtil.copyProperties(param, param2);
+        param = param2;
+
         if (StringUtils.isEmpty(param.getWarehouseName())) {
             return ResponseValue.error("浠撳簱鍚嶇О涓虹┖");
         }
@@ -63,7 +64,12 @@
      * @Date 2023/10/26
      */
     @GetMapping("/list")
-    public ResponseValue queryList(BaseWarehouseParam param) {
+    public ResponseValue queryList() {
+        BaseWarehouseParam param = CommonUtil.getObjFromReq(BaseWarehouseParam.class);
+        BaseWarehouseParam param2 = new BaseWarehouseParam();
+        CommonUtil.copyProperties(param, param2);
+        param = param2;
+
         FinSysTenantUser sysInfo = this.getSysInfo();
         if (sysInfo == null) {
             return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
@@ -79,7 +85,12 @@
      * @Date 2023/10/26
      */
     @PostMapping("/edit")
-    public ResponseValue edit(@RequestBody BaseWarehouse baseWarehouse) {
+    public ResponseValue edit() {
+        BaseWarehouse baseWarehouse = CommonUtil.getObjFromReqBody(BaseWarehouse.class);
+        BaseWarehouse param2 = new BaseWarehouse();
+        CommonUtil.copyProperties(baseWarehouse, param2);
+        baseWarehouse = param2;
+
         Long id = baseWarehouse.getId();
         if (id == null || id <= 0) {
             return ResponseValue.error("缂栬緫鐨勪粨搴撲笉瀛樺湪");
@@ -116,7 +127,12 @@
      * @Date 2023/10/26
      */
     @DeleteMapping("/del")
-    public ResponseValue updateById(@RequestBody BaseWarehouse baseWarehouse) {
+    public ResponseValue updateById() {
+        BaseWarehouse baseWarehouse = CommonUtil.getObjFromReqBody(BaseWarehouse.class);
+        BaseWarehouse param2 = new BaseWarehouse();
+        CommonUtil.copyProperties(baseWarehouse, param2);
+        baseWarehouse = param2;
+
         if (baseWarehouse.getId() == null) {
             return ResponseValue.error("浠撳簱id涓虹┖");
         }
@@ -162,7 +178,12 @@
         @ApiImplicitParam(name = "warehouseQry", value = "浠撳簱id鍜屽瀷鍙穒d", required = true, dataType = "WarehouseQry", paramType = "query")
     })
     @GetMapping("/select/number")
-    public ResponseValue selectNumber(@Validated WarehouseQry warehouseQry) {
+    public ResponseValue selectNumber() {
+        WarehouseQry warehouseQry = CommonUtil.getObjFromReq(WarehouseQry.class);
+        WarehouseQry param2 = new WarehouseQry();
+        CommonUtil.copyProperties(warehouseQry, param2);
+        warehouseQry = param2;
+
         Long warehouseId = warehouseQry.getWarehouseId();
         if (warehouseId == null) {
             Long agencyId = warehouseQry.getAgencyId();
diff --git a/consum-base/src/main/java/com/consum/base/controller/BaseWarehouseManagerController.java b/consum-base/src/main/java/com/consum/base/controller/BaseWarehouseManagerController.java
index a5d9f91..3ff82a0 100644
--- a/consum-base/src/main/java/com/consum/base/controller/BaseWarehouseManagerController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/BaseWarehouseManagerController.java
@@ -1,6 +1,7 @@
 package com.consum.base.controller;
 
 import com.consum.base.BaseController;
+import com.consum.base.core.utils.CommonUtil;
 import com.consum.base.pojo.request.WarehouseManagerParam;
 import com.consum.base.service.BaseWarehouseManagerServiceImpl;
 import com.consum.model.po.BaseWarehouseManager;
@@ -13,7 +14,6 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -39,12 +39,17 @@
     @ApiOperation(value = "鏂板", notes = "鏂板")
     @ApiImplicitParam(name = "warehouseManagerParam", value = "搴撶鍛樹俊鎭�", required = true, dataType = "WarehouseManagerParam", paramType = "body")
     @PostMapping("/save")
-    public ResponseValue add(@RequestBody WarehouseManagerParam warehouseManagerParam) throws Exception {
+    public ResponseValue add() throws Exception {
+        WarehouseManagerParam param = CommonUtil.getObjFromReqBody(WarehouseManagerParam.class);
+        WarehouseManagerParam baseWarehouseParam = new WarehouseManagerParam();
+        CommonUtil.copyProperties(param, baseWarehouseParam);
+        param = baseWarehouseParam;
+
         FinSysTenantUser sysInfo = this.getSysInfo();
         if (sysInfo == null) {
             return ResponseValue.error("璇峰厛鐧诲綍");
         }
-        this.baseWarehouseManagerService.add(warehouseManagerParam);
+        this.baseWarehouseManagerService.add(param);
         return ResponseValue.success();
     }
 
diff --git a/consum-base/src/main/java/com/consum/base/controller/FinDepartLedgerController.java b/consum-base/src/main/java/com/consum/base/controller/FinDepartLedgerController.java
new file mode 100644
index 0000000..daec1ca
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/controller/FinDepartLedgerController.java
@@ -0,0 +1,108 @@
+package com.consum.base.controller;
+
+import cn.afterturn.easypoi.excel.ExcelExportUtil;
+import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
+import com.consum.base.BaseController;
+import com.consum.base.core.utils.CommonUtil;
+import com.consum.base.pojo.query.LWhLedgerQry;
+import com.consum.base.service.FinWarehouseLedgerServiceImpl;
+import com.consum.model.po.FinSysTenantUser;
+import com.iplatform.model.po.S_user_core;
+import com.walker.db.page.GenericPager;
+import com.walker.web.ResponseValue;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 閮ㄩ棬鍙拌处
+ */
+@RestController
+@RequestMapping("/pc/fin/warehouse/departLedger")
+public class FinDepartLedgerController extends BaseController {
+    @Resource
+    private FinWarehouseLedgerServiceImpl finWarehouseLedgerService;
+
+    /**
+     * @Description 鍒嗛〉鍒楄〃鏌ヨ
+     * @Author wh
+     * @Date 2023/7/11 13:59
+     */
+    @RequestMapping("/getList")
+    public ResponseValue getLedgerList() {
+        LWhLedgerQry param = CommonUtil.getObjFromReq(LWhLedgerQry.class);
+        LWhLedgerQry query = new LWhLedgerQry();
+        CommonUtil.copyProperties(param, query);
+        param = query;
+        S_user_core currentUser = this.getCurrentUser();
+        if (currentUser == null) {
+            return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
+        }
+        /*褰撳墠鐧诲綍浜哄彧鑳界湅鍒拌嚜宸辨満鏋勪笅鐨勫垪琛�*/
+        FinSysTenantUser sysInfo = this.getSysInfo();
+        String tenantId = sysInfo.getTenantId();
+        Long paramAgencyId = param.getAgencyId();
+        if (paramAgencyId == null || !paramAgencyId.toString().startsWith(tenantId)) {
+            param.setAgencyId(Long.valueOf(tenantId));
+        }
+        param.setStates((short) 1);
+        param.setWarehouseType((short) 1);
+        GenericPager pager = finWarehouseLedgerService.departLedgerList(param);
+        return ResponseValue.success(pager);
+    }
+
+    @RequestMapping("/getListExport")
+    public void getListExport(HttpServletResponse response) throws Exception {
+        LWhLedgerQry param = CommonUtil.getObjFromReq(LWhLedgerQry.class);
+        LWhLedgerQry query = new LWhLedgerQry();
+        CommonUtil.copyProperties(param, query);
+        param = query;
+        S_user_core currentUser = this.getCurrentUser();
+        if (currentUser == null) {
+            return;
+        }
+        /*褰撳墠鐧诲綍浜哄彧鑳界湅鍒拌嚜宸辨満鏋勪笅鐨勫垪琛�*/
+        FinSysTenantUser sysInfo = this.getSysInfo();
+        String tenantId = sysInfo.getTenantId();
+        Long paramAgencyId = param.getAgencyId();
+        if (paramAgencyId == null || !paramAgencyId.toString().startsWith(tenantId)) {
+            param.setAgencyId(Long.valueOf(tenantId));
+        }
+        param.setStates((short) 1);
+        param.setWarehouseType((short) 1);
+        param.setPageNum(1);
+        param.setPageSize(Integer.MAX_VALUE);
+        GenericPager<Map<String, Object>> pager = finWarehouseLedgerService.departLedgerList(param);
+        List<Map<String, Object>> datas = pager.getDatas();
+        org.springframework.core.io.Resource resource = new ClassPathResource("import/depTaiZhangExpTemp.xlsx");
+        // 鑾峰彇鏂囦欢杈撳叆娴�
+        InputStream inputStream = resource.getInputStream();
+        Workbook wb = new XSSFWorkbook(inputStream);
+        TemplateExportParams params = new TemplateExportParams();
+        params.setTemplateWb(wb);
+
+        Map<String, Object> map = new HashMap<String, Object>();
+        map.put("dataList", datas);
+
+        Workbook workbook = ExcelExportUtil.exportExcel(params, map);
+        // 璁剧疆鍝嶅簲澶�
+        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
+        response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode("搴撳瓨鏌ヨ.xlsx", "utf-8"));
+        try (OutputStream outputStream = response.getOutputStream()) {
+            workbook.write(outputStream);
+            workbook.close();
+        }
+
+    }
+}
diff --git a/consum-base/src/main/java/com/consum/base/controller/FinSysServerController.java b/consum-base/src/main/java/com/consum/base/controller/FinSysServerController.java
index be7b9be..f3d3962 100644
--- a/consum-base/src/main/java/com/consum/base/controller/FinSysServerController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/FinSysServerController.java
@@ -1,29 +1,32 @@
 package com.consum.base.controller;
 
 import com.consum.base.BaseController;
+import com.consum.base.core.utils.CommonUtil;
 import com.consum.base.pojo.FinSysServerSearchParam;
 import com.consum.base.pojo.FinSysServerVo;
 import com.consum.base.service.FinSysServerImpl;
 import com.consum.model.po.FinSysServer;
 import com.walker.db.page.GenericPager;
-import com.walker.db.page.ListPageContext;
-import com.walker.db.page.PageSearch;
 import com.walker.infrastructure.utils.DateUtils;
 import com.walker.infrastructure.utils.NumberGenerator;
 import com.walker.web.ResponseValue;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
 import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
 
 @RestController
 @RequestMapping("/pc/fin/sys/server")
 public class FinSysServerController extends BaseController {
 
     private FinSysServerImpl finSysServerImpl;
+
     @Autowired
-    public void setfinSysCategory(FinSysServerImpl finSysServerImpl){
-        this.finSysServerImpl= finSysServerImpl;
+    public void setfinSysCategory(FinSysServerImpl finSysServerImpl) {
+        this.finSysServerImpl = finSysServerImpl;
     }
 
     /**
@@ -32,19 +35,20 @@
      * @Date 2023/9/13 9:27
      */
     @GetMapping("/selectByDataScope")
-    public ResponseValue selectByDataScope(Integer dataScope){
+    public ResponseValue selectByDataScope(Integer dataScope) {
         return ResponseValue.success(finSysServerImpl.getByDataScope(dataScope));
     }
 
     /**
      * 鏌ヨ宸︿晶鏍�
+     *
      * @return
      */
     @GetMapping("/select/tree")
-    public ResponseValue selectFinSysCategoryTree(){
+    public ResponseValue selectFinSysCategoryTree() {
 
         List<FinSysServerVo> finSysCategoryVos = finSysServerImpl.queryAllCategory();
-        if(finSysCategoryVos!=null){
+        if (finSysCategoryVos != null) {
             return ResponseValue.success(finSysCategoryVos);
         }
         return ResponseValue.error("鏈煡璇㈠埌鏁版嵁锛�");
@@ -52,20 +56,25 @@
     }
 
     @GetMapping("/select/detail")
-    public ResponseValue selectById(@RequestParam(name = "id") Long Id){
-       FinSysServer finSysServer =  this.finSysServerImpl.get(new FinSysServer(Id));
-        if (finSysServer == null) return ResponseValue.error("鏌ヨ澶辫触锛�");
-        return ResponseValue.success("鏌ヨ鎴愬姛!",finSysServer);
+    public ResponseValue selectById(@RequestParam(name = "id") Long Id) {
+        FinSysServer finSysServer = this.finSysServerImpl.get(new FinSysServer(Id));
+        if (finSysServer == null) {
+            return ResponseValue.error("鏌ヨ澶辫触锛�");
+        }
+        return ResponseValue.success("鏌ヨ鎴愬姛!", finSysServer);
     }
 
     /**
      * 鍒嗛〉鏌ヨ
-     * @param param
+     *
      * @return
      */
     @RequestMapping("/select/list")
-    public ResponseValue finSysServerList(FinSysServerSearchParam param){
-        PageSearch pageSearch = ListPageContext.getPageSearch();
+    public ResponseValue finSysServerList() {
+        FinSysServerSearchParam param = CommonUtil.getObjFromReq(FinSysServerSearchParam.class);
+        FinSysServerSearchParam param2 = new FinSysServerSearchParam();
+        CommonUtil.copyProperties(param, param2);
+        param = param2;
 
         GenericPager<FinSysServer> pager = this.finSysServerImpl.selectServerListByPage(param);
         return ResponseValue.success(pager);
@@ -73,30 +82,47 @@
 
     /**
      * 娣诲姞
-     * @param finSysServer
+     *
      * @return
      */
     @PostMapping("/insert")
-    public ResponseValue addFinSysServer(@RequestBody FinSysServer finSysServer){
-        if(finSysServer==null) return ResponseValue.error("鍙傛暟涓虹┖");
-        finSysServer.setId(NumberGenerator.getLongSequenceNumber());
-        finSysServer.setCreatedTime(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
-        finSysServer.setCreatedBy(this.getCurrentUser().getUser_name());
-        finSysServer.setLv(finSysServer.getParentId()+1);
-        int num = this.finSysServerImpl.insert(finSysServer);
-        if(num>0) return ResponseValue.success(1);
+    public ResponseValue addFinSysServer() {
+        FinSysServer param = CommonUtil.getObjFromReqBody(FinSysServer.class);
+        FinSysServer finSysServer = new FinSysServer();
+        CommonUtil.copyProperties(param, finSysServer);
+        param = finSysServer;
+
+        if (param == null) {
+            return ResponseValue.error("鍙傛暟涓虹┖");
+        }
+        param.setId(NumberGenerator.getLongSequenceNumber());
+        param.setCreatedTime(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
+        param.setCreatedBy(this.getCurrentUser().getUser_name());
+        param.setLv(param.getParentId() + 1);
+        int num = this.finSysServerImpl.insert(param);
+        if (num > 0) {
+            return ResponseValue.success(1);
+        }
         return ResponseValue.error("鎻掑叆澶辫触锛�");
     }
+
     /**
      * 缂栬緫
      */
     @PostMapping("/edit")
-    public ResponseValue editFinSysServer(@RequestBody FinSysServer finSysServer){
-        if (finSysServer==null) return ResponseValue.error("鍙傛暟涓虹┖");
+    public ResponseValue editFinSysServer() {
+        FinSysServer param = CommonUtil.getObjFromReqBody(FinSysServer.class);
+        FinSysServer finSysServer = new FinSysServer();
+        CommonUtil.copyProperties(param, finSysServer);
+        param = finSysServer;
+
+        if (param == null) {
+            return ResponseValue.error("鍙傛暟涓虹┖");
+        }
 //        if(finSysServer.getLvType()!=null) {
 //            finSysServer.setLv(Long.valueOf(finSysServer.getLvType()));
 //        }
-        int num = this.finSysServerImpl.save(finSysServer);
-        return num>0 ? ResponseValue.success(1):ResponseValue.error("缂栬緫澶辫触锛�");
+        int num = this.finSysServerImpl.save(param);
+        return num > 0 ? ResponseValue.success(1) : ResponseValue.error("缂栬緫澶辫触锛�");
     }
 }
diff --git a/consum-base/src/main/java/com/consum/base/controller/FinSysTenantController.java b/consum-base/src/main/java/com/consum/base/controller/FinSysTenantController.java
index 741e765..bdfe0a0 100644
--- a/consum-base/src/main/java/com/consum/base/controller/FinSysTenantController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/FinSysTenantController.java
@@ -5,6 +5,7 @@
 import com.alibaba.excel.event.AnalysisEventListener;
 import com.alibaba.excel.exception.ExcelDataConvertException;
 import com.consum.base.BaseController;
+import com.consum.base.core.utils.CommonUtil;
 import com.consum.base.core.utils.FinSysTenantUtils;
 import com.consum.base.pojo.FinSysTenantParam;
 import com.consum.base.pojo.FinSysTenantSearchParam;
@@ -41,7 +42,6 @@
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
@@ -133,7 +133,12 @@
      * @Date 2023/7/14 13:59
      */
     @RequestMapping("/select/list")
-    public ResponseValue allocatedList(FinSysTenantSearchParam param) {
+    public ResponseValue allocatedList() {
+        FinSysTenantSearchParam param = CommonUtil.getObjFromReq(FinSysTenantSearchParam.class);
+        FinSysTenantSearchParam param2 = new FinSysTenantSearchParam();
+        CommonUtil.copyProperties(param, param2);
+        param = param2;
+
         FinSysTenantUser sysInfo = getSysInfo();
         if (sysInfo == null) {
             return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
@@ -308,7 +313,12 @@
      * @Description 涓嶅垎椤垫煡璇�
      */
     @RequestMapping("/select/allList")
-    public ResponseValue allList(FinSysTenantSearchParam param) {
+    public ResponseValue allList() {
+        FinSysTenantSearchParam param = CommonUtil.getObjFromReq(FinSysTenantSearchParam.class);
+        FinSysTenantSearchParam param2 = new FinSysTenantSearchParam();
+        CommonUtil.copyProperties(param, param2);
+        param = param2;
+
         StringBuilder whStr = new StringBuilder("where 1=1 and status = 1 and is_delete = 0 ");
         HashMap parameter = new HashMap<>();
         if (param.getFirstZmS() != null && !param.getFirstZmS().equals("")) {
@@ -332,7 +342,12 @@
      * @date 2023/10/4
      */
     @PostMapping("/del")
-    public ResponseValue del(@RequestBody FinSysTenantParam param) {
+    public ResponseValue del() {
+        FinSysTenantParam param = CommonUtil.getObjFromReqBody(FinSysTenantParam.class);
+        FinSysTenantParam finSysTenantParam = new FinSysTenantParam();
+        CommonUtil.copyProperties(param, finSysTenantParam);
+        param = finSysTenantParam;
+
         if (param.getId() == null) {
             return ResponseValue.error("鏈烘瀯id涓虹┖");
         }
@@ -347,7 +362,12 @@
      * @date 2023/10/4
      */
     @PostMapping("/add")
-    public ResponseValue add(@RequestBody FinSysTenantParam param) {
+    public ResponseValue add() {
+        FinSysTenantParam param = CommonUtil.getObjFromReqBody(FinSysTenantParam.class);
+        FinSysTenantParam finSysTenantParam = new FinSysTenantParam();
+        CommonUtil.copyProperties(param, finSysTenantParam);
+        param = finSysTenantParam;
+
         if (param == null) {
             return ResponseValue.error("鍙傛暟涓虹┖");
         }
@@ -493,8 +513,13 @@
      * @date 2023/10/6
      */
     @PostMapping("/edit")
-    public ResponseValue edit(@RequestBody FinSysTenant finSysTenant) {
-        Long id = finSysTenant.getId();
+    public ResponseValue edit() {
+        FinSysTenant param = CommonUtil.getObjFromReqBody(FinSysTenant.class);
+        FinSysTenant finSysTenant = new FinSysTenant();
+        CommonUtil.copyProperties(param, finSysTenant);
+        param = finSysTenant;
+
+        Long id = param.getId();
         if (id == null || id.longValue() <= 0) {
             return ResponseValue.error("缂栬緫鐨勬満鏋勪笉瀛樺湪");
         }
@@ -506,7 +531,7 @@
 //        if (finSysTenant1.getLv() != 1) {
 //            return ResponseValue.error("鏆傛棤淇敼鏉冮檺");
 //        }
-        int num = this.finSysTenantService.updateFinSysTenant(finSysTenant, this.getSysInfo());
+        int num = this.finSysTenantService.updateFinSysTenant(param, this.getSysInfo());
         return num > 0 ? ResponseValue.success(1) : ResponseValue.error("缂栬緫澶辫触锛�");
     }
 
diff --git a/consum-base/src/main/java/com/consum/base/controller/FinSysTenantDepartmentController.java b/consum-base/src/main/java/com/consum/base/controller/FinSysTenantDepartmentController.java
index 66393e7..a3e1880 100644
--- a/consum-base/src/main/java/com/consum/base/controller/FinSysTenantDepartmentController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/FinSysTenantDepartmentController.java
@@ -1,6 +1,7 @@
 package com.consum.base.controller;
 
 import com.consum.base.BaseController;
+import com.consum.base.core.utils.CommonUtil;
 import com.consum.base.pojo.FinSysTenantDepartmentParam;
 import com.consum.base.service.FinSysTenantDepartmentServiceImpl;
 import com.consum.model.po.FinSysTenantDepartment;
@@ -17,7 +18,6 @@
 import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -44,7 +44,12 @@
         @ApiImplicitParam(name = "param", value = "閮ㄩ棬淇℃伅", required = true, dataType = "FinSysTenantDepartmentParam")
     })
     @PostMapping("/add")
-    public ResponseValue add(@RequestBody FinSysTenantDepartmentParam param) {
+    public ResponseValue add() {
+        FinSysTenantDepartmentParam param = CommonUtil.getObjFromReqBody(FinSysTenantDepartmentParam.class);
+        FinSysTenantDepartmentParam finSysTenantDepartmentParam = new FinSysTenantDepartmentParam();
+        CommonUtil.copyProperties(param, finSysTenantDepartmentParam);
+        param = finSysTenantDepartmentParam;
+
         if (StringUtils.isEmpty(param.getName())) {
             return ResponseValue.error("閮ㄩ棬鍚嶇О涓虹┖");
         }
@@ -75,7 +80,12 @@
      */
     //濡傛灉涓嶄紶鏈烘瀯id锛岄粯璁ゆ煡鐪佺骇鏈烘瀯鐨勯儴闂�
     @GetMapping("/list")
-    public ResponseValue queryList(FinSysTenantDepartmentParam param) {
+    public ResponseValue queryList() {
+        FinSysTenantDepartmentParam param = CommonUtil.getObjFromReq(FinSysTenantDepartmentParam.class);
+        FinSysTenantDepartmentParam param2 = new FinSysTenantDepartmentParam();
+        CommonUtil.copyProperties(param, param2);
+        param = param2;
+
         FinSysTenantUser sysInfo = this.getSysInfo();
         if (sysInfo == null) {
             return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
@@ -107,26 +117,31 @@
      * @Date 2023/10/26
      */
     @PostMapping("/edit")
-    public ResponseValue edit(@RequestBody FinSysTenantDepartment department) {
-        Long id = department.getId();
+    public ResponseValue edit() {
+        FinSysTenantDepartment param = CommonUtil.getObjFromReqBody(FinSysTenantDepartment.class);
+        FinSysTenantDepartment finSysTenantDepartment = new FinSysTenantDepartment();
+        CommonUtil.copyProperties(param, finSysTenantDepartment);
+        param = finSysTenantDepartment;
+
+        Long id = param.getId();
         if (id == null || id <= 0) {
             return ResponseValue.error("缂栬緫鐨勯儴闂ㄤ笉瀛樺湪");
         }
-        if (StringUtils.isEmpty(department.getName())) {
+        if (StringUtils.isEmpty(param.getName())) {
             return ResponseValue.error("閮ㄩ棬鍚嶇О涓虹┖");
         }
-        if (StringUtils.isEmpty(department.getCode())) {
+        if (StringUtils.isEmpty(param.getCode())) {
             return ResponseValue.error("閮ㄩ棬缂栧彿涓虹┖");
         }
         FinSysTenantUser sysInfo = this.getSysInfo();
         if (sysInfo == null) {
             return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
         }
-        FinSysTenantDepartment tenantDepartment = this.departmentService.selectByCode(department.getCode());
+        FinSysTenantDepartment tenantDepartment = this.departmentService.selectByCode(param.getCode());
         if (tenantDepartment != null) {
             return ResponseValue.error("閮ㄩ棬缂栧彿宸插瓨鍦�");
         }
-        int num = this.departmentService.updateFinSysTenantDepartment(department, sysInfo);
+        int num = this.departmentService.updateFinSysTenantDepartment(param, sysInfo);
         return num > 0 ? ResponseValue.success() : ResponseValue.error("缂栬緫澶辫触锛�");
     }
 
@@ -154,15 +169,20 @@
      * @Date 2023/10/26
      */
     @DeleteMapping("/del")
-    public ResponseValue updateById(@RequestBody FinSysTenantDepartment department) {
-        if (department.getId() == null) {
+    public ResponseValue updateById() {
+        FinSysTenantDepartment param = CommonUtil.getObjFromReqBody(FinSysTenantDepartment.class);
+        FinSysTenantDepartment finSysTenantDepartment = new FinSysTenantDepartment();
+        CommonUtil.copyProperties(param, finSysTenantDepartment);
+        param = finSysTenantDepartment;
+
+        if (param.getId() == null) {
             return ResponseValue.error("閮ㄩ棬id涓虹┖");
         }
         FinSysTenantUser sysInfo = this.getSysInfo();
         if (sysInfo == null) {
             return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
         }
-        int num = this.departmentService.updateById(department, sysInfo);
+        int num = this.departmentService.updateById(param, sysInfo);
 
         return num > 0 ? ResponseValue.success(1) : ResponseValue.error("鍒犻櫎澶辫触锛�");
     }
diff --git a/consum-base/src/main/java/com/consum/base/controller/FinSysTenantUserController.java b/consum-base/src/main/java/com/consum/base/controller/FinSysTenantUserController.java
index edae61d..f03df71 100644
--- a/consum-base/src/main/java/com/consum/base/controller/FinSysTenantUserController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/FinSysTenantUserController.java
@@ -1,5 +1,6 @@
 package com.consum.base.controller;
 
+import cn.hutool.core.util.ReflectUtil;
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.annotation.ExcelProperty;
 import com.alibaba.excel.context.AnalysisContext;
@@ -30,38 +31,22 @@
 import com.iplatform.model.po.S_role;
 import com.iplatform.model.po.S_user_core;
 import com.walker.db.page.GenericPager;
-import com.walker.infrastructure.utils.CollectionUtils;
-import com.walker.infrastructure.utils.DateUtils;
-import com.walker.infrastructure.utils.NumberGenerator;
-import com.walker.infrastructure.utils.PhoneNumberUtils;
-import com.walker.infrastructure.utils.StringUtils;
+import com.walker.infrastructure.utils.*;
 import com.walker.web.ResponseValue;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
-import java.io.IOException;
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.Set;
 import org.apache.commons.compress.utils.Lists;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.lang.reflect.Field;
+import java.util.*;
 
 /**
  * @Description 绯荤粺鐢ㄦ埛
@@ -174,8 +159,10 @@
 
         try {
             Field fieldDatas = GenericPager.class.getDeclaredField("datas");
-            fieldDatas.setAccessible(true);
-            fieldDatas.set(pager, resultList);
+//            fieldDatas.setAccessible(true);
+//            fieldDatas.set(pager, resultList);
+            ReflectUtil.setFieldValue(pager, fieldDatas, resultList);
+
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -227,11 +214,11 @@
         user.setSysUserId(NumberGenerator.getLongSequenceNumber());
         // 鍔犲瘑鎵嬫満鍙�
         String key = PlatformRSAUtils.AES_KEY;
-        String pwdPhone = "";
+        String encPhone = "";
         if (user.getUserPhone() != null) {
-            pwdPhone = AESUtils.encryptStrAES(user.getUserPhone(), key);
+            encPhone = AESUtils.encryptStrAES(user.getUserPhone(), key);
         }
-        user.setUserPhone(pwdPhone);
+        user.setUserPhone(encPhone);
         //鎬庝箞鑾峰彇宸︿晶鏈烘瀯鏍戞暟鎹�
         user.setSysDeptId(3L); //瀵瑰簲骞冲彴鏈烘瀯id  榛樿涓哄钩鍙扮鐞�
         this.finSysTenantUserService.insert(user);
@@ -245,7 +232,7 @@
         userCore.setNick_name(user.getUserName());
         //鐢ㄦ埛绫诲瀷 鍏堥粯璁よ缃负2
         userCore.setUser_type(2);
-        userCore.setPhonenumber(pwdPhone);
+        userCore.setPhonenumber(encPhone);
         userCore.setSex(user.getSex().toString());
         //鍒濆鍖栧瘑鐮� 123456
         String pws = this.getArgumentVariable(ArgumentsConstants.KEY_SECURITY_PASSWORD_INIT).getStringValue();
@@ -427,8 +414,8 @@
                 user.setRemark("鎵归噺瀵煎叆");
                 // 鍔犲瘑鎵嬫満鍙�
                 String key = PlatformRSAUtils.AES_KEY;
-                String pwdPhone = AESUtils.encryptStrAES(data.getUserPhone(), key);
-                user.setUserPhone(pwdPhone);
+                String encPhone = AESUtils.encryptStrAES(data.getUserPhone(), key);
+                user.setUserPhone(encPhone);
 
                 user.setIsDelete(1);
                 //鎬庝箞鑾峰彇宸︿晶鏈烘瀯鏍戞暟鎹�
@@ -551,11 +538,11 @@
             return ResponseValue.error("鍙傛暟涓虹┖");
         }
         String key = PlatformRSAUtils.AES_KEY;
-        String pwdPhone = "";
+        String encPhone = "";
         if (user.getUserPhone() != null) {
-            pwdPhone = AESUtils.encryptStrAES(user.getUserPhone(), key);
+            encPhone = AESUtils.encryptStrAES(user.getUserPhone(), key);
         }
-        user.setUserPhone(pwdPhone);
+        user.setUserPhone(encPhone);
         // 1.鏇存柊绯荤粺鐢ㄦ埛   FIN_SYS_TENANT_USER
         finSysTenantUserService.update(user);
         // 2.鏇存柊骞冲彴鐢ㄦ埛  S_USER_CORE
@@ -786,10 +773,10 @@
         // 鍔犲瘑鎵嬫満鍙�
         String key = PlatformRSAUtils.AES_KEY;
         String userPhone = user.getUserPhone();
-        String pwdPhone = "";
+        String encPhone = "";
         if (userPhone != null) {
-            pwdPhone = AESUtils.encryptStrAES(userPhone, key);
-            user.setUserPhone(pwdPhone);
+            encPhone = AESUtils.encryptStrAES(userPhone, key);
+            user.setUserPhone(encPhone);
         }
 
         this.finSysTenantUserService.insert(user);
@@ -883,12 +870,12 @@
         updUser.setEmail(user.getEmail());
         updUser.setUserName(user.getUserName());
         updUser.setSex(user.getSex());
-        String pwdPhone = "";
+        String encPhone = "";
         if (user.getUserPhone() != null) {
             String key = PlatformRSAUtils.AES_KEY;
-            pwdPhone = AESUtils.encryptStrAES(user.getUserPhone(), key);
+            encPhone = AESUtils.encryptStrAES(user.getUserPhone(), key);
         }
-        updUser.setUserPhone(pwdPhone);
+        updUser.setUserPhone(encPhone);
         // 1.鏇存柊绯荤粺鐢ㄦ埛   FIN_SYS_TENANT_USER
         finSysTenantUserService.update(updUser);
         // 2.鏇存柊骞冲彴鐢ㄦ埛  S_USER_CORE
diff --git a/consum-base/src/main/java/com/consum/base/controller/FinWarehouseLedgerController.java b/consum-base/src/main/java/com/consum/base/controller/FinWarehouseLedgerController.java
index 2dd853c..2c0337d 100644
--- a/consum-base/src/main/java/com/consum/base/controller/FinWarehouseLedgerController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/FinWarehouseLedgerController.java
@@ -46,6 +46,9 @@
     @RequestMapping("/getList")
     public ResponseValue getLedgerList() {
         LWhLedgerQry param = CommonUtil.getObjFromReq(LWhLedgerQry.class);
+        LWhLedgerQry query = new LWhLedgerQry();
+        CommonUtil.copyProperties(param, query);
+        param = query;
         S_user_core currentUser = this.getCurrentUser();
         if (currentUser == null) {
             return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
@@ -65,6 +68,9 @@
     @RequestMapping("/getListExport")
     public void getListExport(HttpServletResponse response) throws Exception {
         LWhLedgerQry param = CommonUtil.getObjFromReq(LWhLedgerQry.class);
+        LWhLedgerQry query = new LWhLedgerQry();
+        CommonUtil.copyProperties(param, query);
+        param = query;
         S_user_core currentUser = this.getCurrentUser();
         if (currentUser == null) {
             return;
diff --git a/consum-base/src/main/java/com/consum/base/controller/LWarehouseFlowController.java b/consum-base/src/main/java/com/consum/base/controller/LWarehouseFlowController.java
index 5177428..b55681b 100644
--- a/consum-base/src/main/java/com/consum/base/controller/LWarehouseFlowController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/LWarehouseFlowController.java
@@ -1,5 +1,6 @@
 package com.consum.base.controller;
 
+import cn.hutool.core.util.ReflectUtil;
 import com.consum.base.BaseController;
 import com.consum.base.core.utils.CommonUtil;
 import com.consum.base.core.utils.MapUtils;
@@ -34,7 +35,12 @@
     private LWarehouseFlowService lWarehouseFlowService;
 
     @GetMapping("/list")
-    public ResponseValue queryFormProcureList(LWarehouseFlowParam param) {
+    public ResponseValue queryFormProcureList() {
+        LWarehouseFlowParam param = CommonUtil.getObjFromReq(LWarehouseFlowParam.class);
+        LWarehouseFlowParam param2 = new LWarehouseFlowParam();
+        CommonUtil.copyProperties(param, param2);
+        param = param2;
+
         S_user_core currentUser = this.getCurrentUser();
         if (currentUser == null) {
             return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
@@ -47,8 +53,9 @@
         });
         try {
             Field fieldDatas = GenericPager.class.getDeclaredField("datas");
-            fieldDatas.setAccessible(true);
-            fieldDatas.set(genericPager, result);
+//            fieldDatas.setAccessible(true);
+//            fieldDatas.set(genericPager, result);
+            ReflectUtil.setFieldValue(genericPager, fieldDatas, result);
         } catch (Exception e) {
             logger.error(e.getMessage(), e);
         }
@@ -58,7 +65,11 @@
 
 
     @GetMapping("/detail/list")
-    public ResponseValue queryFormProcureList1(LWarehouseFlowParam param) {
+    public ResponseValue queryFormProcureList1() {
+        LWarehouseFlowParam param = CommonUtil.getObjFromReq(LWarehouseFlowParam.class);
+        LWarehouseFlowParam param2 = new LWarehouseFlowParam();
+        CommonUtil.copyProperties(param, param2);
+        param = param2;
         S_user_core currentUser = this.getCurrentUser();
         if (currentUser == null) {
             return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
@@ -74,6 +85,9 @@
             return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
         }
         LWarehouseFlowParam param = CommonUtil.getObjFromReq(LWarehouseFlowParam.class);
+        LWarehouseFlowParam param2 = new LWarehouseFlowParam();
+        CommonUtil.copyProperties(param, param2);
+        param = param2;
         /*褰撳墠鐧诲綍浜哄彧鑳界湅鍒拌嚜宸辨満鏋勪笅鐨勫垪琛�*/
         FinSysTenantUser sysInfo = this.getSysInfo();
         String tenantId = sysInfo.getTenantId();
diff --git a/consum-base/src/main/java/com/consum/base/controller/LWhFormInventoryController.java b/consum-base/src/main/java/com/consum/base/controller/LWhFormInventoryController.java
index 6f4a5e7..aa8da03 100644
--- a/consum-base/src/main/java/com/consum/base/controller/LWhFormInventoryController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/LWhFormInventoryController.java
@@ -1,6 +1,7 @@
 package com.consum.base.controller;
 
 import com.consum.base.BaseController;
+import com.consum.base.core.utils.CommonUtil;
 import com.consum.base.core.utils.PageUtil;
 import com.consum.base.pojo.query.LWhFormInventoryQry;
 import com.consum.base.pojo.request.FormInventoryParam;
@@ -9,10 +10,10 @@
 import com.consum.base.pojo.response.FormInventoryGoodsVO;
 import com.consum.base.pojo.response.FormInventoryVO;
 import com.consum.base.service.FinSysTenantUserServiceImpl;
-import com.consum.base.service.LWhFormInventoryGoodsServiceImpl;
 import com.consum.base.service.LWhFormInventoryServiceImpl;
 import com.consum.model.po.FinSysTenantUser;
 import com.consum.model.po.LWhFormInventory;
+import com.iplatform.model.po.S_user_core;
 import com.walker.db.page.GenericPager;
 import com.walker.web.ResponseValue;
 import io.swagger.annotations.Api;
@@ -27,7 +28,6 @@
 import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -45,8 +45,7 @@
     private LWhFormInventoryServiceImpl lWhFormInventoryService;
     @Autowired
     private FinSysTenantUserServiceImpl finSysTenantUserService;
-    @Autowired
-    private LWhFormInventoryGoodsServiceImpl inventoryGoodsService;
+
 
     /**
      * @Description 鏂板
@@ -58,7 +57,13 @@
         @ApiImplicitParam(name = "param", value = "鐩樼偣鍗曚俊鎭�", dataType = "FormInventoryParam")
     })
     @PostMapping("/add")
-    public ResponseValue add(@RequestBody FormInventoryParam param) {
+    public ResponseValue add() {
+
+        FormInventoryParam param = CommonUtil.getObjFromReqBody(FormInventoryParam.class);
+        FormInventoryParam formInventoryParam = new FormInventoryParam();
+        CommonUtil.copyProperties(param, formInventoryParam);
+        param = formInventoryParam;
+
         FinSysTenantUser sysInfo = this.getSysInfo();
         if (sysInfo == null) {
             return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
@@ -88,7 +93,12 @@
         @ApiImplicitParam(name = "param", value = "鐩樼偣鏉′欢", dataType = "LWhFormInventoryParam", required = true, paramType = "query")
     })
     @GetMapping("/list")
-    public ResponseValue queryList(LWhFormInventoryQry param) {
+    public ResponseValue queryList() {
+        LWhFormInventoryQry param = CommonUtil.getObjFromReq(LWhFormInventoryQry.class);
+        LWhFormInventoryQry param2 = new LWhFormInventoryQry();
+        CommonUtil.copyProperties(param, param2);
+        param = param2;
+
         FinSysTenantUser sysInfo = this.getSysInfo();
         if (sysInfo == null) {
             return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
@@ -127,7 +137,12 @@
         @ApiImplicitParam(name = "param", value = "鐩樼偣鍗曚俊鎭�", dataType = "FormInventoryParam")
     })
     @PostMapping("/edit")
-    public ResponseValue edit(@RequestBody FormInventoryParam param) {
+    public ResponseValue edit() {
+        FormInventoryParam param = CommonUtil.getObjFromReqBody(FormInventoryParam.class);
+        FormInventoryParam formInventoryParam = new FormInventoryParam();
+        CommonUtil.copyProperties(param, formInventoryParam);
+        param = formInventoryParam;
+
         LWhFormInventory lWhFormInventory = lWhFormInventoryService.get(new LWhFormInventory(param.getId()));
         if (lWhFormInventory == null) {
             return ResponseValue.error("缂栬緫澶辫触锛�");
@@ -139,8 +154,18 @@
         if (num == 0) {
             return ResponseValue.error("缂栬緫澶辫触锛�");
         }
-        ResponseValue add = this.add(param);
-        if (add.getCode() == ResponseValue.CODE_SUCCESS) {
+
+        //鏍规嵁鐩樼偣浜篿d鏌ヨ鐩樼偣浜�
+        FinSysTenantUser finSysTenantUser = new FinSysTenantUser();
+        finSysTenantUser.setId(param.getOperatorUserId());
+        FinSysTenantUser operatorUser = finSysTenantUserService.get(finSysTenantUser);
+        //鏍规嵁鐩戠洏浜篿d鏌ヨ鐩戠洏浜�
+        FinSysTenantUser monitorUserInfo = new FinSysTenantUser();
+        monitorUserInfo.setId(param.getMonitorUserId());
+        FinSysTenantUser monitorUser = finSysTenantUserService.get(monitorUserInfo);
+        int result = this.lWhFormInventoryService.add(param, this.getSysInfo(), operatorUser, monitorUser);
+
+        if (result > 0) {
             return ResponseValue.success();
         }
 
@@ -186,12 +211,17 @@
         @ApiImplicitParam(name = "param", value = "鐩樼偣鍗曚俊鎭�", dataType = "LWhFormInventoryDto")
     })
     @PostMapping("/temporary/storage")
-    public ResponseValue temporaryStorage(@RequestBody LWhFormInventoryParam dto) {
-        if (dto == null) {
+    public ResponseValue updateTemporaryStorage() {
+        LWhFormInventoryParam param = CommonUtil.getObjFromReqBody(LWhFormInventoryParam.class);
+        LWhFormInventoryParam formInventoryParam = new LWhFormInventoryParam();
+        CommonUtil.copyProperties(param, formInventoryParam);
+        param = formInventoryParam;
+
+        if (param == null) {
             return ResponseValue.error("鍙傛暟閿欒");
         }
 
-        int num = this.lWhFormInventoryService.updateInventoryInfo(dto, 1);
+        int num = this.lWhFormInventoryService.updateInventoryInfo(param, 1, null, null);
         return num > 0 ? ResponseValue.success(1) : ResponseValue.error("鏆傚瓨澶辫触锛�");
     }
 
@@ -206,12 +236,19 @@
         @ApiImplicitParam(name = "param", value = "鐩樼偣鍗曚俊鎭�", dataType = "LWhFormInventoryDto")
     })
     @PostMapping("/finish")
-    public ResponseValue finishPd(@RequestBody LWhFormInventoryParam dto) {
-        if (dto == null) {
+    public ResponseValue updateFinishPd() {
+        LWhFormInventoryParam param = CommonUtil.getObjFromReqBody(LWhFormInventoryParam.class);
+        LWhFormInventoryParam formInventoryParam = new LWhFormInventoryParam();
+        CommonUtil.copyProperties(param, formInventoryParam);
+        param = formInventoryParam;
+
+        if (param == null) {
             return ResponseValue.error("鍙傛暟閿欒");
         }
+        S_user_core currentUser = this.getCurrentUser();
+        FinSysTenantUser sysInfo = this.getSysInfo();
+        int num = this.lWhFormInventoryService.updateInventoryInfo(param, 2, currentUser, sysInfo);
 
-        int num = this.lWhFormInventoryService.updateInventoryInfo(dto, 2);
         return num > 0 ? ResponseValue.success(1) : ResponseValue.error("鐩樼偣澶辫触锛�");
     }
 
@@ -225,7 +262,12 @@
         @ApiImplicitParam(name = "param", value = "鐩樼偣鏉′欢", dataType = "LWhFormInventoryParam", paramType = "query")
     })
     @GetMapping("/list/PdDetail")
-    public ResponseValue queryPdDetailList(LWhFormInventoryQry param) {
+    public ResponseValue queryPdDetailList() {
+        LWhFormInventoryQry param = CommonUtil.getObjFromReq(LWhFormInventoryQry.class);
+        LWhFormInventoryQry param2 = new LWhFormInventoryQry();
+        CommonUtil.copyProperties(param, param2);
+        param = param2;
+
         FinSysTenantUser sysInfo = this.getSysInfo();
         if (sysInfo == null) {
             return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
diff --git a/consum-base/src/main/java/com/consum/base/controller/LWhFormOutputController.java b/consum-base/src/main/java/com/consum/base/controller/LWhFormOutputController.java
index fae394a..2b87db8 100644
--- a/consum-base/src/main/java/com/consum/base/controller/LWhFormOutputController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/LWhFormOutputController.java
@@ -1,5 +1,8 @@
 package com.consum.base.controller;
 
+import cn.afterturn.easypoi.excel.ExcelExportUtil;
+import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
+import cn.hutool.core.util.ReflectUtil;
 import com.consum.base.BaseController;
 import com.consum.base.core.utils.CommonUtil;
 import com.consum.base.core.utils.MapUtils;
@@ -20,17 +23,25 @@
 import com.iplatform.model.po.S_user_core;
 import com.walker.db.page.GenericPager;
 import com.walker.infrastructure.utils.CollectionUtils;
+import com.walker.infrastructure.utils.DateUtils;
 import com.walker.web.ResponseValue;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+import java.io.IOException;
+import java.io.OutputStream;
 import java.lang.reflect.Field;
+import java.net.URLEncoder;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import org.apache.commons.compress.utils.Lists;
+import org.apache.poi.ss.usermodel.Workbook;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -129,8 +140,9 @@
         }
         try {
             Field fieldDatas = GenericPager.class.getDeclaredField("datas");
-            fieldDatas.setAccessible(true);
-            fieldDatas.set(genericPager, resultList);
+//            fieldDatas.setAccessible(true);
+//            fieldDatas.set(genericPager, resultList);
+            ReflectUtil.setFieldValue(genericPager, fieldDatas, resultList);
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -191,8 +203,75 @@
         if (currentUser == null) {
             return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
         }
-        GenericPager<Map<String, Object>> mapGenericPager = lWarehouseFlowService.queryBusinessFlowDetail(formOutputQry);
-        return ResponseValue.success(mapGenericPager);
+        GenericPager<Map<String, Object>> genericPager = lWarehouseFlowService.queryAllBusinessFlow(formOutputQry);
+        return ResponseValue.success(genericPager);
+    }
+
+
+    @ApiOperation(value = "鍑哄簱鍗曞鍑�", notes = "鍑哄簱鍗曞鍑�")
+    @GetMapping("/list/export")
+    public void export(Long id, HttpServletRequest request, HttpServletResponse response) throws IOException {
+        TemplateExportParams params = new TemplateExportParams(
+            "import/閲囪喘閫�璐у崟.xls");
+
+        FinSysTenantUser sysInfo = this.getSysInfo();
+        String userName = sysInfo.getUserName();
+
+        String sql = "SELECT\n"
+            + "\tfo.BUSINESS_FORM_CODE,\n"
+            + "\tfo.AGENCY_NAME tenantName,\n"
+            + "\tGOODS_NAME goodsName,\n"
+            + "\tpm.BASE_GOODS_MODELS_NAME goodsModeName,\n"
+            + "\tcounts num,\n"
+            + "\ttotal_amount sqje,\n"
+            + "\tBEIZ remark\n"
+            + "FROM\n"
+            + "\tl_wh_procure_model pm\n"
+            + "\tLEFT JOIN base_goods_models bgm ON pm.BASE_GOODS_MODELS_ID = bgm.id\n"
+            + "\tLEFT JOIN base_goods_template bgt ON bgm.GOODS_TEMPLATES_ID = bgt.id\n"
+            + "\tLEFT JOIN l_wh_form_output fo ON fo.ID = pm.BUSINESS_ID\n"
+            + "WHERE\n"
+            + "\tpm.BUSINESS_ID = 1393373943914496";
+
+        Map<String, Object> param = new HashMap<>();
+        param.put("id", id);
+        List<Map<String, Object>> select = lWhFormOutputService.select(sql, param, new MapperUtil());
+
+        String dateForHuman = DateUtils.getDateForHuman(System.currentTimeMillis());
+        Map<String, Object> map = new HashMap<>();
+        //鑾峰彇select涓殑BUSINESS_FORM_CODE鍊硷紝
+        for (Map<String, Object> item : select) {
+            String businessFormCode = (String) item.get("businessFormCode");
+            map.put("code", businessFormCode);
+            Object num = item.get("num");
+            map.put("numCount", 100);
+            map.put("amountCount", 100);
+        }
+        List<Map<String, String>> listMap = new ArrayList<>();
+        map.put("code", "璐颁桨涓�");
+        map.put("date", dateForHuman);
+        map.put("name", userName);
+//        for (int i = 0; i < 4; i++) {
+//            Map<String, String> lm = new HashMap<>();
+//            lm.put("tenantName", i + 1 + "");
+//            lm.put("goodsName", "A001");
+//            lm.put("goodsModeName", "璁捐");
+//            lm.put("num", "EasyPoi " + i + "鏈�");
+//            lm.put("price", "寮�婧愰」鐩�");
+//            lm.put("sqje", i * 10000 + "");
+//            lm.put("remark", i * 10000 + "");
+//            listMap.add(lm);
+//        }
+        map.put("maplist", select);
+
+        Workbook workbook = ExcelExportUtil.exportExcel(params, map);
+
+        try (OutputStream outputStream = response.getOutputStream()) {
+            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
+            response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode("閲囪喘閫�璐у崟.xls", "utf-8"));
+            workbook.write(outputStream);
+            workbook.close();
+        }
     }
 
 }
diff --git a/consum-base/src/main/java/com/consum/base/controller/LWhFormProcureController.java b/consum-base/src/main/java/com/consum/base/controller/LWhFormProcureController.java
index ed68075..79df3ac 100644
--- a/consum-base/src/main/java/com/consum/base/controller/LWhFormProcureController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/LWhFormProcureController.java
@@ -1,5 +1,6 @@
 package com.consum.base.controller;
 
+import cn.hutool.core.util.ReflectUtil;
 import com.consum.base.BaseController;
 import com.consum.base.core.CodeGeneratorEnum;
 import com.consum.base.core.CodeGeneratorService;
@@ -12,27 +13,9 @@
 import com.consum.base.pojo.LWhFormProcureParam;
 import com.consum.base.pojo.LWhProcureModelParam;
 import com.consum.base.pojo.query.FormProcureQry;
-import com.consum.base.pojo.response.FormProcureVO;
-import com.consum.base.pojo.response.FromProcureTemplateInfoVO;
-import com.consum.base.pojo.response.GoodsModelVO;
-import com.consum.base.pojo.response.LWhFormProcureExtendVO;
-import com.consum.base.pojo.response.LWhFormProcureGoodsVO;
-import com.consum.base.service.BaseGoodsTemplateServiceImpl;
-import com.consum.base.service.BaseWarehouseServiceImpl;
-import com.consum.base.service.FinSysTenantServiceImpl;
-import com.consum.base.service.LOrgSupplierServiceImpl;
-import com.consum.base.service.LWhFormProcureCoreService;
-import com.consum.base.service.LWhFormProcureGoodsService;
-import com.consum.base.service.LWhFormProcureService;
-import com.consum.base.service.LWhGoodsService;
-import com.consum.base.service.LWhProcureModelService;
-import com.consum.model.po.BaseGoodsTemplate;
-import com.consum.model.po.BaseWarehouse;
-import com.consum.model.po.FinSysTenantUser;
-import com.consum.model.po.LOrgSupplier;
-import com.consum.model.po.LWhFormProcure;
-import com.consum.model.po.LWhFormProcureGoods;
-import com.consum.model.po.LWhProcureModel;
+import com.consum.base.pojo.response.*;
+import com.consum.base.service.*;
+import com.consum.model.po.*;
 import com.iplatform.model.po.S_user_core;
 import com.walker.db.page.GenericPager;
 import com.walker.infrastructure.utils.CollectionUtils;
@@ -42,22 +25,13 @@
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import javax.annotation.Resource;
 import org.apache.commons.compress.utils.Lists;
 import org.springframework.beans.BeanUtils;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.lang.reflect.Field;
+import java.util.*;
 
 /**
  * @ClassName LWhFormProcureController
@@ -95,7 +69,15 @@
      * @Description 鏂板
      */
     @PostMapping("/add")
-    public ResponseValue add(@RequestBody LWhFormProcureParam param) {
+    public ResponseValue add() {
+        LWhFormProcureParam param = CommonUtil.getObjFromReqBody(LWhFormProcureParam.class);
+        LWhFormProcureParam param2 = new LWhFormProcureParam();
+        CommonUtil.copyProperties(param, param2);
+        param = param2;
+        return this.add(param);
+    }
+
+    private ResponseValue add(LWhFormProcureParam param) {
         Long warehouseId = param.getWarehouseId();
         if (param.getWarehouseId() == null) {
             return ResponseValue.error("浠撳簱ID涓嶈兘涓虹┖");
@@ -222,10 +204,14 @@
      */
     @ApiOperation(value = "閲囪喘鍗曞垪琛ㄦ煡璇�", notes = "閲囪喘鍗曞垪琛ㄦ煡璇�")
     @ApiImplicitParams({
-        @ApiImplicitParam(name = "param", value = "閲囪喘鏌ヨ鏉′欢", required = true, dataType = "FormProcureQryDto", paramType = "query")
+            @ApiImplicitParam(name = "param", value = "閲囪喘鏌ヨ鏉′欢", required = true, dataType = "FormProcureQryDto", paramType = "query")
     })
     @GetMapping("/list")
-    public ResponseValue queryFormProcureList(FormProcureQry param) {
+    public ResponseValue queryFormProcureList() {
+        FormProcureQry param = CommonUtil.getObjFromReq(FormProcureQry.class);
+        FormProcureQry param2 = new FormProcureQry();
+        CommonUtil.copyProperties(param, param2);
+        param = param2;
         S_user_core currentUser = this.getCurrentUser();
         if (currentUser == null) {
             return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
@@ -248,8 +234,8 @@
 
                 // 鏌ヨ鍨嬪彿鏁伴噺
                 String sql = "select fpg.id,BASE_CATEGORY_ID ,BASE_GOODS_TEMPLATE_ID ,GOODS_TEMPLATE_NAME ,sum(counts) count "
-                    + "from L_WH_FORM_PROCURE_GOODS fpg left join L_WH_PROCURE_MODEL pm on fpg.id = pm.FROM_PROCURE_GOODS_ID "
-                    + "where fpg.WH_FORM_PROCURE_ID =:id group by pm.FROM_PROCURE_GOODS_ID";
+                        + "from L_WH_FORM_PROCURE_GOODS fpg left join L_WH_PROCURE_MODEL pm on fpg.id = pm.FROM_PROCURE_GOODS_ID "
+                        + "where fpg.WH_FORM_PROCURE_ID =:id group by pm.FROM_PROCURE_GOODS_ID";
                 Map<String, Object> paramMap = new HashMap<>();
                 paramMap.put("id", item.getId());
                 List<Map<String, Object>> procureModelList = lWhProcureModelService.select(sql, paramMap, new MapperUtil());
@@ -264,8 +250,9 @@
         }
         try {
             Field fieldDatas = GenericPager.class.getDeclaredField("datas");
-            fieldDatas.setAccessible(true);
-            fieldDatas.set(genericPager, result);
+//            fieldDatas.setAccessible(true);
+//            fieldDatas.set(genericPager, result);
+            ReflectUtil.setFieldValue(genericPager, fieldDatas, result);
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -277,7 +264,11 @@
      * @Description 缂栬緫
      */
     @PostMapping("/edit")
-    public ResponseValue edit(@RequestBody LWhFormProcureParam param) {
+    public ResponseValue edit() {
+        LWhFormProcureParam param = CommonUtil.getObjFromReqBody(LWhFormProcureParam.class);
+        LWhFormProcureParam param2 = new LWhFormProcureParam();
+        CommonUtil.copyProperties(param, param2);
+        param = param2;
         ResponseValue delFlag = delById(param.getId());
         if (delFlag.getCode() == ResponseValue.CODE_SUCCESS) {
             return this.add(param);
@@ -342,13 +333,13 @@
         lWhFormProcureGoods.setWhFormProcureId(id);
         List<LWhFormProcureGoods> formProcureGoods = lWhFormProcureGoodsService.select(lWhFormProcureGoods);
 
-        Field fieldModels = null;
-        try {
-            fieldModels = LWhFormProcureGoodsVO.class.getDeclaredField("models");
-        } catch (NoSuchFieldException e) {
-            e.printStackTrace();
-        }
-        fieldModels.setAccessible(true);
+//        Field fieldModels = null;
+//        try {
+//            fieldModels = LWhFormProcureGoodsVO.class.getDeclaredField("models");
+//        } catch (NoSuchFieldException e) {
+//            e.printStackTrace();
+//        }
+//        fieldModels.setAccessible(true);
         ArrayList<LWhFormProcureGoodsVO> procureGoodsVOList = new ArrayList<>();
         for (LWhFormProcureGoods formProcureGood : formProcureGoods) {
             LWhFormProcureGoodsVO lWhFormProcureGoodsVO = new LWhFormProcureGoodsVO();
@@ -363,15 +354,17 @@
             Map<String, Object> paramMap = new HashMap<>();
             paramMap.put("formProcureGoodId", formProcureGood.getId());
             String sql = "SELECT\n" + "pm.BASE_GOODS_MODELS_ID,pm.BASE_GOODS_MODELS_NAME,pm.PRICE,pm.COUNTS,pm.WOREHOUSE_COUNT,bgm.unit " + "FROM\n"
-                + "\tl_wh_procure_model pm\n"
-                + "\tLEFT JOIN base_goods_models bgm on pm.BASE_GOODS_MODELS_ID = bgm.id where pm.FROM_PROCURE_GOODS_ID =:formProcureGoodId";
+                    + "\tl_wh_procure_model pm\n"
+                    + "\tLEFT JOIN base_goods_models bgm on pm.BASE_GOODS_MODELS_ID = bgm.id where pm.FROM_PROCURE_GOODS_ID =:formProcureGoodId";
             List<Map<String, Object>> procureModelList = lWhProcureModelService.select(sql, paramMap, new MapperUtil());
             List<GoodsModelVO> goodsModelVOList = Lists.newArrayList();
             procureModelList.forEach(item -> {
                 GoodsModelVO goodsModelVO = MapUtils.convertMapToObj(item, GoodsModelVO.class);
                 goodsModelVOList.add(goodsModelVO);
             });
-            fieldModels.set(lWhFormProcureGoodsVO, goodsModelVOList);
+//            fieldModels.set(lWhFormProcureGoodsVO, goodsModelVOList);
+            ReflectUtil.setFieldValue(lWhFormProcureGoodsVO, "models", goodsModelVOList);
+
             procureGoodsVOList.add(lWhFormProcureGoodsVO);
         }
         lWhFormProcureExtendVO.setProcureGoods(procureGoodsVOList);
@@ -384,6 +377,10 @@
     @GetMapping("detail/list")
     public ResponseValue queryFormProcureDetailList() {
         FormProcureQry formProcureQry = CommonUtil.getObjFromReq(FormProcureQry.class);
+        FormProcureQry param2 = new FormProcureQry();
+        CommonUtil.copyProperties(formProcureQry, param2);
+        formProcureQry = param2;
+
         S_user_core currentUser = this.getCurrentUser();
         if (currentUser == null) {
             return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
diff --git a/consum-base/src/main/java/com/consum/base/controller/LWhFormScrappedController.java b/consum-base/src/main/java/com/consum/base/controller/LWhFormScrappedController.java
index 866e7be..6d2c4d5 100644
--- a/consum-base/src/main/java/com/consum/base/controller/LWhFormScrappedController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/LWhFormScrappedController.java
@@ -3,6 +3,7 @@
 import cn.afterturn.easypoi.excel.ExcelExportUtil;
 import cn.afterturn.easypoi.excel.entity.ExportParams;
 import com.consum.base.BaseController;
+import com.consum.base.core.utils.CommonUtil;
 import com.consum.base.core.utils.MapUtils;
 import com.consum.base.core.utils.MapperUtil;
 import com.consum.base.core.utils.PageUtil;
@@ -21,23 +22,20 @@
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.compress.utils.Lists;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.net.URLEncoder;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import org.apache.commons.compress.utils.Lists;
-import org.apache.poi.ss.usermodel.Workbook;
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
 
 /**
  * @Description 鎶ュ簾鍗�
@@ -60,12 +58,35 @@
      */
     @ApiOperation(value = "鏂板鎶ュ簾鍗�", notes = "鏂板鎶ュ簾鍗�")
     @ApiImplicitParams({
-        @ApiImplicitParam(name = "param")
+            @ApiImplicitParam(name = "param")
     })
     @PostMapping("/add")
-    public ResponseValue add(@RequestBody LWhFormScrappedParam param) {
+    public ResponseValue add() {
+        LWhFormScrappedParam param = CommonUtil.getObjFromReqBody(LWhFormScrappedParam.class);
+        LWhFormScrappedParam query = new LWhFormScrappedParam();
+        CommonUtil.copyProperties(param, query);
+        param = query;
         FinSysTenantUser sysInfo = this.getSysInfo();
-        int result = this.lWhFormScrappedService.add(param, this.getCurrentUser(), sysInfo);
+        int result = this.lWhFormScrappedService.add(param,0, this.getCurrentUser(), sysInfo);
+        if (result > 0) {
+            return ResponseValue.success(1);
+        }
+        return ResponseValue.error("鏂板澶辫触锛�");
+    }
+
+    @ApiOperation(value = "鏂板鎶ュ簾鍗�", notes = "鏂板鎶ュ簾鍗�")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "param")
+    })
+    @PostMapping("/deprAdd")
+    public ResponseValue deprAdd() {
+        LWhFormScrappedParam param = CommonUtil.getObjFromReqBody(LWhFormScrappedParam.class);
+        LWhFormScrappedParam query = new LWhFormScrappedParam();
+        CommonUtil.copyProperties(param, query);
+        param = query;
+
+        FinSysTenantUser sysInfo = this.getSysInfo();
+        int result = this.lWhFormScrappedService.add(param,1, this.getCurrentUser(), sysInfo);
         if (result > 0) {
             return ResponseValue.success(1);
         }
@@ -79,10 +100,15 @@
      */
     @ApiOperation(value = "鍒楄〃鏌ヨ", notes = "鍒楄〃鏌ヨ")
     @ApiImplicitParams({
-        @ApiImplicitParam(name = "param", value = "鏌ヨ鏉′欢", dataType = "LWhFormScrappedQry", paramType = "query")
+            @ApiImplicitParam(name = "param", value = "鏌ヨ鏉′欢", dataType = "LWhFormScrappedQry", paramType = "query")
     })
     @GetMapping("/list")
-    public ResponseValue queryList(LWhFormScrappedQry param) {
+    public ResponseValue queryList() {
+        LWhFormScrappedQry param = CommonUtil.getObjFromReq(LWhFormScrappedQry.class);
+        LWhFormScrappedQry query = new LWhFormScrappedQry();
+        CommonUtil.copyProperties(param, query);
+        param = query;
+
         FinSysTenantUser sysInfo = getSysInfo();
         if (sysInfo == null) {
             return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
@@ -97,8 +123,8 @@
                 List<FromTransferTemplateInfoVO> list = Lists.newArrayList();
                 // 鏌ヨ鍨嬪彿鏁伴噺
                 String sql =
-                    "SELECT fsg.id,fsg.BASE_GOODS_TEMPLATE_ID goodsTemplatesId,fsg.GOODS_TEMPLATE_NAME goodsName,sum(counts) count FROM l_wh_form_scrapped fs left join l_wh_form_scrapped_goods fsg on fs.id = fsg.FORM_SCRAPPED_ID "
-                        + "where fsg.FORM_SCRAPPED_ID =:id group by fsg.BASE_GOODS_TEMPLATE_ID";
+                        "SELECT fsg.id,fsg.BASE_GOODS_TEMPLATE_ID goodsTemplatesId,fsg.GOODS_TEMPLATE_NAME goodsName,sum(counts) count FROM l_wh_form_scrapped fs left join l_wh_form_scrapped_goods fsg on fs.id = fsg.FORM_SCRAPPED_ID "
+                                + "where fsg.FORM_SCRAPPED_ID =:id group by fsg.BASE_GOODS_TEMPLATE_ID";
                 Map<String, Object> paramMap = new HashMap<>();
                 paramMap.put("id", item.getId());
                 List<Map<String, Object>> procureModelList = lWhFormScrappedService.select(sql, paramMap, new MapperUtil());
@@ -121,7 +147,7 @@
      */
     @ApiOperation(value = "鏍规嵁id鏌ヨ璇︽儏", notes = "鏍规嵁id鏌ヨ璇︽儏")
     @ApiImplicitParams({
-        @ApiImplicitParam(name = "id", value = "鎶ュ簾鍗昳d", dataType = "Long", paramType = "query")
+            @ApiImplicitParam(name = "id", value = "鎶ュ簾鍗昳d", dataType = "Long", paramType = "query")
     })
     @GetMapping("/detail")
     public ResponseValue getById(Long id) {
@@ -135,15 +161,20 @@
     /**
      * 鎶ュ簾鏄庣粏
      *
-     * @param param
+     * @param
      * @return
      */
     @ApiOperation(value = "鎶ュ簾鏄庣粏", notes = "鎶ュ簾鏄庣粏")
     @ApiImplicitParams({
-        @ApiImplicitParam(name = "param", value = "鏌ヨ鏉′欢", dataType = "LWhFormScrappedQry", paramType = "query")
+            @ApiImplicitParam(name = "param", value = "鏌ヨ鏉′欢", dataType = "LWhFormScrappedQry", paramType = "query")
     })
     @GetMapping("/list/detailList")
-    public ResponseValue queryDetailList(LWhFormScrappedQry param) {
+    public ResponseValue queryDetailList( ) {
+        LWhFormScrappedQry param = CommonUtil.getObjFromReq(LWhFormScrappedQry.class);
+        LWhFormScrappedQry query = new LWhFormScrappedQry();
+        CommonUtil.copyProperties(param, query);
+        param = query;
+
         FinSysTenantUser sysInfo = this.getSysInfo();
         if (sysInfo == null) {
             return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
diff --git a/consum-base/src/main/java/com/consum/base/controller/LWhFormTransferController.java b/consum-base/src/main/java/com/consum/base/controller/LWhFormTransferController.java
index a78ab43..7b482b3 100644
--- a/consum-base/src/main/java/com/consum/base/controller/LWhFormTransferController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/LWhFormTransferController.java
@@ -1,33 +1,24 @@
 package com.consum.base.controller;
 
+import cn.hutool.core.util.ReflectUtil;
 import com.consum.base.BaseController;
 import com.consum.base.core.utils.IdUtil;
 import com.consum.base.core.utils.MapUtils;
 import com.consum.base.core.utils.MapperUtil;
 import com.consum.base.pojo.GoodsUseRecordVO;
 import com.consum.base.pojo.LWhFormTransferGoodsInfoParam;
-import com.consum.base.pojo.request.ProcureModelInfoParam;
 import com.consum.base.pojo.RecordUserInfoVO;
 import com.consum.base.pojo.UseRecordSkuVO;
 import com.consum.base.pojo.dto.UseRecordDTO;
 import com.consum.base.pojo.query.TransferQry;
 import com.consum.base.pojo.request.LWhFormTransferParam;
+import com.consum.base.pojo.request.ProcureModelInfoParam;
 import com.consum.base.pojo.response.FormTransferVO;
 import com.consum.base.pojo.response.FromTransferTemplateInfoVO;
 import com.consum.base.pojo.response.LWHFromTransferExtendVO;
 import com.consum.base.pojo.response.TransferInfoVO;
-import com.consum.base.service.BaseGoodsModelsServiceImpl;
-import com.consum.base.service.BaseWarehouseServiceImpl;
-import com.consum.base.service.LWhFormTransferCoreService;
-import com.consum.base.service.LWhFormTransferServiceImpl;
-import com.consum.base.service.LWhProcureModelService;
-import com.consum.base.service.LWhProcureModelUserRecordServiceImpl;
-import com.consum.base.service.LWhProcureModelUserServiceImpl;
-import com.consum.model.po.BaseWarehouse;
-import com.consum.model.po.FinSysTenantUser;
-import com.consum.model.po.LWhFormTransfer;
-import com.consum.model.po.LWhProcureModelUser;
-import com.consum.model.po.LWhProcureModelUserRecord;
+import com.consum.base.service.*;
+import com.consum.model.po.*;
 import com.consum.model.vo.LWhFormOutputVo;
 import com.iplatform.model.po.S_user_core;
 import com.walker.db.page.GenericPager;
@@ -38,21 +29,14 @@
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.stream.Collectors;
 import org.apache.commons.compress.utils.Lists;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+
+import java.lang.reflect.Field;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @Description 璋冩嫧绠$悊
@@ -152,8 +136,10 @@
         }
         try {
             Field fieldDatas = GenericPager.class.getDeclaredField("datas");
-            fieldDatas.setAccessible(true);
-            fieldDatas.set(genericPager, result);
+//            fieldDatas.setAccessible(true);
+//            fieldDatas.set(genericPager, result);
+            ReflectUtil.setFieldValue(genericPager, fieldDatas, result);
+
         } catch (Exception e) {
             e.printStackTrace();
         }
diff --git a/consum-base/src/main/java/com/consum/base/controller/LWhHomeStatisticsController.java b/consum-base/src/main/java/com/consum/base/controller/LWhHomeStatisticsController.java
new file mode 100644
index 0000000..5ebf949
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/controller/LWhHomeStatisticsController.java
@@ -0,0 +1,45 @@
+package com.consum.base.controller;
+
+import cn.hutool.core.convert.Convert;
+import com.consum.base.BaseController;
+import com.consum.base.service.LWhGoodsService;
+import com.consum.model.po.FinSysTenantUser;
+import com.walker.web.ResponseValue;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName LWhHomeStatisticsController
+ * @Author cy
+ * @Date 2023/11/27
+ * @Description
+ * @Version 1.0
+ **/
+
+@RestController
+@RequestMapping("/pc/warehouse/homeStatistics")
+@Api(value = "棣栭〉缁熻", tags = "棣栭〉缁熻")
+public class LWhHomeStatisticsController extends BaseController {
+    @Resource
+    private LWhGoodsService lWhGoodsService;
+
+    /**
+     * 鐗╁搧鏁伴噺閲戦缁熻
+     *
+     * @return
+     */
+    @GetMapping("getGoodsNumPrice")
+    public ResponseValue goodsNumPrice() {
+        /*褰撳墠鐧诲綍浜哄彧鑳界湅鍒拌嚜宸辨満鏋勪笅鐨勫垪琛�*/
+        FinSysTenantUser sysInfo = this.getSysInfo();
+        String tenantId = sysInfo.getTenantId();
+        List<Map<String, Object>> goodsNumPrice = lWhGoodsService.getGoodsNumPrice(Convert.toLong(tenantId, 0l));
+        return ResponseValue.success(goodsNumPrice.get(0));
+    }
+}
diff --git a/consum-base/src/main/java/com/consum/base/controller/LWhWarningConfigController.java b/consum-base/src/main/java/com/consum/base/controller/LWhWarningConfigController.java
index 783f3de..e1610e4 100644
--- a/consum-base/src/main/java/com/consum/base/controller/LWhWarningConfigController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/LWhWarningConfigController.java
@@ -68,6 +68,10 @@
     @PostMapping("/add")
     public ResponseValue add() throws Exception {
         WhWarningConfigParam param = CommonUtil.getObjFromReqBody(WhWarningConfigParam.class);
+        WhWarningConfigParam param2 = new WhWarningConfigParam();
+        CommonUtil.copyProperties(param, param2);
+        param = param2;
+
         String modelConfigStr = param.getModelConfigStr();
         Long baseWarehouseId = param.getBaseWarehouseId();
         Long baseGoodsTemplateId = param.getBaseGoodsTemplateId();
@@ -144,6 +148,10 @@
     @PostMapping("/upd")
     public ResponseValue upd() {
         WhWarningConfig param = CommonUtil.getObjFromReqBody(WhWarningConfig.class);
+        WhWarningConfig param2 = new WhWarningConfig();
+        CommonUtil.copyProperties(param, param2);
+        param = param2;
+
         if (param.getId() == null || (param.getUpperLimit() == null && param.getLowerLimit() == null)) {
             return ResponseValue.error("搴撳瓨涓婇檺銆佷笅闄愪笉鑳藉叏涓虹┖锛�");
         }
@@ -160,6 +168,9 @@
     @DeleteMapping("del")
     public ResponseValue delById() {
         WhWarningConfig param = CommonUtil.getObjFromReqBody(WhWarningConfig.class);
+        WhWarningConfig param2 = new WhWarningConfig();
+        CommonUtil.copyProperties(param, param2);
+        param = param2;
         if (param.getId() == null) {
             return ResponseValue.error("id涓虹┖");
         }
@@ -170,6 +181,9 @@
     @GetMapping("/getList")
     public ResponseValue getConfigList() {
         WhWarningConfigQry param = CommonUtil.getObjFromReq(WhWarningConfigQry.class);
+        WhWarningConfigQry param2 = new WhWarningConfigQry();
+        CommonUtil.copyProperties(param, param2);
+        param = param2;
         /*褰撳墠鐧诲綍浜哄彧鑳界湅鍒拌嚜宸辨満鏋勪笅鐨勫垪琛�*/
         FinSysTenantUser sysInfo = this.getSysInfo();
         String tenantId = sysInfo.getTenantId();
@@ -184,12 +198,20 @@
     @GetMapping("/getById")
     public ResponseValue getById() {
         WhWarningConfig param = CommonUtil.getObjFromReq(WhWarningConfig.class);
+        WhWarningConfig param2 = new WhWarningConfig();
+        CommonUtil.copyProperties(param, param2);
+        param = param2;
         WhWarningConfig whWarningConfig = lWhWarningConfigService.get(param);
         return ResponseValue.success(whWarningConfig);
     }
 
     @GetMapping("/getConfigList")
-    public ResponseValue getConfigList(WhWarningConfig param) {
+    public ResponseValue getWarnConfigList() {
+        WhWarningConfig param = CommonUtil.getObjFromReq(WhWarningConfig.class);
+        WhWarningConfig param2 = new WhWarningConfig();
+        CommonUtil.copyProperties(param, param2);
+        param = param2;
+
         if (param.getBaseWarehouseId() == null || param.getWarehouseType() == null || (param.getBaseGoodsModelsId() == null || param.getBaseGoodsTemplateId() == null)) {
             return ResponseValue.error("缂哄皯蹇呰鍙傛暟");
         }
diff --git a/consum-base/src/main/java/com/consum/base/controller/LWhWarningController.java b/consum-base/src/main/java/com/consum/base/controller/LWhWarningController.java
index 585f3ea..bd64206 100644
--- a/consum-base/src/main/java/com/consum/base/controller/LWhWarningController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/LWhWarningController.java
@@ -35,6 +35,9 @@
     @GetMapping("/getList")
     public ResponseValue getList() {
         WhWarningQry param = CommonUtil.getObjFromReq(WhWarningQry.class);
+        WhWarningQry param2 = new WhWarningQry();
+        CommonUtil.copyProperties(param, param2);
+        param = param2;
         /*褰撳墠鐧诲綍浜哄彧鑳界湅鍒拌嚜宸辨満鏋勪笅鐨勫垪琛�*/
         FinSysTenantUser sysInfo = this.getSysInfo();
         String tenantId = sysInfo.getTenantId();
@@ -60,6 +63,9 @@
     @GetMapping("/handerChenKuCun")
     public ResponseValue handerChenKuCun() {
         WhWarningQry param = CommonUtil.getObjFromReq(WhWarningQry.class);
+        WhWarningQry param2 = new WhWarningQry();
+        CommonUtil.copyProperties(param, param2);
+        param = param2;
         FinSysTenantUser sysInfo = this.getSysInfo();
         long dealTime = DateUtils.getDateTimeNumber(System.currentTimeMillis());
 
diff --git a/consum-base/src/main/java/com/consum/base/core/WarehouseCoreService.java b/consum-base/src/main/java/com/consum/base/core/WarehouseCoreService.java
index feab773..96d5f9f 100644
--- a/consum-base/src/main/java/com/consum/base/core/WarehouseCoreService.java
+++ b/consum-base/src/main/java/com/consum/base/core/WarehouseCoreService.java
@@ -1,14 +1,16 @@
 package com.consum.base.core;
 
 import com.consum.base.core.param.BaseWarehouseParam;
-import com.consum.base.core.utils.SqlParameter;
 import com.consum.base.core.utils.DateUtil;
+import com.consum.base.core.utils.SqlParameter;
 import com.consum.model.po.*;
 import com.walker.infrastructure.utils.NumberGenerator;
 import com.walker.jdbc.service.BaseServiceImpl;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.Assert;
 
 import java.util.ArrayList;
@@ -20,6 +22,7 @@
  */
 @Service
 @Slf4j
+@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
 public class WarehouseCoreService extends BaseServiceImpl {
 
     public static void main(String[] args) {
diff --git a/consum-base/src/main/java/com/consum/base/core/service/LWhWarningCoreServiceImpl.java b/consum-base/src/main/java/com/consum/base/core/service/LWhWarningCoreServiceImpl.java
index 7abdabd..9e8a73d 100644
--- a/consum-base/src/main/java/com/consum/base/core/service/LWhWarningCoreServiceImpl.java
+++ b/consum-base/src/main/java/com/consum/base/core/service/LWhWarningCoreServiceImpl.java
@@ -10,6 +10,8 @@
 import com.walker.infrastructure.utils.NumberGenerator;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
@@ -26,6 +28,7 @@
  * @Version 1.0
  **/
 @Service
+@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
 public class LWhWarningCoreServiceImpl {
 
     @Resource
@@ -129,8 +132,7 @@
 
         StringBuilder sql = new StringBuilder(KU_CUN_NORMAL_MODEL);
         if (!org.springframework.util.CollectionUtils.isEmpty(normalBaseModelIdList)) {
-            sql.append(" and BASE_GOODS_MODELS_ID in(?)");
-            params.add(org.apache.commons.lang3.StringUtils.join(normalBaseModelIdList, ","));
+            sql.append(" and BASE_GOODS_MODELS_ID in(").append( org.apache.commons.lang3.StringUtils.join(normalBaseModelIdList, ",")).append(")");
         }
         return lWhWarningService.update(sql.toString(), params.toArray());
     }
diff --git a/consum-base/src/main/java/com/consum/base/core/utils/MapUtils.java b/consum-base/src/main/java/com/consum/base/core/utils/MapUtils.java
index b092d9c..a40697c 100644
--- a/consum-base/src/main/java/com/consum/base/core/utils/MapUtils.java
+++ b/consum-base/src/main/java/com/consum/base/core/utils/MapUtils.java
@@ -1,10 +1,12 @@
 package com.consum.base.core.utils;
 
+import cn.hutool.core.util.ReflectUtil;
+import lombok.extern.slf4j.Slf4j;
+
 import java.lang.reflect.Field;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
-import lombok.extern.slf4j.Slf4j;
 
 @Slf4j
 public class MapUtils {
@@ -24,8 +26,9 @@
             T obj = clazz.newInstance();
             for (Map.Entry<String, Object> entry : map.entrySet()) {
                 Field field = clazz.getDeclaredField(entry.getKey());
-                field.setAccessible(true);
-                field.set(obj, entry.getValue());
+//                field.setAccessible(true);
+//                field.set(obj, entry.getValue());
+                ReflectUtil.setFieldValue(obj, field, entry.getValue());
             }
             return obj;
         } catch (InstantiationException | IllegalAccessException | NoSuchFieldException e) {
@@ -87,4 +90,4 @@
     }
 
 
-}
\ No newline at end of file
+}
diff --git a/consum-base/src/main/java/com/consum/base/pojo/LWhFormScrappedParam.java b/consum-base/src/main/java/com/consum/base/pojo/LWhFormScrappedParam.java
index 574fd9e..42581d6 100644
--- a/consum-base/src/main/java/com/consum/base/pojo/LWhFormScrappedParam.java
+++ b/consum-base/src/main/java/com/consum/base/pojo/LWhFormScrappedParam.java
@@ -2,8 +2,9 @@
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
-import java.util.List;
 import lombok.Data;
+
+import java.util.List;
 
 @Data
 @ApiModel(value = "鏂板鎶ュ簾鍗曚俊鎭�")
@@ -14,6 +15,10 @@
      */
     @ApiModelProperty(value = "鏈烘瀯id")
     private Long agencyId;
+
+    @ApiModelProperty(value = "閮ㄩ棬id")
+    private Long departmentId;
+
     /**
      * 浠撳簱缂栧彿
      */
diff --git "a/consum-base/src/main/java/com/consum/base/pojo/excel/\344\270\223\351\241\271\346\224\257\345\207\272\347\224\250\346\254\276\347\224\263\350\257\267\344\271\246_map.xls" "b/consum-base/src/main/java/com/consum/base/pojo/excel/\344\270\223\351\241\271\346\224\257\345\207\272\347\224\250\346\254\276\347\224\263\350\257\267\344\271\246_map.xls"
new file mode 100644
index 0000000..0d0181d
--- /dev/null
+++ "b/consum-base/src/main/java/com/consum/base/pojo/excel/\344\270\223\351\241\271\346\224\257\345\207\272\347\224\250\346\254\276\347\224\263\350\257\267\344\271\246_map.xls"
Binary files differ
diff --git a/consum-base/src/main/java/com/consum/base/pojo/query/LWhFormOutputQry.java b/consum-base/src/main/java/com/consum/base/pojo/query/LWhFormOutputQry.java
index cd0e92b..b630806 100644
--- a/consum-base/src/main/java/com/consum/base/pojo/query/LWhFormOutputQry.java
+++ b/consum-base/src/main/java/com/consum/base/pojo/query/LWhFormOutputQry.java
@@ -1,6 +1,5 @@
 package com.consum.base.pojo.query;
 
-import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -32,6 +31,11 @@
     @ApiModelProperty(value = "鐗╁搧妯$増鍚嶇О")
     private String goodsName;
     /**
+     * 鐗╁搧妯$増鍚嶇О
+     */
+    @ApiModelProperty(value = "鐗╁搧妯$増id")
+    private String baseGoodsId;
+    /**
      * 鏈烘瀯
      */
     @ApiModelProperty(value = "鏈烘瀯")
@@ -50,20 +54,18 @@
      * 閫�杩樺叆搴� map.put("4" + "1", "6")
      * 鐢抽鍑哄簱 map.put("4" + "2", "7")
      */
-    @ApiModelProperty(value = "1=閲囪喘鍏ュ簱,2=璋冩嫧鍏ュ簱,")
+    @ApiModelProperty(value = "1閲囪喘鍏ュ簱 2閫�杩樺叆搴� 3璋冩嫧鍏ュ簱 4鐩樼泩鍏ュ簱 5鐢抽鍑哄簱 6璋冩嫧鍑哄簱 7鐩樹簭鍑哄簱 8鎶ュ簾鍑哄簱 9鍏朵粬鍑哄簱")
     private Integer states;
 
     /**
      * 鍏ュ簱鏃堕棿 寮�濮�
      */
     @ApiModelProperty(value = "寮�濮嬫椂闂�")
-    @JsonFormat(pattern = "yyyyMMdd", timezone = "GMT+8")
     private Long startTime;
     /**
      * 鍏ュ簱鏃堕棿 缁撴潫
      */
     @ApiModelProperty(value = "缁撴潫鏃堕棿")
-    @JsonFormat(pattern = "yyyyMMdd", timezone = "GMT+8")
     private Long endTime;
     /**
      * 瑙勬牸鍨嬪彿id
diff --git a/consum-base/src/main/java/com/consum/base/pojo/query/LWhLedgerQry.java b/consum-base/src/main/java/com/consum/base/pojo/query/LWhLedgerQry.java
index 5e847d4..119d2ca 100644
--- a/consum-base/src/main/java/com/consum/base/pojo/query/LWhLedgerQry.java
+++ b/consum-base/src/main/java/com/consum/base/pojo/query/LWhLedgerQry.java
@@ -19,7 +19,7 @@
     private Long agencyId;
 
     @ApiModelProperty("浠撳簱绫诲瀷")
-    private Long warehouseType;
+    private Short warehouseType;
 
     @ApiModelProperty("浠撳簱id")
     private Long warehouseId;
diff --git a/consum-base/src/main/java/com/consum/base/pojo/query/WhWarningQry.java b/consum-base/src/main/java/com/consum/base/pojo/query/WhWarningQry.java
index a52c402..4495408 100644
--- a/consum-base/src/main/java/com/consum/base/pojo/query/WhWarningQry.java
+++ b/consum-base/src/main/java/com/consum/base/pojo/query/WhWarningQry.java
@@ -40,6 +40,9 @@
     @ApiModelProperty("鐘舵�侊紙1=鏈煡鐪嬶紱2=宸叉煡鐪嬶級")
     private Integer states;
 
+    @ApiModelProperty("棰勮绫诲瀷锛�1=瓒呬笂闄愶紱2=瓒呬笅闄愶級")
+    private Short warningType;
+
     @ApiModelProperty(value = "姣忛〉鏄剧ず鏉℃暟")
     private Integer pageSize = 10;
 
diff --git a/consum-base/src/main/java/com/consum/base/service/FinWarehouseLedgerServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/FinWarehouseLedgerServiceImpl.java
index 664ffa8..12ed86d 100644
--- a/consum-base/src/main/java/com/consum/base/service/FinWarehouseLedgerServiceImpl.java
+++ b/consum-base/src/main/java/com/consum/base/service/FinWarehouseLedgerServiceImpl.java
@@ -20,7 +20,8 @@
 @Service
 public class FinWarehouseLedgerServiceImpl extends BaseServiceImpl {
 
-    private static String LEDGER_LIST_QUERY_PREFIX = "SELECT ware.AGENCY_NAME ,ware.WAREHOUSE_NAME ,goodsTemp.CATEGORY_NAME ,CASE goods.COST_TYPE WHEN 1 THEN 'A绫�' WHEN 2 THEN 'B绫�' WHEN 3 THEN 'C绫�' END AS cost_Type,goods.GOODS_TEMPLATE_NAME ,goods.BASE_GOODS_MODELS_NAME ,goods.UNIT unit,COUNt(goods.id) kucun FROM L_WH_GOODS goods LEFT JOIN BASE_GOODS_TEMPLATE goodsTemp ON goods.BASE_GOODS_TEMPLATE_ID=goodsTemp.id LEFT JOIN BASE_WAREHOUSE ware ON ware.id=goods.WAREHOUSE_ID where 1=1 ";
+    private String LEDGER_LIST_QUERY_PREFIX = "SELECT ware.AGENCY_NAME ,ware.WAREHOUSE_NAME ,goodsTemp.CATEGORY_NAME ,CASE goods.COST_TYPE WHEN 1 THEN 'A绫�' WHEN 2 THEN 'B绫�' WHEN 3 THEN 'C绫�' END AS cost_Type,goods.GOODS_TEMPLATE_NAME ,goods.BASE_GOODS_MODELS_NAME ,goods.UNIT unit,COUNt(goods.id) kucun FROM L_WH_GOODS goods LEFT JOIN BASE_GOODS_TEMPLATE goodsTemp ON goods.BASE_GOODS_TEMPLATE_ID=goodsTemp.id LEFT JOIN BASE_WAREHOUSE ware ON ware.id=goods.WAREHOUSE_ID where 1=1 ";
+    private String LEDGER_LIST_QUERY_GROUP = " GROUP BY ware.AGENCY_NAME,ware.WAREHOUSE_NAME,goodsTemp.CATEGORY_NAME,goods.COST_TYPE,goods.GOODS_TEMPLATE_NAME,goods.BASE_GOODS_MODELS_NAME,goods.UNIT";
 
     public GenericPager<Map<String, Object>> ledgerList(LWhLedgerQry param) {
         StringBuilder sql = new StringBuilder(LEDGER_LIST_QUERY_PREFIX);
@@ -64,7 +65,56 @@
             sql.append(" AND goods.COST_TYPE=:costType");
             paramts.put("costType", param.getCostType());
         }
-        sql.append(" GROUP BY ware.AGENCY_NAME,ware.WAREHOUSE_NAME,goodsTemp.CATEGORY_NAME,goods.COST_TYPE,goods.GOODS_TEMPLATE_NAME,goods.BASE_GOODS_MODELS_NAME,goods.UNIT");
+        sql.append(LEDGER_LIST_QUERY_GROUP);
+        return selectSplit(sql.toString(), paramts, param.getPageNum(), param.getPageSize(), new MapperUtil());
+    }
+
+    private String DEPART_LEDGER_LIST_QUERY_PREFIX = "SELECT tenant.id tenantId,tenant.NAME AS AGENCY_NAME,ware.NAME AS depart_name,goodsTemp.CATEGORY_NAME,CASE goods.COST_TYPE WHEN 1 THEN 'A绫�' WHEN 2 THEN 'B绫�' WHEN 3 THEN 'C绫�' END AS cost_Type,goods.GOODS_TEMPLATE_NAME,goods.BASE_GOODS_MODELS_NAME,goods.UNIT unit,COUNt(goods.id) kucun FROM L_WH_GOODS goods LEFT JOIN BASE_GOODS_TEMPLATE goodsTemp ON goods.BASE_GOODS_TEMPLATE_ID=goodsTemp.id LEFT JOIN fin_sys_tenant_department ware ON ware.id=goods.WAREHOUSE_ID AND goods.WAREHOUSE_TYPE=1 LEFT JOIN fin_sys_tenant tenant ON tenant.id=ware.TENANT_ID WHERE 1=1 ";
+    private String DEPART_LEDGER_LIST_QUERY_GROUP = " GROUP BY tenant.id,tenant.NAME,ware.NAME,goodsTemp.CATEGORY_NAME,goods.COST_TYPE,goods.GOODS_TEMPLATE_NAME,goods.BASE_GOODS_MODELS_NAME,goods.UNIT";
+
+    public GenericPager<Map<String, Object>> departLedgerList(LWhLedgerQry param) {
+        StringBuilder sql = new StringBuilder(DEPART_LEDGER_LIST_QUERY_PREFIX);
+        Map<String, Object> paramts = new HashMap<>();
+        //鐘舵�侊紙0=鍦ㄩ�旇皟鎷紱1=鍏ュ簱鏈垎鍙戯紱2=宸蹭笅鍙戯紱3=鎶ュ簾 4 闆舵槦鍑哄簱锛�
+        if (param.getStates() != null) {
+            sql.append(" and goods.states = :states");
+            paramts.put("states", param.getStates());
+        }
+        //鏈烘瀯
+        if (param.getAgencyId() != null) {
+            sql.append(" and left(ware.AGENCY_ID, length(:lengthAgencyId)) = :agencyId");
+            paramts.put("lengthAgencyId", param.getAgencyId());
+            paramts.put("agencyId", param.getAgencyId());
+        }
+        //浠撳簱绫诲瀷
+        if (param.getWarehouseType() != null) {
+            sql.append(" AND goods.WAREHOUSE_TYPE = :warehouseType");
+            paramts.put("warehouseType", param.getWarehouseType());
+        }
+        if (param.getWarehouseId() != null) {
+            sql.append(" AND goods.WAREHOUSE_ID = :warehouseId");
+            paramts.put("warehouseId", param.getWarehouseId());
+        }
+        //鐗╁搧鍚嶇О
+        if (StringUtils.isNotEmpty(param.getGoodsTemplateName())) {
+            sql.append(" AND goods.GOODS_TEMPLATE_NAME like :goodsTemplateName");
+            paramts.put("goodsTemplateName", StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
+        }
+        if (param.getGoodsTemplateId() != null) {
+            sql.append(" AND goods.BASE_GOODS_TEMPLATE_ID=:goodsTemplateId");
+            paramts.put("goodsTemplateId", param.getGoodsTemplateId());
+        }
+        //鍒嗙被
+        if (param.getCategoryId() != null) {
+            sql.append(" AND goodsTemp.CATEGORY_ID=:categoryId");
+            paramts.put("categoryId", param.getCategoryId());
+        }
+        //浠峰�肩被鍨�
+        if (param.getCostType() != null) {
+            sql.append(" AND goods.COST_TYPE=:costType");
+            paramts.put("costType", param.getCostType());
+        }
+        sql.append(DEPART_LEDGER_LIST_QUERY_GROUP);
         return selectSplit(sql.toString(), paramts, param.getPageNum(), param.getPageSize(), new MapperUtil());
     }
 }
diff --git a/consum-base/src/main/java/com/consum/base/service/LWarehouseFlowCoreService.java b/consum-base/src/main/java/com/consum/base/service/LWarehouseFlowCoreService.java
index 144e817..a9989b2 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWarehouseFlowCoreService.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWarehouseFlowCoreService.java
@@ -12,6 +12,8 @@
 import org.springframework.jdbc.core.namedparam.SqlParameterSource;
 import org.springframework.jdbc.core.simple.SimpleJdbcCall;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.PostConstruct;
 import java.util.List;
@@ -26,6 +28,7 @@
  **/
 @Service
 @Slf4j
+@Transactional(propagation = Propagation.REQUIRED)
 public class LWarehouseFlowCoreService {
 
     private final JdbcTemplate jdbcTemplate;
@@ -78,8 +81,8 @@
         //閲囪喘鏂瑰紡锛�1锛氶泦閲囷紱2=鑷噰锛�
         short buyType = lWhFormProcure.getBuyType().shortValue();
         //閲囪喘鏃堕棿
-        Long procureTime = lWhFormProcure.getProcureTime();
-
+        Long procureTime2 = lWhFormProcure.getProcureTime();
+        Long procureTime = procureTime2 == null ? dealTime : procureTime2;
         // 鎻掑叆娴佹按鎬昏〃
         int flowInsertFlag = lWarehouseFlowService.insert(warehouseFlow);
         if (flowInsertFlag == 0) {
diff --git a/consum-base/src/main/java/com/consum/base/service/LWarehouseFlowService.java b/consum-base/src/main/java/com/consum/base/service/LWarehouseFlowService.java
index 00c4b06..501c5ec 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWarehouseFlowService.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWarehouseFlowService.java
@@ -8,10 +8,9 @@
 import com.walker.db.page.GenericPager;
 import com.walker.infrastructure.utils.StringUtils;
 import com.walker.jdbc.service.BaseServiceImpl;
-import org.springframework.stereotype.Service;
-
 import java.util.HashMap;
 import java.util.Map;
+import org.springframework.stereotype.Service;
 
 /**
  * @ClassName LWarehouseFlowService
@@ -42,7 +41,7 @@
         }
         if (StringUtils.isNotEmpty(param.getBusinessFormCode())) {
             sql.append(" AND CASE WHEN flow.BUSINESS_TYPE = 1 THEN tCaiGou.BUSINESS_FORM_CODE=:businessFormCode"
-                    + " WHEN flow.BUSINESS_TYPE = 3 THEN tFormOut.BUSINESS_FORM_CODE=:businessFormCode END");
+                + " WHEN flow.BUSINESS_TYPE = 3 THEN tFormOut.BUSINESS_FORM_CODE=:businessFormCode END");
             paramts.put("businessFormCode", param.getBusinessFormCode());
 //            sql.append(" AND CASE WHEN flow.BUSINESS_TYPE = 1 THEN flow.BUSINESS_FORM_CODE=?");
 //            params.add(param.getBusinessFormCode());
@@ -63,7 +62,7 @@
         }
         if (param.getCreatedName() != null) {
             sql.append(" AND CASE" + " WHEN flow.BUSINESS_TYPE = 1 THEN tCaiGou.BUYER_NAME LIKE :createdName"
-                    + " WHEN flow.BUSINESS_TYPE = 3 THEN tFormOut.OPERATOR_NAME LIKE :createdName END");
+                + " WHEN flow.BUSINESS_TYPE = 3 THEN tFormOut.OPERATOR_NAME LIKE :createdName END");
             paramts.put("createdName", StringUtils.CHAR_PERCENT + param.getCreatedName() + StringUtils.CHAR_PERCENT);
         }
         if (param.getDealTimeStart() != null) {
@@ -82,7 +81,7 @@
         Map<String, Object> paramts = new HashMap<>();
         if (StringUtils.isNotEmpty(param.getBusinessFormCode())) {
             sql.append("AND CASE WHEN flow.BUSINESS_TYPE = 1 THEN tCaiGou.BUSINESS_FORM_CODE=:businessFormCode"
-                    + " WHEN flow.BUSINESS_TYPE = 3 THEN tFormOut.BUSINESS_FORM_CODE=:businessFormCode END ");
+                + " WHEN flow.BUSINESS_TYPE = 3 THEN tFormOut.BUSINESS_FORM_CODE=:businessFormCode END ");
             paramts.put("businessFormCode", param.getBusinessFormCode());
         }
         if (StringUtils.isNotEmpty(param.getGoodsName())) {
@@ -101,7 +100,7 @@
 
         if (StringUtils.isNotEmpty(param.getCreateName())) {
             sql.append("AND CASE WHEN flow.BUSINESS_TYPE = 1 THEN tCaiGou.BUYER_NAME = :createdName"
-                    + " WHEN flow.BUSINESS_TYPE = 3 THEN tFormOut.OPERATOR_NAME = :createdName END ");
+                + " WHEN flow.BUSINESS_TYPE = 3 THEN tFormOut.OPERATOR_NAME = :createdName END ");
             paramts.put("createdName", param.getCreateName());
         }
         if (param.getStartTime() != null) {
@@ -222,10 +221,10 @@
             paramts.put("panDianBusinessFormCode", businessFormCode);
 
             sqlEnd.append(" and case when flow.BUSINESS_TYPE = 1 THEN tCaiGou.BUSINESS_FORM_CODE" +
-                    " WHEN ( flow.BUSINESS_TYPE = 2 OR flow.BUSINESS_TYPE = 4 OR flow.BUSINESS_TYPE = 6 ) THEN tTrans.BUSINESS_FORM_CODE" +
-                    " WHEN flow.BUSINESS_TYPE = 3 THEN tFormOut.BUSINESS_FORM_CODE" +
-                    " WHEN flow.BUSINESS_TYPE = 5 THEN tScrapped.BUSINESS_FORM_CODE" +
-                    " WHEN flow.BUSINESS_TYPE = 7 THEN tInventory.BUSINESS_FORM_CODE end =:whereBusinessFormCode");
+                " WHEN ( flow.BUSINESS_TYPE = 2 OR flow.BUSINESS_TYPE = 4 OR flow.BUSINESS_TYPE = 6 ) THEN tTrans.BUSINESS_FORM_CODE" +
+                " WHEN flow.BUSINESS_TYPE = 3 THEN tFormOut.BUSINESS_FORM_CODE" +
+                " WHEN flow.BUSINESS_TYPE = 5 THEN tScrapped.BUSINESS_FORM_CODE" +
+                " WHEN flow.BUSINESS_TYPE = 7 THEN tInventory.BUSINESS_FORM_CODE end =:whereBusinessFormCode");
             paramts.put("whereBusinessFormCode", businessFormCode);
 
 
@@ -243,15 +242,117 @@
 
         StringBuilder sql = new StringBuilder();
         sql.append(sqlQuery)
-                .append(sqlEndRecord)
-                .append(sqlCaiGou)
-                .append(sqlDiaoBo)
-                .append(sqlChuKu)
-                .append(sqlBaoFei)
-                .append(sqlPanDian)
+            .append(sqlEndRecord)
+            .append(sqlCaiGou)
+            .append(sqlDiaoBo)
+            .append(sqlChuKu)
+            .append(sqlBaoFei)
+            .append(sqlPanDian)
 
-                .append(sqlEnd);
+            .append(sqlEnd);
 
         return selectSplit(sql.toString(), paramts, param.getPageNum(), param.getPageSize(), new MapperUtil());
     }
+
+
+    public GenericPager<Map<String, Object>> queryAllBusinessFlow(LWhFormOutputQry param) {
+        StringBuilder sql = new StringBuilder("SELECT\n"
+            + "CASE WHEN flow.BUSINESS_TYPE=1 THEN tCaiGou.id \n"
+            + "WHEN (flow.BUSINESS_TYPE=2 OR flow.BUSINESS_TYPE=4 OR flow.BUSINESS_TYPE=6) THEN tTrans.id \n"
+            + "WHEN flow.BUSINESS_TYPE=3 THEN tFormOut.id \n"
+            + "WHEN flow.BUSINESS_TYPE=5 THEN tScrapped.id \n"
+            + "WHEN flow.BUSINESS_TYPE=7 THEN tInventory.id END id,\n"
+            + "\n"
+            + "CASE WHEN flow.BUSINESS_TYPE=1 THEN tCaiGou.BUSINESS_FORM_CODE \n"
+            + "WHEN (flow.BUSINESS_TYPE=2 OR flow.BUSINESS_TYPE=4 OR flow.BUSINESS_TYPE=6) THEN tTrans.BUSINESS_FORM_CODE \n"
+            + "WHEN flow.BUSINESS_TYPE=3 THEN tFormOut.BUSINESS_FORM_CODE \n"
+            + "WHEN flow.BUSINESS_TYPE=5 THEN tScrapped.BUSINESS_FORM_CODE \n"
+            + "WHEN flow.BUSINESS_TYPE=7 THEN tInventory.BUSINESS_FORM_CODE END BUSINESS_FORM_CODE,\n"
+            + "\n"
+            + "CASE WHEN flow.BUSINESS_TYPE=1 THEN tCaiGou.AGENCY_NAME \n"
+            + "WHEN (flow.BUSINESS_TYPE=2 OR flow.BUSINESS_TYPE=4 OR flow.BUSINESS_TYPE=6) THEN tTrans.OPERATOR_NAME \n"
+            + "WHEN flow.BUSINESS_TYPE=3 THEN tFormOut.AGENCY_NAME \n"
+            + "WHEN flow.BUSINESS_TYPE=5 THEN tScrapped.AGENCY_NAME \n"
+            + "WHEN flow.BUSINESS_TYPE=7 THEN tInventory.AGENCY_NAME END AGENCY_NAME,\n"
+            + "\n"
+            + "record.GOODS_TEMPLATE_NAME,\n"
+            + "record.BASE_GOODS_MODELS_NAME,\n"
+            + "record.THIS_TYPE,\n"
+            + "flow.BUSINESS_TYPE,\n"
+            + "record.THIS_COUNT,\n"
+            + "flow.DEAL_TIME,\n"
+            + "flow.OPERATOR_NAME,\n"
+            + "record.TOTAL_PRICE\n"
+            + "FROM  L_WAREHOUSE_FLOW flow\n"
+            + "LEFT JOIN L_WH_GOODS_RECORD record ON flow.id=record.WAREHOUSE_FLOW_ID\n"
+            + "LEFT JOIN L_WH_FORM_PROCURE tCaiGou ON flow.BUSINESS_TYPE=1 AND tCaiGou.id=flow.BUSINESS_FORM_ID\n"
+            + "LEFT JOIN L_WH_FORM_TRANSFER tTrans ON (flow.BUSINESS_TYPE=2 or flow.BUSINESS_TYPE=4 or flow.BUSINESS_TYPE=6) AND tTrans.id=flow.BUSINESS_FORM_ID\n"
+            + "LEFT JOIN L_WH_FORM_OUTPUT tFormOut ON flow.BUSINESS_TYPE=3 AND tFormOut.id=flow.BUSINESS_FORM_ID\n"
+            + "LEFT JOIN L_WH_FORM_INVENTORY tInventory ON flow.BUSINESS_TYPE=7 AND tInventory.id=flow.BUSINESS_FORM_ID\n"
+            + "LEFT JOIN L_WH_FORM_SCRAPPED tScrapped ON flow.BUSINESS_TYPE=5 AND tScrapped.id=flow.BUSINESS_FORM_ID\n"
+            + "LEFT JOIN base_warehouse bw ON flow.WAREHOUSE_ID = bw.id\n"
+            + "LEFT JOIN fin_sys_tenant fst ON fst.id = bw.AGENCY_ID\n"
+            + "WHERE record.id IS NOT NULL ");
+
+        HashMap<String, Object> paramts = new HashMap<>();
+        //鏈烘瀯
+        if (param.getAgencyId() != null) {
+            sql.append("AND fst.id like :agencyId ");
+            paramts.put("agencyId", param.getAgencyId() + StringUtils.CHAR_PERCENT);
+        }
+
+        //鐗╁搧鍚嶇О
+        if (StringUtils.isNotEmpty(param.getGoodsName())) {
+            sql.append(" AND record.GOODS_TEMPLATE_NAME like :goodsTemplateName");
+            paramts.put("goodsTemplateName", StringUtils.CHAR_PERCENT + param.getGoodsName() + StringUtils.CHAR_PERCENT);
+        }
+        if (param.getBaseGoodsId() != null) {
+            sql.append(" AND record.BASE_GOODS_TEMPLATE_ID=:goodsTemplateId");
+            paramts.put("goodsTemplateId", param.getBaseGoodsId());
+        }
+        //瑙勬牸鍨嬪彿
+        if (param.getBaseGoodsModelsId() != null) {
+            sql.append(" AND record.BASE_GOODS_MODELS_ID=:baseGoodsModelsId");
+            paramts.put("baseGoodsModelsId", param.getBaseGoodsModelsId());
+        }
+        // 鍚岀爜琛紝1閲囪喘鍏ュ簱 2閫�杩樺叆搴� 3璋冩嫧鍏ュ簱 4鐩樼泩鍏ュ簱 5鐢抽鍑哄簱 6璋冩嫧鍑哄簱 7鐩樹簭鍑哄簱 8鎶ュ簾鍑哄簱 9鍏朵粬鍑哄簱
+        Integer flowType = param.getStates();
+        if (flowType != null) {
+            Map<String, Short> typeByFlowType = WhBusinessEnum.getTypeByFlowType(flowType.shortValue());
+            //鏈璋冩暣绫诲瀷锛�1=璋冨锛�2=璋冨噺锛�
+            Short flowThisType = typeByFlowType.get("flowThisType");
+            //鍗曟嵁绫诲瀷 1 閲囪喘2 璋冩嫧 3鍑哄簱4閮ㄩ棬鍒嗗彂5鎶ュ簾6閮ㄩ棬鐗╁搧鍥為��浠撳簱7鐗╁搧鐩樼偣
+            Short flowBusinessType = typeByFlowType.get("flowBusinessType");
+            if (flowThisType != null) {
+                sql.append(" AND flow.THIS_TYPE=:flowThisType");
+                paramts.put("flowThisType", flowThisType);
+            }
+            if (flowBusinessType != null) {
+                sql.append(" AND flow.BUSINESS_TYPE=:flowBusinessType");
+                paramts.put("flowBusinessType", flowBusinessType);
+            }
+        }
+        // 鍗曞彿
+        String businessFormCode = param.getBusinessFormCode();
+        if (StringUtils.isNotEmpty(businessFormCode)) {
+            sql.append(" and case when flow.BUSINESS_TYPE = 1 THEN tCaiGou.BUSINESS_FORM_CODE =:whereBusinessFormCode" +
+                " WHEN ( flow.BUSINESS_TYPE = 2 OR flow.BUSINESS_TYPE = 4 OR flow.BUSINESS_TYPE = 6 ) THEN tTrans.BUSINESS_FORM_CODE =:whereBusinessFormCode" +
+                " WHEN flow.BUSINESS_TYPE = 3 THEN tFormOut.BUSINESS_FORM_CODE=:whereBusinessFormCode" +
+                " WHEN flow.BUSINESS_TYPE = 5 THEN tScrapped.BUSINESS_FORM_CODE =:whereBusinessFormCode" +
+                " WHEN flow.BUSINESS_TYPE = 7 THEN tInventory.BUSINESS_FORM_CODE =:whereBusinessFormCode end");
+            paramts.put("whereBusinessFormCode", businessFormCode);
+
+        }
+        // 鎿嶄綔鏃堕棿
+        if (param.getStartTime() != null) {
+            sql.append(" and flow.DEAL_TIME >=:dealTimeStart ");
+            paramts.put("dealTimeStart", param.getStartTime() * 1000000);
+        }
+        if (param.getEndTime() != null) {
+            sql.append(" and flow.DEAL_TIME <:dealTimeEnd ");
+            paramts.put("dealTimeEnd", param.getEndTime() * 1000000 + 240000);
+        }
+        sql.append(" ORDER BY record.DEAL_TIME desc,record.id DESC ");
+        return selectSplit(sql.toString(), paramts, param.getPageNum(), param.getPageSize(), new MapperUtil());
+    }
 }
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhFormInventoryCoreService.java b/consum-base/src/main/java/com/consum/base/service/LWhFormInventoryCoreService.java
index 62796d9..b37a1c8 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWhFormInventoryCoreService.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWhFormInventoryCoreService.java
@@ -4,27 +4,22 @@
 import com.consum.base.core.CodeGeneratorService;
 import com.consum.base.core.WhBusinessEnum;
 import com.consum.base.core.utils.IdUtil;
-import com.consum.model.po.BaseWarehouse;
-import com.consum.model.po.FinSysTenantUser;
-import com.consum.model.po.LWhFormInventory;
-import com.consum.model.po.LWhFormInventoryGoods;
-import com.consum.model.po.LWhFormOutput;
-import com.consum.model.po.LWhFormProcure;
-import com.consum.model.po.LWhFormProcureGoods;
-import com.consum.model.po.LWhProcureModel;
+import com.consum.model.po.*;
 import com.iplatform.model.po.S_user_core;
 import com.walker.infrastructure.utils.NumberGenerator;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+import org.springframework.util.CollectionUtils;
+
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.transaction.interceptor.TransactionAspectSupport;
-import org.springframework.util.CollectionUtils;
 
 /**
  * @ClassName LWhFormInventoryCoreService
@@ -34,6 +29,7 @@
  **/
 @Slf4j
 @Service
+@Transactional(propagation = Propagation.REQUIRED)
 public class LWhFormInventoryCoreService {
 
     private LWhFormInventoryGoodsServiceImpl lWhFormInventoryGoods;
@@ -51,17 +47,17 @@
 
     @Autowired
     public LWhFormInventoryCoreService(LWhFormInventoryGoodsServiceImpl lWhFormInventoryGoods,
-        LWhFormOutputCoreService lWhFormOutputCoreService,
-        CodeGeneratorService codeGeneratorService,
-        LWhFormProcureService lWhFormProcureService,
-        BaseWarehouseServiceImpl baseWarehouseService,
-        LWhFormProcureGoodsService lWhFormProcureGoodsService,
-        LWhProcureModelService lWhProcureModelService,
-        BaseGoodsTemplateServiceImpl baseGoodsTemplateService,
-        LWhGoodsService lWhGoodsService,
-        LWhFormInventoryServiceImpl lWhFormInventoryService,
-        LWhFormProcureCoreService lWhFormProcureCoreService,
-        LWhFormOutputServiceImpl lWhFormOutputService
+                                       LWhFormOutputCoreService lWhFormOutputCoreService,
+                                       CodeGeneratorService codeGeneratorService,
+                                       LWhFormProcureService lWhFormProcureService,
+                                       BaseWarehouseServiceImpl baseWarehouseService,
+                                       LWhFormProcureGoodsService lWhFormProcureGoodsService,
+                                       LWhProcureModelService lWhProcureModelService,
+                                       BaseGoodsTemplateServiceImpl baseGoodsTemplateService,
+                                       LWhGoodsService lWhGoodsService,
+                                       LWhFormInventoryServiceImpl lWhFormInventoryService,
+                                       LWhFormProcureCoreService lWhFormProcureCoreService,
+                                       LWhFormOutputServiceImpl lWhFormOutputService
 
     ) {
         this.lWhFormInventoryGoods = lWhFormInventoryGoods;
@@ -104,8 +100,8 @@
             return "娌℃湁鎵惧埌鐩樼偣鍗曠粨鏋滅墿鍝�";
         }
         Map<Integer, List<LWhFormInventoryGoods>> inventoryGoodsMap = lWhFormInventoryGoods.stream()
-            .filter(goods -> goods.getInventoryResult() == 2 || goods.getInventoryResult() == 3)
-            .collect(Collectors.groupingBy(LWhFormInventoryGoods::getInventoryResult));
+                .filter(goods -> goods.getInventoryResult() == 2 || goods.getInventoryResult() == 3)
+                .collect(Collectors.groupingBy(LWhFormInventoryGoods::getInventoryResult));
         if (CollectionUtils.isEmpty(lWhFormInventoryGoods)) {
 //            rtnMap.put("status", true);
             return null;
@@ -131,8 +127,8 @@
 //                    rtnMap.put("errMsg", "鍒涘缓鍏ュ簱鍗曞け璐�");
                     return "鍒涘缓鍏ュ簱鍗曞け璐�";
                 }
-                Long inFormByInventoryId = (Long) inOutMap.get("inId");
                 inOutMap.putAll(rkMap);
+                Long inFormByInventoryId = (Long) inOutMap.get("inId");
                 String errMsg = lWhFormProcureCoreService.doProcure(inFormByInventoryId, currentUser);
                 if (errMsg != null) {
                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@@ -156,7 +152,7 @@
                 inOutMap.putAll(ckMap);
                 Long lWhFormOutputId = (Long) inOutMap.get("outId");
                 //2.鏍规嵁鍑哄簱鍗曞嚭搴�
-                Long lWarehouseFlowId = lWhFormOutputCoreService.outFormByTransId(lWhFormOutputId, WhBusinessEnum.CAIGOU, currentUser, stopTime);
+                Long lWarehouseFlowId = lWhFormOutputCoreService.outFormByTransId(lWhFormOutputId, WhBusinessEnum.PANDIAN, currentUser, stopTime);
                 if (lWarehouseFlowId == null) {
                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 //                    throw new RuntimeException("鍒涘缓鍑哄簱鍗曞け璐�");
@@ -187,7 +183,7 @@
      * @param currentUser
      */
     private Map<String, Object> createInFormByInventoryId(Long warehouseId, Long procureTime, List<LWhFormInventoryGoods> inventoryGoodsList,
-        S_user_core currentUser) {
+                                                          S_user_core currentUser) {
         if (CollectionUtils.isEmpty(inventoryGoodsList)) {
             return null;
         }
@@ -268,7 +264,7 @@
      * @param currentUser
      */
     private Map<String, Object> createOutFormByInventoryId(Long warehouseId, Long procureTime, List<LWhFormInventoryGoods> inventoryGoodsList,
-        S_user_core currentUser, FinSysTenantUser sysInfo) {
+                                                           S_user_core currentUser, FinSysTenantUser sysInfo) {
         if (CollectionUtils.isEmpty(inventoryGoodsList)) {
             return null;
         }
@@ -277,6 +273,7 @@
         //鍑哄叆搴搃d
         long lWhFormOutputId = IdUtil.generateId();
         lWhFormOutput.setId(lWhFormOutputId);
+        lWhFormOutput.setOutWarehouseType(0);
         lWhFormOutput.setWarehouseId(warehouseId);
         //鏍规嵁浠撳簱id鏌ヨ浠撳簱
         BaseWarehouse warehouse = this.baseWarehouseService.getById(warehouseId);
@@ -301,6 +298,7 @@
         if (flag1 != 1) {
             return null;
         }
+        ArrayList<LWhProcureModel> lWhProcureModels = new ArrayList<>();
         for (LWhFormInventoryGoods inventoryGoods : inventoryGoodsList) {
             Long baseGoodsModelsId = inventoryGoods.getBaseGoodsModelsId();
             Integer counts = inventoryGoods.getErrorCounts();
@@ -312,11 +310,16 @@
             //鏂板L_WH_PROCURE_MODEL璁板綍
             LWhProcureModel lWhProcureModel = new LWhProcureModel();
             lWhProcureModel.setId(IdUtil.generateId());
-            lWhProcureModel.setBusinessType(3);
+            lWhProcureModel.setBusinessType(WhBusinessEnum.CHUKU.getValue() + 0);
+            lWhProcureModel.setBusinessId(lWhFormOutputId);
             lWhProcureModel.setBaseGoodsModelsId(baseGoodsModelsId);
             lWhProcureModel.setCounts(counts);
             lWhProcureModel.setWorehouseCount(goodsNum);
-            lWhProcureModelService.insert(lWhProcureModel);
+//            lWhProcureModelService.insert(lWhProcureModel);
+            lWhProcureModels.add(lWhProcureModel);
+        }
+        if (!CollectionUtils.isEmpty(lWhProcureModels)) {
+            lWhProcureModelService.insertBatch(lWhProcureModels);
         }
         HashMap<String, Object> rtnMap = new HashMap<>();
         rtnMap.put("outId", lWhFormOutputId);
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhFormInventoryGoodsServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/LWhFormInventoryGoodsServiceImpl.java
index 3292f01..c6f4220 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWhFormInventoryGoodsServiceImpl.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWhFormInventoryGoodsServiceImpl.java
@@ -8,6 +8,8 @@
 import java.util.List;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * @Description 鐩樼偣鍗曠墿鍝�
@@ -16,6 +18,7 @@
  */
 @Slf4j
 @Service
+@Transactional(propagation = Propagation.REQUIRED)
 public class LWhFormInventoryGoodsServiceImpl extends BaseServiceImpl {
 
     /**
@@ -56,18 +59,18 @@
             Integer inventoryCount = inventoryGoods.getInventoryCount();
             Integer realNum = inventoryGoods.getRealNum();
             if (realNum != null) {
-                int errorCount = inventoryCount - realNum;
+                int errorCount = realNum - inventoryCount;
                 lWhFormInventoryGoods.setInventoryCounts(realNum);
-                lWhFormInventoryGoods.setErrorCounts(errorCount);
+                lWhFormInventoryGoods.setErrorCounts(Math.abs(errorCount));
                 //鐩樼偣缁撴灉锛�1=姝e父锛�2=鐩樼泩锛�3=鐩樹簭锛�
                 lWhFormInventoryGoods.setInventoryResult((errorCount > 0) ? 2 : (errorCount < 0) ? 3 : 1);
-                goodsList.add(lWhFormInventoryGoods);
+                // TODO 鎵归噺鏇存柊
+                this.update(lWhFormInventoryGoods);
+//                goodsList.add(lWhFormInventoryGoods);
             }
-//            this.update(lWhFormInventoryGoods);
 
         }
-        return this.updateBatch(goodsList);
-//        return 1;
+        return 1;
     }
 
     /**
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhFormInventoryServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/LWhFormInventoryServiceImpl.java
index 45982fd..02129e7 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWhFormInventoryServiceImpl.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWhFormInventoryServiceImpl.java
@@ -16,6 +16,7 @@
 import com.consum.model.po.FinSysTenant;
 import com.consum.model.po.FinSysTenantUser;
 import com.consum.model.po.LWhFormInventory;
+import com.iplatform.model.po.S_user_core;
 import com.walker.db.page.GenericPager;
 import com.walker.infrastructure.utils.DateUtils;
 import com.walker.infrastructure.utils.StringUtils;
@@ -27,6 +28,7 @@
 import org.apache.commons.compress.utils.Lists;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
@@ -44,15 +46,14 @@
     @Autowired
     private BaseWarehouseServiceImpl baseWarehouseService;
     @Autowired
-    private FinSysTenantUserServiceImpl finSysTenantUserService;
-    @Autowired
     private LWhFormInventoryGoodsServiceImpl inventoryGoodsService;
-    @Autowired
-    private BaseGoodsTemplateServiceImpl baseGoodsTemplateService;
     @Autowired
     private LWhGoodsService lWhGoodsService;
     @Autowired
     private FinSysTenantServiceImpl finSysTenantService;
+    @Autowired
+    @Lazy
+    private LWhFormInventoryCoreService lWhFormInventoryCoreService;
 
 
     private static final String QUERY_LIST = "select * from l_wh_form_inventory where 1=1 ";
@@ -180,20 +181,39 @@
 
     }
 
+
     /**
      * 淇濆瓨鐩樼偣淇℃伅
      *
      * @author 鍗㈠簡闃�
      * @date 2023/10/31
      */
-    public int updateInventoryInfo(LWhFormInventoryParam dto, Integer state) {
+    public int updateInventoryInfo(LWhFormInventoryParam dto, Integer state, S_user_core currentUser, FinSysTenantUser sysInfo) {
         //1.鏍规嵁鐩樼偣鍗昳d鏌ヨ鐩樼偣鍗�
         LWhFormInventory lWhFormInventory = this.get(new LWhFormInventory(dto.getId()));
         if (lWhFormInventory == null) {
             log.error("鏍规嵁鐩樼偣鍗昳d鏌ヨ鐩樼偣鍗曞け璐�");
             return 0;
         }
-        //2.淇敼鐩樼偣鍗�
+        //娣诲姞鐩樼偣鍗曠墿鍝�
+        List<FormInventoryGoodsVO> inventoryGoodsList = dto.getInventoryGoodsList();
+        if (CollectionUtils.isEmpty(inventoryGoodsList)) {
+            log.error("鐩樼偣鍗曠墿鍝佷负绌�");
+            return 0;
+        }
+        this.inventoryGoodsService.updateInventoryGoods(inventoryGoodsList);
+        //淇敼鐩樼偣鍗�
+        if (state == 2) {
+            //瀹屾垚鐩樼偣鏃惰缃畬鎴愮洏鐐规椂闂�
+            lWhFormInventory.setStopTime(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
+
+            //瀹屾垚鐩樼偣鏃惰缃畬鎴愮洏鐐规椂闂�
+            String inOutFormByInventoryId = lWhFormInventoryCoreService.createInOutFormByInventoryId(dto.getId(), currentUser, sysInfo);
+            if (!StringUtils.isEmpty(inOutFormByInventoryId)) {
+                log.error(inOutFormByInventoryId);
+                return 0;
+            }
+        }
         lWhFormInventory.setStates(state);
         lWhFormInventory.setInventoryDate(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
         int flag1 = this.update(lWhFormInventory);
@@ -201,13 +221,7 @@
             log.error("淇敼鐩樼偣鍗曞け璐�");
             return 0;
         }
-        //3.娣诲姞鐩樼偣鍗曠墿鍝�
-        List<FormInventoryGoodsVO> inventoryGoodsList = dto.getInventoryGoodsList();
-        if (CollectionUtils.isEmpty(inventoryGoodsList)) {
-            log.error("鐩樼偣鍗曠墿鍝佷负绌�");
-            return 0;
-        }
-        this.inventoryGoodsService.updateInventoryGoods(inventoryGoodsList);
+
         return 1;
     }
 
@@ -326,6 +340,7 @@
                 formInventoryDetailVO.getInventoryResult() == null ? null : (formInventoryDetailVO.getInventoryResult() == 2 ? "鐩樼泩" : "鐩樹簭"));
             formInventoryDetailVO.setInventoryType(
                 formInventoryDetailVO.getInventoryResult() == null ? null : (formInventoryDetailVO.getInventoryResult() == 2 ? "鐩樼泩鍏ュ簱" : "鐩樹簭鍑哄簱"));
+            formInventoryDetailVO.setWarehouseFormCode(formInventoryDetailVO.getWarehouseFormCode());
             result.add(formInventoryDetailVO);
         });
         pageUtil.setDatas(result);
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhFormOutputCoreService.java b/consum-base/src/main/java/com/consum/base/service/LWhFormOutputCoreService.java
index 0811cfc..dd3ce96 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWhFormOutputCoreService.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWhFormOutputCoreService.java
@@ -14,6 +14,7 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
@@ -29,7 +30,7 @@
  **/
 @Slf4j
 @Service
-@Transactional(rollbackFor = Exception.class)
+@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
 public class LWhFormOutputCoreService {
 
     private BaseGoodsTemplateServiceImpl baseGoodsTemplateService;
@@ -189,21 +190,26 @@
         //閲囪喘鏂瑰紡锛�1锛氶泦閲囷紱2=鑷噰锛�
         Integer buyTypeT = null;
         Integer modGoodsTransferingStatusT = null;
-        String outputCode = lWhFormOutput.getOutputCode();
-        if ((BaseWarehouseParam1.In_OutPutTypeEnum.Transfer_Output.getValue() + "").equals(outputCode)) {
+        short businessTypeValue = businessType.getValue();
+        if (BaseWarehouseParam1.In_OutPutTypeEnum.Transfer_Output.getValue()  == businessTypeValue) {
             //璋冩嫧鍑哄簱
             queryModelStatusT = 1;
             buyTypeT = 1;
             lWarehouseFlowBusinessId = lWhFormOutput.getTransBusinessId();
             modGoodsTransferingStatusT = 0;
-        } else if ((BaseWarehouseParam1.In_OutPutTypeEnum.Dept_Lending_Out.getValue() + "").equals(outputCode)) {
+        } else if (BaseWarehouseParam1.In_OutPutTypeEnum.Dept_Lending_Out.getValue()  == businessTypeValue) {
             //  閮ㄩ棬浠撳簱 鍒嗗彂鍑哄簱
 //            queryModelStatusT = 2;
-        } else if ((BaseWarehouseParam1.In_OutPutTypeEnum.Fragmentary_Output.getValue() + "").equals(outputCode)) {
+        } else if (BaseWarehouseParam1.In_OutPutTypeEnum.Fragmentary_Output.getValue()  == businessTypeValue) {
             //  闆舵槦鍑哄簱
             queryModelStatusT = 1;
             buyTypeT = null;
             modGoodsTransferingStatusT = 4;
+        }else if (BaseWarehouseParam1.In_OutPutTypeEnum.Inventory_Output.getValue()  == businessTypeValue) {
+            //  鐩樼偣鍑哄簱
+            queryModelStatusT = 1;
+            buyTypeT = null;
+            modGoodsTransferingStatusT = 4;
         }
         Integer queryModelStatus = queryModelStatusT;
         Integer buyType = buyTypeT;
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhFormProcureCoreService.java b/consum-base/src/main/java/com/consum/base/service/LWhFormProcureCoreService.java
index 1a2f7c9..c06992e 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWhFormProcureCoreService.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWhFormProcureCoreService.java
@@ -10,6 +10,7 @@
 import com.walker.infrastructure.utils.NumberGenerator;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
@@ -24,6 +25,7 @@
  **/
 @Service
 @Slf4j
+@Transactional(propagation= Propagation.REQUIRED)
 public class LWhFormProcureCoreService {
     @Resource
     private LWhProcureModelService lWhProcureModelService;
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhFormScrappedCoreService.java b/consum-base/src/main/java/com/consum/base/service/LWhFormScrappedCoreService.java
index 5dfc08d..6e3cdcc 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWhFormScrappedCoreService.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWhFormScrappedCoreService.java
@@ -14,6 +14,7 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
@@ -30,6 +31,7 @@
  **/
 @Service
 @Slf4j
+@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
 public class LWhFormScrappedCoreService {
 
     private GoodsBaseServiceImpl goodsBaseService;
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhFormScrappedServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/LWhFormScrappedServiceImpl.java
index acc6e5c..6449cb7 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWhFormScrappedServiceImpl.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWhFormScrappedServiceImpl.java
@@ -30,6 +30,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import java.util.stream.Collectors;
 import org.apache.commons.compress.utils.Lists;
 import org.springframework.beans.BeanUtils;
@@ -65,7 +66,7 @@
     @Autowired
     private LWhFormScrappedCoreService lWhFormScrappedCoreService;
 
-    private static String QUERY_LIST = "SELECT fs.* FROM l_wh_form_scrapped fs left join l_wh_form_scrapped_goods fsg on fs.id = fsg.FORM_SCRAPPED_ID WHERE 1 = 1 ";
+    private static String QUERY_LIST = "SELECT DISTINCT fs.* FROM l_wh_form_scrapped fs left join l_wh_form_scrapped_goods fsg on fs.id = fsg.FORM_SCRAPPED_ID WHERE 1 = 1 ";
 
     private static final String QUERY_BF_DETAIL_LIST = "select fs.id,fs.BUSINESS_FORM_CODE,fsg.GOODS_TEMPLATE_NAME,fsg.BASE_GOODS_MODELS_NAME,fsg.COUNTS,"
         + "fs.AGENCY_NAME,OPERATOR_NAME,DEAL_TIME from l_wh_form_scrapped fs "
@@ -80,29 +81,47 @@
      * @return 1.鏂板鎶ュ簾鍗�  2.鏂板鎶ュ簾鍗曠墿鍝�
      */
 
-    public int add(LWhFormScrappedParam param, S_user_core currentUser, FinSysTenantUser sysInfo) {
+    public int add(LWhFormScrappedParam param, int warehouseType, S_user_core currentUser, FinSysTenantUser sysInfo) {
         //1.鏂板鎶ュ簾鍗曡褰�
         LWhFormScrapped lWhFormScrapped = new LWhFormScrapped();
         //鎶ュ簾鍗昳d
         long lWhFormScrappedId = IdUtil.generateId();
         lWhFormScrapped.setId(lWhFormScrappedId);
         lWhFormScrapped.setBusinessFormCode(codeGeneratorService.createBusinessFormCode(CodeGeneratorEnum.Scrapped));
-        lWhFormScrapped.setWarehouseType(0);
-        Long warehouseId = param.getWarehouseId();
-        lWhFormScrapped.setWarehouseId(warehouseId);
-        //鏍规嵁浠撳簱id鏌ヨ浠撳簱
-        BaseWarehouse warehouse = this.baseWarehouseService.getById(warehouseId);
-        if (warehouse == null) {
-            log.error("浠撳簱涓嶅瓨鍦�");
-            return 0;
+        lWhFormScrapped.setWarehouseType(warehouseType);
+
+        // 鍏敤
+        Long warehouseId = null;
+        //浠撳簱鍚嶇О
+        String wareHouseName = null;
+        if (warehouseType == 0) {
+            warehouseId = param.getWarehouseId();
+            //鏍规嵁浠撳簱id鏌ヨ浠撳簱
+            BaseWarehouse warehouse = this.baseWarehouseService.getById(warehouseId);
+            if (warehouse == null) {
+                log.error("浠撳簱涓嶅瓨鍦�");
+                return 0;
+            }
+            wareHouseName = warehouse.getWarehouseName();
+        } else {
+            // 鏌ヨ閮ㄩ棬鍚嶇О
+            warehouseId = param.getDepartmentId();
+            FinSysTenantDepartment sysTenantDepartment = departmentService.getById(warehouseId);
+            if (sysTenantDepartment == null) {
+                log.error("閮ㄩ棬涓嶅瓨鍦�");
+                return 0;
+            }
+            wareHouseName = sysTenantDepartment.getName();
         }
-        lWhFormScrapped.setWarehouseName(warehouse.getWarehouseName());
+        lWhFormScrapped.setWarehouseId(warehouseId);
+        lWhFormScrapped.setWarehouseName(wareHouseName);
         lWhFormScrapped.setAgencyId(Long.valueOf(sysInfo.getTenantId()));
         lWhFormScrapped.setAgencyName(sysInfo.getTenantName());
         lWhFormScrapped.setOperatorId(sysInfo.getSysUserId());
         lWhFormScrapped.setOperatorName(sysInfo.getUserName());
         lWhFormScrapped.setDealTime(param.getDealTime());
         lWhFormScrapped.setStates(0);
+        lWhFormScrapped.setUploadFiles(param.getUploadFiles());
         //鏍规嵁閮ㄩ棬id鏌ヨ閮ㄩ棬
         FinSysTenantDepartment department = this.departmentService.getById(sysInfo.getSysDeptId());
         if (department != null) {
@@ -147,7 +166,7 @@
                 LWhFormScrappedGoods scrappedGoods = new LWhFormScrappedGoods();
                 scrappedGoods.setId(IdUtil.generateId());
                 //鏍规嵁鐗╁搧鍨嬪彿鏌ヨ鐗╁搧搴撳瓨
-                int goodsNum = this.lWhGoodsService.queryGoodsModelNum(0, warehouseId, scrappedGoods.getBaseGoodsModelsId(), 1, null);
+                int goodsNum = this.lWhGoodsService.queryGoodsModelNum(warehouseType, warehouseId, scrappedGoods.getBaseGoodsModelsId(), 1, null);
                 if (params.getCounts() > goodsNum) {
                     log.error("鎶ュ簾鏁伴噺澶т簬搴撳瓨鏁伴噺");
                     return 0;
@@ -255,6 +274,16 @@
             formScrappedGoodsVO.setBaseGoodsTemplateId(baseGoodsTemplateId);
             formScrappedGoodsVO.setGoodsName(lWhFormScrappedGoods.getGoodsTemplateName());
 
+            String sql = "select CATEGORY_NAME from base_goods_template where id = :id";
+            Map<String, Object> param = new HashMap<>();
+            param.put("id", baseGoodsTemplateId);
+            List<Map<String, Object>> goodTemplate = this.select(sql, param, new MapperUtil());
+            if (!CollectionUtils.isEmpty(goodTemplate)) {
+                Optional<Map<String, Object>> first = goodTemplate.stream().findFirst();
+                Map<String, Object> objectMap = first.get();
+                formScrappedGoodsVO.setCategoryName(objectMap.get("categoryName").toString());
+            }
+
             List<GoodsModelVO> goodsModelList = Lists.newArrayList();
             goodsList.forEach(item -> {
                 GoodsModelVO goodsModelVO = new GoodsModelVO();
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhFormTransferCoreService.java b/consum-base/src/main/java/com/consum/base/service/LWhFormTransferCoreService.java
index ebe999b..c5573dc 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWhFormTransferCoreService.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWhFormTransferCoreService.java
@@ -11,6 +11,7 @@
 import com.walker.infrastructure.utils.NumberGenerator;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
@@ -29,7 +30,7 @@
  **/
 @Service
 @Slf4j
-@Transactional(rollbackFor = Exception.class)
+@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
 public class LWhFormTransferCoreService {
 
     @Resource
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhGoodsService.java b/consum-base/src/main/java/com/consum/base/service/LWhGoodsService.java
index 32b6f70..4aa7b31 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWhGoodsService.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWhGoodsService.java
@@ -1,5 +1,6 @@
 package com.consum.base.service;
 
+import com.consum.base.core.utils.MapperUtil;
 import com.walker.infrastructure.utils.CollectionUtils;
 import com.walker.jdbc.service.BaseServiceImpl;
 import org.apache.commons.lang3.StringUtils;
@@ -239,7 +240,7 @@
     public int modGoodsTransfering(List<Long> whGoods, Integer warehouseType, Long toWarehouseId, String toWarehouseName, Integer states) {
         StringBuilder sql = new StringBuilder(MOD_GOODS_TRANSFERING_PREFIX);
         ArrayList<Object> params = new ArrayList<>();
-        if (toWarehouseId != null) {
+        if (warehouseType != null) {
             sql.append(", WAREHOUSE_TYPE=?");
             params.add(warehouseType);
         }
@@ -260,4 +261,16 @@
         return update(sql.toString(), params.toArray());
     }
 
+    private static String GOODS_NUM_PRICE = "SELECT t.tenantId,count(id) total_Num,count(CASE WHEN STATES=2 THEN 1 END) xia_fa_num,IFNULL(round(sum(PRICE)/1000000,2),0) total_price,IFNULL(ROUND(count(CASE WHEN STATES=2 THEN 1 END)/count(id),4),0)*100 AS zhan_you_percent,count(CASE COST_TYPE WHEN 1 THEN 1 END) a_total_Num,count(CASE COST_TYPE WHEN 2 THEN 1 END) b_total_Num,count(CASE COST_TYPE WHEN 3 THEN 1 END) c_total_Num FROM (SELECT tCangKu.tenantId,tKuCun.id,tKuCun.STATES,tKuCun.COST_TYPE,tKuCun.price FROM (SELECT tenant.id tenantId,tenant.NAME AS org_name,ware.*FROM fin_sys_tenant tenant RIGHT JOIN ( SELECT 0 WAREHOUSE_TYPE,id,AGENCY_ID,WAREHOUSE_NAME FROM BASE_WAREHOUSE UNION ALL SELECT 1 WAREHOUSE_TYPE,id,TENANT_ID AGENCY_ID,`NAME` WAREHOUSE_NAME FROM fin_sys_tenant_department) ware ON tenant.id=ware.AGENCY_ID WHERE 1=1 ";
+    private static String GOODS_NUM_PRICE_END = ") tCangKu LEFT JOIN L_WH_GOODS tKuCun ON tCangKu.WAREHOUSE_TYPE=tKuCun.WAREHOUSE_TYPE AND tCangKu.id=tKuCun.WAREHOUSE_ID AND tKuCun.STATES BETWEEN 1 AND 2) t GROUP BY t.tenantId";
+
+    //鏈烘瀯
+    public List<Map<String, Object>> getGoodsNumPrice(Long agencyId) {
+        StringBuilder sql = new StringBuilder(GOODS_NUM_PRICE);
+        Map<String, Object> paramts = new HashMap<>();
+        sql.append(" and tenant.id=:agencyId");
+        paramts.put("agencyId", agencyId);
+        return select(sql.append(GOODS_NUM_PRICE_END).toString(), paramts, new MapperUtil());
+    }
+
 }
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhWarningServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/LWhWarningServiceImpl.java
index a0a051d..e063677 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWhWarningServiceImpl.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWhWarningServiceImpl.java
@@ -33,8 +33,8 @@
         }
         //鏈烘瀯
         if (param.getAgencyId() != null) {
-            sql.append(" and left(ware.AGENCY_ID, length(:lengthAgencyId)) = :agencyId");
-            paramts.put("lengthAgencyId", param.getAgencyId());
+            sql.append(" and ware.AGENCY_ID=:agencyId");
+//            paramts.put("lengthAgencyId", param.getAgencyId());
             paramts.put("agencyId", param.getAgencyId());
         }
         //浠撳簱绫诲瀷
@@ -67,6 +67,10 @@
             sql.append(" AND cate.CLASSIFICATION=':costType'");
             paramts.put("costType", costType);
         }
+        if (param.getWarningType() != null) {
+            sql.append(" AND wareWarn.WARNING_TYPE=:warningType");
+            paramts.put("warningType", param.getWarningType());
+        }
 
         sql.append(" ORDER BY wareWarn.DEAL_TIME DESC ");
 
diff --git a/consum-model-pojo/src/main/java/com/consum/model/po/FinSysTenantUser_mapper.java b/consum-model-pojo/src/main/java/com/consum/model/po/FinSysTenantUser_mapper.java
index aaf437a..fbab27f 100644
--- a/consum-model-pojo/src/main/java/com/consum/model/po/FinSysTenantUser_mapper.java
+++ b/consum-model-pojo/src/main/java/com/consum/model/po/FinSysTenantUser_mapper.java
@@ -49,7 +49,7 @@
     public static final String AgentJid = "agent_jid";
     public static final String WorkgroupJid = "workgroup_jid";
     public static final String ClientNumber = "client_number";
-    public static final String ClientPwd = "client_pwd";
+    public static final String ClientPd = "client_pwd";
     public static final String TenantName = "tenant_name";
     public static final String Lv = "lv";
     public static final String SupplierId = "supplier_Id";
@@ -225,7 +225,7 @@
         ib.set(AgentJid, this.getAgentJid(), this.isset_agentJid);
         ib.set(WorkgroupJid, this.getWorkgroupJid(), this.isset_workgroupJid);
         ib.set(ClientNumber, this.getClientNumber(), this.isset_clientNumber);
-        ib.set(ClientPwd, this.getClientPwd(), this.isset_clientPwd);
+        ib.set(ClientPd, this.getClientPwd(), this.isset_clientPwd);
         return ib.genMapSql();
     }
 
@@ -258,7 +258,7 @@
         ub.set(AgentJid, this.getAgentJid(), this.isset_agentJid);
         ub.set(WorkgroupJid, this.getWorkgroupJid(), this.isset_workgroupJid);
         ub.set(ClientNumber, this.getClientNumber(), this.isset_clientNumber);
-        ub.set(ClientPwd, this.getClientPwd(), this.isset_clientPwd);
+        ub.set(ClientPd, this.getClientPwd(), this.isset_clientPwd);
         ub.where(this.getPkName_(), this.getPkValue_());
         return ub.genMapSql();
     }
@@ -292,7 +292,7 @@
         ub.set(AgentJid, this.getAgentJid(), this.isset_agentJid);
         ub.set(WorkgroupJid, this.getWorkgroupJid(), this.isset_workgroupJid);
         ub.set(ClientNumber, this.getClientNumber(), this.isset_clientNumber);
-        ub.set(ClientPwd, this.getClientPwd(), this.isset_clientPwd);
+        ub.set(ClientPd, this.getClientPwd(), this.isset_clientPwd);
         return ub.genMapSql(where, parameters);
     }
 
@@ -325,7 +325,7 @@
         ub.set(AgentJid, this.getAgentJid(), this.isset_agentJid);
         ub.set(WorkgroupJid, this.getWorkgroupJid(), this.isset_workgroupJid);
         ub.set(ClientNumber, this.getClientNumber(), this.isset_clientNumber);
-        ub.set(ClientPwd, this.getClientPwd(), this.isset_clientPwd);
+        ub.set(ClientPd, this.getClientPwd(), this.isset_clientPwd);
         return ub.genArraySql(where, parameters);
     }
 
@@ -573,7 +573,7 @@
         if (columnIndex > 0) {
             fin_sys_tenant_user.setClientNumber(rs.getString(columnIndex));
         }
-        columnIndex = resultSetUtils.findColumn(rs, FinSysTenantUser_mapper.ClientPwd);
+        columnIndex = resultSetUtils.findColumn(rs, FinSysTenantUser_mapper.ClientPd);
         if (columnIndex > 0) {
             fin_sys_tenant_user.setClientPwd(rs.getString(columnIndex));
         }
diff --git a/deploy-jar-single/pom.xml b/deploy-jar-single/pom.xml
index f56e3cf..19e1ffe 100644
--- a/deploy-jar-single/pom.xml
+++ b/deploy-jar-single/pom.xml
@@ -95,7 +95,12 @@
 <!--            <groupId>com.iplatform</groupId>-->
 <!--            <artifactId>iplatform-report</artifactId>-->
 <!--        </dependency>-->
-
+        <!-- 閰嶇疆鏂囦欢鍔犲瘑 -->
+        <dependency>
+            <groupId>com.github.ulisesbocchio</groupId>
+            <artifactId>jasypt-spring-boot-starter</artifactId>
+            <version>2.1.0</version>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/deploy-jar-single/src/main/java/com/consum/test/CodeGeneratorServiceTest.java b/deploy-jar-single/src/main/java/com/consum/test/CodeGeneratorServiceTest.java
index 7321ad7..9704716 100644
--- a/deploy-jar-single/src/main/java/com/consum/test/CodeGeneratorServiceTest.java
+++ b/deploy-jar-single/src/main/java/com/consum/test/CodeGeneratorServiceTest.java
@@ -1,46 +1,46 @@
-package com.consum.test;
-
-import com.consum.ConsumApplication;
-import com.consum.base.core.CodeGeneratorEnum;
-import com.consum.base.core.CodeGeneratorService;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = {ConsumApplication.class})
-public class CodeGeneratorServiceTest {
-
-    @Autowired
-    private CodeGeneratorService service;
-
-    @Test
-    public void createWarehouseCode(){
-       for (int i=0;i<5;i++){
-           String code =service.createWarehouseCode();
-           System.out.println(code);
-       }
-    }
-
+//package com.consum.test;
+//
+//import com.consum.ConsumApplication;
+//import com.consum.base.core.CodeGeneratorEnum;
+//import com.consum.base.core.CodeGeneratorService;
+//import org.junit.Test;
+//import org.junit.runner.RunWith;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.boot.test.context.SpringBootTest;
+//import org.springframework.test.context.junit4.SpringRunner;
+//
+//
+//@RunWith(SpringRunner.class)
+//@SpringBootTest(classes = {ConsumApplication.class})
+//public class CodeGeneratorServiceTest {
+//
+//    @Autowired
+//    private CodeGeneratorService service;
+//
 //    @Test
-//    public void createGoodsTemplateCode(){
-//        String[] prefixs =  new String[] {"A","B","C","A","B"};
-//        int[] leis = new int[]{1,2,2,1,2};
+//    public void createWarehouseCode(){
+//       for (int i=0;i<5;i++){
+//           String code =service.createWarehouseCode();
+//           System.out.println(code);
+//       }
+//    }
+//
+////    @Test
+////    public void createGoodsTemplateCode(){
+////        String[] prefixs =  new String[] {"A","B","C","A","B"};
+////        int[] leis = new int[]{1,2,2,1,2};
+////        for (int i=0;i<5;i++){
+////            String code =service.createGoodsTemplateCode(prefixs[i],leis[i]);
+////            System.out.println(code);
+////        }
+////    }
+//
+//    @Test
+//    public void createBusinessFormCode(){
 //        for (int i=0;i<5;i++){
-//            String code =service.createGoodsTemplateCode(prefixs[i],leis[i]);
+//            String code =service.createBusinessFormCode(CodeGeneratorEnum.Transfer);
 //            System.out.println(code);
 //        }
 //    }
-
-    @Test
-    public void createBusinessFormCode(){
-        for (int i=0;i<5;i++){
-            String code =service.createBusinessFormCode(CodeGeneratorEnum.Transfer);
-            System.out.println(code);
-        }
-    }
-
-}
+//
+//}
diff --git a/deploy-jar-single/src/main/java/com/consum/test/base/Base_Category.java b/deploy-jar-single/src/main/java/com/consum/test/base/Base_Category.java
index 772d042..653b689 100644
--- a/deploy-jar-single/src/main/java/com/consum/test/base/Base_Category.java
+++ b/deploy-jar-single/src/main/java/com/consum/test/base/Base_Category.java
@@ -1,37 +1,37 @@
-package com.consum.test.base;
-
-import com.consum.ConsumApplication;
-import com.consum.base.core.data.Base_CategoryService;
-import com.consum.model.po.BaseCategory;
-import com.walker.infrastructure.utils.NumberGenerator;
-import com.walker.jdbc.BaseDao;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = {ConsumApplication.class})
-public class Base_Category {
-    @Autowired
-    private Base_CategoryService service;
-
-    @Test
-    public void addFirstCategory(){
-        for (int ii =0;ii <10;ii++){
-            Long id = NumberGenerator.getLongSequenceNumber();
-            for (int i=0;i<1000;i++){
-                service.addFirstCategory(id);
-            }
-        }
-    }
-    @Test
-    public void addSecondCategory(){
-        service.addSecondCategory(12624043866144l);
-    }
-    @Test
-    public void addThirdCategory(){
-        service.addThirdCategory(12838134761035l);
-    }
-}
+//package com.consum.test.base;
+//
+//import com.consum.ConsumApplication;
+//import com.consum.base.core.data.Base_CategoryService;
+//import com.consum.model.po.BaseCategory;
+//import com.walker.infrastructure.utils.NumberGenerator;
+//import com.walker.jdbc.BaseDao;
+//import org.junit.Test;
+//import org.junit.runner.RunWith;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.boot.test.context.SpringBootTest;
+//import org.springframework.test.context.junit4.SpringRunner;
+//
+//@RunWith(SpringRunner.class)
+//@SpringBootTest(classes = {ConsumApplication.class})
+//public class Base_Category {
+//    @Autowired
+//    private Base_CategoryService service;
+//
+//    @Test
+//    public void addFirstCategory(){
+//        for (int ii =0;ii <10;ii++){
+//            Long id = NumberGenerator.getLongSequenceNumber();
+//            for (int i=0;i<1000;i++){
+//                service.addFirstCategory(id);
+//            }
+//        }
+//    }
+//    @Test
+//    public void addSecondCategory(){
+//        service.addSecondCategory(12624043866144l);
+//    }
+//    @Test
+//    public void addThirdCategory(){
+//        service.addThirdCategory(12838134761035l);
+//    }
+//}
diff --git a/deploy-jar-single/src/main/java/com/consum/test/synchronizedCode.java b/deploy-jar-single/src/main/java/com/consum/test/synchronizedCode.java
index d27c5cd..d61d8e6 100644
--- a/deploy-jar-single/src/main/java/com/consum/test/synchronizedCode.java
+++ b/deploy-jar-single/src/main/java/com/consum/test/synchronizedCode.java
@@ -1,47 +1,47 @@
-package com.consum.test;
-
-/**
- * 娴嬭瘯澶氱嚎绋嬪苟鍙�
- */
-public class synchronizedCode implements Runnable {
-
-    static synchronizedCode instance = new synchronizedCode();
-    static int i = 0;
-
-    static String key = "1";
-
-    public static void main(String[] args) throws InterruptedException {
-        for (int j=0;j<5;j++){
-            Thread t1 = new Thread(instance);
-            t1.start();
-        }
-
-        System.out.println("绾跨▼鎵ц缁撴潫");
-    }
-
-    @Override
-    public void run() {
-
-        String myKey;
-        if (key == "1"){
-            myKey = "def";
-            key = "2";
-        } else {
-            myKey = "abc";
-            key="1";
-        }
-
-        System.out.println(Thread.currentThread().getName() + ":" + myKey);
-
-        synchronized (myKey){
-            System.out.println(Thread.currentThread().getName() + "寮�濮嬭繍琛�");
-            try {
-                Thread.sleep(3000);
-            } catch (InterruptedException e) {
-                // TODO Auto-generated catch block
-                e.printStackTrace();
-            }
-            System.out.println("鎴戝彨"+ Thread.currentThread().getName()+"杩愯缁撴潫");
-        }
-    }
-}
\ No newline at end of file
+//package com.consum.test;
+//
+///**
+// * 娴嬭瘯澶氱嚎绋嬪苟鍙�
+// */
+//public class synchronizedCode implements Runnable {
+//
+//    static synchronizedCode instance = new synchronizedCode();
+//    static int i = 0;
+//
+//    static String key = "1";
+//
+//    public static void main(String[] args) throws InterruptedException {
+//        for (int j=0;j<5;j++){
+//            Thread t1 = new Thread(instance);
+//            t1.start();
+//        }
+//
+//        System.out.println("绾跨▼鎵ц缁撴潫");
+//    }
+//
+//    @Override
+//    public void run() {
+//
+//        String myKey;
+//        if (key == "1"){
+//            myKey = "def";
+//            key = "2";
+//        } else {
+//            myKey = "abc";
+//            key="1";
+//        }
+//
+//        System.out.println(Thread.currentThread().getName() + ":" + myKey);
+//
+//        synchronized (myKey){
+//            System.out.println(Thread.currentThread().getName() + "寮�濮嬭繍琛�");
+//            try {
+//                Thread.sleep(3000);
+//            } catch (InterruptedException e) {
+//                // TODO Auto-generated catch block
+//                e.printStackTrace();
+//            }
+//            System.out.println("鎴戝彨"+ Thread.currentThread().getName()+"杩愯缁撴潫");
+//        }
+//    }
+//}
diff --git a/deploy-jar-single/src/main/resources/application-dev.yml b/deploy-jar-single/src/main/resources/application-dev.yml
index 0a3dd1a..08d7122 100644
--- a/deploy-jar-single/src/main/resources/application-dev.yml
+++ b/deploy-jar-single/src/main/resources/application-dev.yml
@@ -7,7 +7,8 @@
 # 鏁版嵁搴撻摼鎺�
     dataBaseName: low_consum_manage_dev
     username: root
-    password: Bjjmy_2020
+#    Bjjmy_2020
+    password: ENC(V7lFKlYcHfEzTbXsbBQhSUswgxLsbS5z)
     url: jdbc:mysql://116.198.40.76:3306/${spring.datasource.dataBaseName}?useUnicode=true&characterEncoding=UTF-8&useSSL=false
 # Druid杩炴帴姹�
     type: com.walker.jdbc.ds.MyDruidDataSource
@@ -35,7 +36,7 @@
     host: 116.198.40.76
     port: 6379
     database: 11
-    password: Jmy2019.
+    password: ENC(C40h1dp9Q1oLqdU+JUGSBOWUfOmj/ZO4)   #Jmy2019.
 
   mvc:
     pathmatch:
@@ -151,8 +152,8 @@
 #      - /api/**
 
     # 瓒呯骇绠$悊鍛樺瘑鐮侊紝鍔犲瘑鍚庣殑绉樻枃
-    supervisor-password: $2a$10$9lSwwUFMULR6/KhPsUbTj.0PTZfTnq0fB3OtS6PWoKAibpa8hL1cy
-
+    supervisor-password: ENC(cDkgI4dm/vDXFDsDm5KJW23i5zAAUxIUW448ReA27tmgQ83ZLgO3k/YMK5+wIiuGDKPDIXUH9/irgKTLMKl7n7mP6XRgBnOf)
+    #    supervisor-password: $2a$10$9lSwwUFMULR6/KhPsUbTj.0PTZfTnq0fB3OtS6PWoKAibpa8hL1cy
     # 鏄惁鍏佽閰嶇疆璺ㄥ煙鍝嶅簲澶�, true 鍚敤锛� false 涓嶅惎鐢ㄣ��2022-12-28
     # 鍦℅ateway妯″紡涓紝闇�瑕佸叧闂法鍩熼厤缃紝鍥犱负缃戝叧涔熶細閰嶇疆銆�
     cors-enabled: true
@@ -218,7 +219,7 @@
       ip: 116.198.40.76
       port: 22
       user-name: mysftp
-      password: Bjjmy_2020
+      password: ENC(kEQ43JzZv6yOOmbmKNLWmsU/wQKTwA9x)
       private-key:
       # ftp鏈嶅姟涓婇潰鐨勫瓨鍌ㄦ牴璺緞锛屽彧鑳芥槸linux璺緞
       file-root: /progress/
@@ -248,4 +249,4 @@
     # 閭欢閫氱煡鍙戦�佷俊鎭厤缃紝2023-04-26
     mail-server: smtp.126.com
     mail-from: hnzzzhsl@126.com
-    mail-password: test
+    mail-password: ENC(hjRDRcQmmhpUICkAaJnXUQ==)
diff --git a/deploy-jar-single/src/main/resources/application-prod.yml b/deploy-jar-single/src/main/resources/application-prod.yml
index 28f88b7..bfbfa40 100644
--- a/deploy-jar-single/src/main/resources/application-prod.yml
+++ b/deploy-jar-single/src/main/resources/application-prod.yml
@@ -6,8 +6,8 @@
     show-sql: true
     # 鏁版嵁搴撻摼鎺�
     username: root
-    password: Bjjmy_2020
-    dataBaseName: low_consum_manage_dev
+    password: ENC(Zw99rAYSpDE2VCWJjC+C8hFAOItlbiSZ)
+    dataBaseName: low_consum_manage
     url: jdbc:mysql://192.200.0.49:3306/${spring.datasource.dataBaseName}?useUnicode=true&characterEncoding=UTF-8&useSSL=false
     # Druid杩炴帴姹�
     type: com.walker.jdbc.ds.MyDruidDataSource
@@ -35,7 +35,7 @@
     host: 192.200.0.49
     port: 6379
     database: 11
-    password: Jmy2019.
+    password: ENC(1IxlpqZ3ykMIWVknDjVydrCpK/6nccv/)   #Jmy2019.
 
   mvc:
     pathmatch:
@@ -151,7 +151,8 @@
     #      - /api/**
 
     # 瓒呯骇绠$悊鍛樺瘑鐮侊紝鍔犲瘑鍚庣殑绉樻枃
-    supervisor-password: $2a$10$9lSwwUFMULR6/KhPsUbTj.0PTZfTnq0fB3OtS6PWoKAibpa8hL1cy
+    supervisor-password: ENC(cDkgI4dm/vDXFDsDm5KJW23i5zAAUxIUW448ReA27tmgQ83ZLgO3k/YMK5+wIiuGDKPDIXUH9/irgKTLMKl7n7mP6XRgBnOf)
+    #    supervisor-password: $2a$10$9lSwwUFMULR6/KhPsUbTj.0PTZfTnq0fB3OtS6PWoKAibpa8hL1cy
 
     # 鏄惁鍏佽閰嶇疆璺ㄥ煙鍝嶅簲澶�, true 鍚敤锛� false 涓嶅惎鐢ㄣ��2022-12-28
     # 鍦℅ateway妯″紡涓紝闇�瑕佸叧闂法鍩熼厤缃紝鍥犱负缃戝叧涔熶細閰嶇疆銆�
@@ -218,7 +219,7 @@
       ip: 192.200.0.28
       port: 22
       user-name: mysftp
-      password: Jmy@2023
+      password: ENC(3o6p8lx7FWgH1Zi6gZ7ruZnt2geVGiC/)
       private-key:
       # ftp鏈嶅姟涓婇潰鐨勫瓨鍌ㄦ牴璺緞锛屽彧鑳芥槸linux璺緞
       file-root: /lowconsum/
@@ -248,4 +249,4 @@
     # 閭欢閫氱煡鍙戦�佷俊鎭厤缃紝2023-04-26
     mail-server: smtp.126.com
     mail-from: hnzzzhsl@126.com
-    mail-password: test
+    mail-password: ENC(hjRDRcQmmhpUICkAaJnXUQ==)
diff --git a/deploy-jar-single/src/main/resources/import/depTaiZhangExpTemp.xlsx b/deploy-jar-single/src/main/resources/import/depTaiZhangExpTemp.xlsx
new file mode 100644
index 0000000..1bd3ffb
--- /dev/null
+++ b/deploy-jar-single/src/main/resources/import/depTaiZhangExpTemp.xlsx
Binary files differ
diff --git a/deploy-jar-single/src/main/resources/import/taiZhangExpTemp.xlsx b/deploy-jar-single/src/main/resources/import/taiZhangExpTemp.xlsx
index 5d99e2e..3631b7a 100644
--- a/deploy-jar-single/src/main/resources/import/taiZhangExpTemp.xlsx
+++ b/deploy-jar-single/src/main/resources/import/taiZhangExpTemp.xlsx
Binary files differ
diff --git "a/deploy-jar-single/src/main/resources/import/\351\207\207\350\264\255\351\200\200\350\264\247\345\215\225.xls" "b/deploy-jar-single/src/main/resources/import/\351\207\207\350\264\255\351\200\200\350\264\247\345\215\225.xls"
new file mode 100644
index 0000000..306de0e
--- /dev/null
+++ "b/deploy-jar-single/src/main/resources/import/\351\207\207\350\264\255\351\200\200\350\264\247\345\215\225.xls"
Binary files differ

--
Gitblit v1.9.1