From 025dafb9892a8ff8f8a855343660f837a0f231d3 Mon Sep 17 00:00:00 2001
From: haoyahui <2032914783@qq.com>
Date: 星期一, 20 十一月 2023 16:31:11 +0800
Subject: [PATCH] 库存管理前端

---
 admin-web/src/views/stock/inventorycount/inventorytask/index.vue  |   56 +
 admin-web/src/views/stock/procure/purchaseOrder/detail.vue        |    4 
 admin-web/src/utils/settingIplatform.js                           |    4 
 admin-web/src/views/stock/transfer/transferApplication/index.vue  |   24 
 admin-web/src/views/stock/accessStock/outbound/detail.vue         |    4 
 admin-web/src/api/baseSetting/finsystenant.js                     |    8 
 admin-web/src/views/stock/inventorycount/inventorytask/edit.vue   |   77 
 admin-web/src/views/departmentitem/itemret/retDetails/index.vue   |  115 --
 admin-web/src/views/stock/index.scss                              |   25 
 admin-web/src/views/departmentitem/ledgerquy/itemQuy/index.vue    |  173 ---
 admin-web/src/views/stock/accessStock/outbound/edit.vue           |    7 
 admin-web/public/static/config.js                                 |    4 
 admin-web/src/views/stock/ledger/inventoryQuery/index.vue         |  128 +-
 admin-web/src/views/stock/procure/purchaseOrder/index.vue         |   30 
 admin-web/src/views/foundation/store/person.vue                   |   20 
 admin-web/src/views/departmentitem/itemret/returnNote/index.vue   |  530 ++---------
 admin-web/src/views/stock/transfer/transferissue/index.vue        |   39 
 admin-web/src/components/myTable/myTableV2.vue                    |    2 
 admin-web/src/views/stock/inventorycount/inventorytask/detail.vue |    5 
 admin-web/src/styles/store.scss                                   |  361 ++++----
 admin-web/src/views/systemManger/server/user/edit.vue             |    1 
 admin-web/src/views/departmentitem/itemret/returnNote/detail.vue  |  120 ++
 admin-web/src/views/departmentitem/ledgerquy/ledQuy/index.vue     |  250 ++---
 admin-web/src/views/stock/procure/purchaseOrder/edit.vue          |    9 
 admin-web/src/api/stock/ledger.js                                 |   11 
 admin-web/src/views/departmentitem/itemret/returnNote/edit.vue    |  436 ++++++++++
 admin-web/src/views/stock/transfer/transferApplication/detail.vue |    5 
 admin-web/src/views/stock/accessStock/outboundDetails/index.vue   |   27 
 28 files changed, 1,300 insertions(+), 1,175 deletions(-)

diff --git a/admin-web/public/static/config.js b/admin-web/public/static/config.js
index bac4b67..60dfb72 100644
--- a/admin-web/public/static/config.js
+++ b/admin-web/public/static/config.js
@@ -14,8 +14,8 @@
 // 鎺ュ彛璇锋眰鍦板潃
 // apiBaseURL: 'http://116.198.39.83:8082/progress', // 姝e紡
   // apiBaseURL: 'http://172.16.60.90:8082/progress',//寮�鍙�
-  apiBaseURL: 'http://172.16.20.10:8083/lowConsum',//寮�鍙�
-  // apiBaseURL: 'https://yqzx.jinmingyuan.com/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,
diff --git a/admin-web/src/api/baseSetting/finsystenant.js b/admin-web/src/api/baseSetting/finsystenant.js
index 4215cc1..d4087b1 100644
--- a/admin-web/src/api/baseSetting/finsystenant.js
+++ b/admin-web/src/api/baseSetting/finsystenant.js
@@ -186,4 +186,12 @@
     method: 'get',
     params,
   });
+}
+// 搴撳瓨
+export function tenantUserQueryUser(params) {
+  return request({
+    url: '/pc/fin/sys/tenant/user/query/user',
+    method: 'get',
+    params,
+  });
 }
\ No newline at end of file
diff --git a/admin-web/src/api/stock/ledger.js b/admin-web/src/api/stock/ledger.js
new file mode 100644
index 0000000..86e4828
--- /dev/null
+++ b/admin-web/src/api/stock/ledger.js
@@ -0,0 +1,11 @@
+import request from '@/utils/request';
+
+// 鍗曟嵁鏂板
+export function doExport(params) {
+  return request({
+    url: '/pc/fin/warehouse/ledger/getListExport',
+    responseType: 'blob', // 鎸囧畾鍝嶅簲鏁版嵁绫诲瀷涓築lob
+    method: 'post',
+    params,
+  });
+}
diff --git a/admin-web/src/components/myTable/myTableV2.vue b/admin-web/src/components/myTable/myTableV2.vue
index 5857918..6afb0f1 100644
--- a/admin-web/src/components/myTable/myTableV2.vue
+++ b/admin-web/src/components/myTable/myTableV2.vue
@@ -628,6 +628,8 @@
   color: #303133;
   font-weight: 700;
   margin-top: 10px;
+  display: flex;
+  justify-content: flex-end;
 }
 .el-radio {
   margin-right: 10px;
diff --git a/admin-web/src/styles/store.scss b/admin-web/src/styles/store.scss
index 3227b22..bc1f7ec 100644
--- a/admin-web/src/styles/store.scss
+++ b/admin-web/src/styles/store.scss
@@ -1,127 +1,127 @@
 .stock-container {
-    .ml-20 {
-      margin-left: 20px;
-    }
-    .card,.list-item {
-      display: flex;
-      flex-wrap: wrap;
-      margin: 0px !important;
+  .ml-20 {
+    margin-left: 20px;
+  }
+  .card,
+  .list-item {
+    display: flex;
+    flex-wrap: wrap;
+    margin: 0px !important;
+    width: 100%;
+    min-height: 100%;
+    .cm-item {
       width: 100%;
-      min-height: 100%;
-      .cm-item {
-        width: 100%;
-      }
-      .cm-item .el-card__body {
-        padding-bottom: 5px;
-      }
     }
-    .card-data {
-      width: 100%;
-      position: relative;
-      margin-top: 8px;
-      .card-container {
-        .card-header {
-          height: 48px;
-          display: flex;
-          align-items: center;
-          justify-content: space-between;
-          background: #f3f9fe;
-          padding: 0 32px 0 15px;
-          box-sizing: border-box;
+    .cm-item .el-card__body {
+      padding-bottom: 5px;
+    }
+  }
+  .card-data {
+    width: 100%;
+    position: relative;
+    margin-top: 8px;
+    .card-container {
+      .card-header {
+        height: 48px;
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+        background: #f3f9fe;
+        padding: 0 32px 0 15px;
+        box-sizing: border-box;
+      }
+      .card-header-left {
+        display: flex;
+        align-items: center;
+        color: #999999;
+        font-family: 'Microsoft YaHei UI';
+        font-size: 18px;
+        font-weight: 700;
+        .value {
+          color: #3d3d3d;
         }
-        .card-header-left {
-          display: flex;
-          align-items: center;
+
+        .states {
+          width: 54px;
+          height: 22px;
+          line-height: 22px;
+          text-align: center;
+          border-radius: 4px;
+          border: 1px solid #f9675b99;
+          background: rgba($color: #f9675b99, $alpha: 0.1);
+          font-family: 'Microsoft YaHei';
+          color: #f9675b;
+          font-size: 13px;
+          font-style: normal;
+          font-weight: 400;
+          margin-left: 8px;
+        }
+        .states-success {
+          border: 1px solid #39ad6199;
+          background: rgba($color: #39ad6199, $alpha: 0.1);
+          color: #39ad61;
+        }
+        .states-info {
+          border: 1px solid #999999;
+          background: rgba($color: #999999, $alpha: 0.1);
           color: #999999;
-          font-family: 'Microsoft YaHei UI';
-          font-size: 18px;
-          font-weight: 700;
-          .value {
-            color: #3d3d3d;
+        }
+        .states-warning {
+          border: 1px solid #e6a23c;
+          background: rgba($color: #e6a23c, $alpha: 0.1);
+          color: #e6a23c;
+        }
+      }
+      .one-hed {
+        margin-top: 15px;
+        padding: 0 32px 0 15px;
+        box-sizing: border-box;
+        .box {
+          display: inline-block;
+          margin-right: 20px;
+        }
+        .span-two {
+          color: #83919e;
+          font-size: 14px;
+        }
+      }
+      .card-end {
+        font-size: 14px;
+        color: #3d3d3d;
+        margin-top: 15px;
+        display: flex;
+        flex-wrap: wrap;
+        font-family: 'Microsoft YaHei UI';
+        padding: 0 16px;
+        box-sizing: border-box;
+        .item {
+          width: 379px;
+          height: 60px;
+          padding: 8px 12px 9px 12px;
+          box-sizing: border-box;
+          align-items: center;
+          gap: 8px;
+          flex-shrink: 0;
+          background: #f9f9f9;
+          margin-right: 15px;
+          margin-bottom: 15px;
+          &:last-child {
+            margin-right: 0;
           }
-  
-          .states {
-            width: 54px;
+          .name {
             height: 22px;
             line-height: 22px;
-            text-align: center;
-            border-radius: 4px;
-            border: 1px solid #f9675b99;
-            background: rgba($color:#f9675b99,$alpha:0.1);
-            font-family: 'Microsoft YaHei';
-            color: #f9675b;
-            font-size: 13px;
-            font-style: normal;
-            font-weight: 400;
-            margin-left: 8px;
           }
-          .states-success {
-            border: 1px solid #39ad6199;
-            background: rgba($color:#39ad6199,$alpha:0.1);
-            color: #39ad61;
-          }
-          .states-info {
-            border: 1px solid #999999;
-            background: rgba($color:#999999,$alpha:0.1);
-            color: #999999;
-          }
-          .states-warning {
-            border: 1px solid #e6a23c;
-            background: rgba($color:#e6a23c,$alpha:0.1);
-            color: #e6a23c;
-          }
-        }
-        .one-hed {
-          margin-top: 15px;
-          padding: 0 32px 0 15px;
-          box-sizing: border-box;
-          .box {
-            display: inline-block;
-            margin-right: 20px;
-          }
-          .span-two {
-            color: #83919e;
-            font-size: 14px;
-          }
-        }
-        .card-end {
-          font-size: 14px;
-          color: #3d3d3d;
-          margin-top: 15px;
-          display: flex;
-          flex-wrap: wrap;
-          font-family: 'Microsoft YaHei UI';
-          padding: 0 16px;
-          box-sizing: border-box;
-          .item {
-            width: 379px;
-            height: 60px;
-            padding: 8px 12px 9px 12px;
-            box-sizing: border-box;
-            align-items: center;
-            gap: 8px;
-            flex-shrink: 0;
-            background: #f9f9f9;
-            margin-right: 15px;
-            margin-bottom: 15px;
-            &:last-child {
-              margin-right: 0;
-            }
-            .name {
-              height: 22px;
-              line-height: 22px;
-            }
-            .value-box {
-              display: flex;
-              .value-box-item {
-                margin-right: 20px;
-                .label {
-                  color: #99999999;
-                  line-height: 22px;
-                }
-                .value {
-                  color: #ff3131;
-                }
+          .value-box {
+            display: flex;
+            .value-box-item {
+              margin-right: 20px;
+              .label {
+                color: #99999999;
+                line-height: 22px;
+              }
+              .value {
+                color: #ff3131;
               }
             }
           }
@@ -129,73 +129,78 @@
       }
     }
   }
-  .no-data{
-    margin-top: 100px;
-    text-align: center;
-    color: #909399;
+  .el-pagination {
+    display: flex;
+    justify-content: flex-end;
   }
-  
-  /*缂栬緫*/
-  .stock-edit{
-    .main-w {
-      width: 88%;
+}
+.no-data {
+  margin-top: 100px;
+  text-align: center;
+  color: #909399;
+}
+
+/*缂栬緫*/
+.stock-edit {
+  .main-w {
+    width: 88%;
+  }
+  .goods-card {
+    position: relative;
+    background: #f6f6f6;
+    padding: 20px;
+    box-sizing: border-box;
+    border-radius: 4px;
+    background-color: #f9f9f9;
+    margin-top: 20px;
+    &:nth-of-type(1) {
+      margin-top: 0;
     }
-    .goods-card {
-      position: relative;
-      background: #f6f6f6;
-      padding: 20px;
-      box-sizing: border-box;
-      border-radius: 4px;
-      background-color: #f9f9f9;
-      margin-top: 20px;
-      &:nth-of-type(1) {
-        margin-top: 0;
-      }
-    }
-    .btn-group {
-      width: 80px;
-      position: absolute;
-      right: -94px;
-      bottom: 0px;
-      .el-button {
-        margin-bottom: 10px;
-        margin-left: 0;
-        display: block;
-        &:last-child {
-          margin-bottom: 0;
-        }
+  }
+  .btn-group {
+    width: 80px;
+    position: absolute;
+    right: -94px;
+    bottom: 0px;
+    .el-button {
+      margin-bottom: 10px;
+      margin-left: 0;
+      display: block;
+      &:last-child {
+        margin-bottom: 0;
       }
     }
   }
-  
-  /*璇︽儏*/
-  .stock-detail{
-    .img-row {
-      display: flex;
-      align-content: center;
+}
+
+/*璇︽儏*/
+.stock-detail {
+  .img-row {
+    display: flex;
+    align-content: center;
+  }
+  .img-box {
+    display: inline-block;
+    width: 80px;
+    height: 80px;
+    background: #f9f9f9;
+    margin-right: 20px;
+    cursor: pointer;
+    .img {
+      width: 100%;
     }
-    .img-box {
-      display: inline-block;
-      width: 80px;
-      height: 80px;
-      background: #f9f9f9;
-      margin-right: 20px;
-      cursor: pointer;
-      .img {
-        width: 100%;
-      }
+  }
+
+  .goods-card {
+    position: relative;
+    background: #f6f6f6;
+    padding: 20px;
+    box-sizing: border-box;
+    border-radius: 4px;
+    background-color: #f9f9f9;
+    margin-top: 20px;
+    &:nth-of-type(1) {
+      margin-top: 0;
     }
-    
-    .goods-card {
-      position: relative;
-      background: #f6f6f6;
-      padding: 20px;
-      box-sizing: border-box;
-      border-radius: 4px;
-      background-color: #f9f9f9;
-      margin-top: 20px;
-      &:nth-of-type(1) {
-        margin-top: 0;
-      }
-    }
-  }
\ No newline at end of file
+  }
+}
diff --git a/admin-web/src/utils/settingIplatform.js b/admin-web/src/utils/settingIplatform.js
index 265c004..366a244 100644
--- a/admin-web/src/utils/settingIplatform.js
+++ b/admin-web/src/utils/settingIplatform.js
@@ -14,8 +14,8 @@
 // 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.10:8083/lowConsum',//寮�鍙�
-  // apiBaseURL: 'https://yqzx.jinmingyuan.com/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,
diff --git a/admin-web/src/views/departmentitem/itemret/retDetails/index.vue b/admin-web/src/views/departmentitem/itemret/retDetails/index.vue
index 2936cd9..6269d01 100644
--- a/admin-web/src/views/departmentitem/itemret/retDetails/index.vue
+++ b/admin-web/src/views/departmentitem/itemret/retDetails/index.vue
@@ -13,16 +13,9 @@
               <my-table-v2 ref="myTable" :filter="filterFrom" :table="table"/>
             </el-col>
           </el-row>
-          <!--娣诲姞/缂栬緫寮圭獥-->
-          <edit v-if="editSetting.show" :setting="editSetting" @close="editSetting.show = false" @search="search"/>
         </el-card>
       </el-container>
     </el-container>
-    <my-import
-      :import-setting="importSetting"
-      :dialog-show="importSetting.dialogShow"
-      :dialog-title="importSetting.dialogTitle"
-    />
   </div>
 </template>
 
@@ -30,14 +23,12 @@
 import MyTableV2 from "@/components/myTable/myTableV2";
 import MyButton from "@/components/myButton/myButton";
 import SettingIplatform from '@/utils/settingIplatform';
-import edit from './edit'
 import * as finsystenant from '@/api/baseSetting/finsystenant'
-import myImport from '@/views/components/myImport'
 import {getBaseUrl} from '@/utils/base';
 
 export default {
   name: "index",
-  components: {MyButton, MyTableV2, edit, myImport},
+  components: {MyButton, MyTableV2},
   data() {
     return {
       // 鎼滅储妗�
@@ -90,24 +81,6 @@
         userPhone: null,
         status: 1
       },
-      // 瀵煎叆
-      importSetting: {
-          dialogTitle: '瀵煎叆',
-          dialogShow: false,
-          fileSettings: {
-              data: {},
-              uploadUrl: getBaseUrl()+"/pc/fin/sys/tenant/import", // 涓婁紶鍦板潃
-              accept: '.xls', // 鏍煎紡
-              type: 'text', // 鍥炴樉褰㈠紡
-              loading: false // 瀵煎叆鏁堟灉
-          },
-          /* 妯℃澘涓嬭浇 */
-          templateSettings: {
-              templateName: '瀵煎叆妯℃澘.xls', // 鍚嶇О
-              templateUrl: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/getImportTemplate' // 涓嬭浇鍦板潃
-          },
-          onSuccess: null
-      },
       editSetting: {
         title: '',
         id: '',
@@ -133,13 +106,12 @@
         },
         // 鍒椾俊鎭�
         columns: [
-          {title: '绫诲瀷', field: 'name', align: 'left',},
           {title: '鍗曞彿', field: 'code', align: 'center'},
           {title: '鐗╁搧鍚嶇О', field: 'lv', align: 'center', },
           {title: '瑙勬牸鍨嬪彿', field: 'lv', align: 'center', },
-          {title: '鍑哄叆搴撴暟閲�', field: 'summary', align: 'left',},
-          {title: '閲戦', field: 'summary', align: 'left',},
+          {title: '閫�杩樻暟閲�', field: 'summary', align: 'left',},
           {title: '鎵�灞炴満鏋�', field: 'summary', align: 'left',},
+          {title: '閮ㄩ棬', field: 'summary', align: 'left',},
           {title: '鍒涘缓浜�', field: 'summary', align: 'left',},
           {title: '鎿嶄綔鏃堕棿', field: 'summary', align: 'left',},
         ],
@@ -170,94 +142,13 @@
     }
   },
   created() {
-    // 鑾峰彇鏈烘瀯鏍�
-    this.initTreeData()
   },
   methods: {
-    //瀵煎叆
-    importOrg() {
-        this.importSetting.dialogShow = true
-        this.importSetting.onSuccess = (response, callBack) => {
-            if (response.code===1){
-              this.$message.success(response.msg)
-              this.search(1)
-            }else{
-              this.$message.warning(response.msg)
-            }
-            callBack()
-        }
-    },
-    // 宸︿晶鏍戝垵濮嬪寲
-    initTreeData() {
-      finsystenant.getTree().then(res => {
-        const content = res || []
-        this.treeDataList.splice(0, this.treeDataList.length)
-        this.treeDataList = content
-        if (content.length > 0) {
-          this.importSetting.fileSettings.data = {pid: content[0].id}
-        }
-      })
-    },
-    updState(row) {
-      let vm = this
-      let text = row.status == 0 ? "鍚敤" : "绂佺敤";
-      vm.$modal.confirm('纭瑕�' + text + '"' + row.name + '"鍚楋紵').then(function () {
-        let params = Object.assign({}, row)
-        params.status = row.status == 1 ? 0 : 1
-        finsystenant.edit(params).then(res => {
-          if (res) {
-            row.status = row.status === 1 ? 0 : 1
-            vm.$modal.msgSuccess(text + "鎴愬姛");
-            vm.search()
-          }
-        })
-      })
-    },
-    del(row) {
-      this.$modal
-        .confirm('鏄惁纭鍒犻櫎鍚嶇О涓�"' + row.name + '"鐨勬満鏋勫悧锛�')
-        .then(function () {
-          finsystenant.del({id: row.id}).then((res) => {
-          });
-        })
-        .then((res) => {
-          this.$message.success('鍒犻櫎鎴愬姛锛�');
-          this.search()
-        })
-        .catch(() => {
-        });
-    },
-    showAdd() {
-      // if (!this.editSetting.orgId) {
-      //   this.$message.warning('璇峰厛閫夋嫨宸︿晶鏈烘瀯')
-      // } else {
-        this.editSetting.id = null;
-        this.editSetting.info = null;
-        this.editSetting.title = '鏂板';
-        this.editSetting.show = true;
-      // }
-    },
     showAudit(row) {
       this.editSetting.id = row.id;
       this.editSetting.info = JSON.stringify(row);
       this.editSetting.title = '缂栬緫';
       this.editSetting.show = true;
-    },
-    nodeClick(param) {
-      param = param || {}
-      this.p = Object.assign({}, {
-        id: param.id,
-        name: param.name
-      })
-      if (this.p.id != undefined && this.p.id != null) {
-        this.filterFrom.tenantId = this.p.id
-        this.editSetting.orgId = this.p.id
-      } else {
-        this.filterFrom.tenantId = null
-        this.editSetting.orgId = null
-      }
-      this.importSetting.fileSettings.data = {pid: param.id}
-      this.search(1)
     },
     // 鏌ヨtable鍒楄〃
     search(pageNum) {
diff --git a/admin-web/src/views/departmentitem/itemret/returnNote/detail.vue b/admin-web/src/views/departmentitem/itemret/returnNote/detail.vue
new file mode 100644
index 0000000..f8f428d
--- /dev/null
+++ b/admin-web/src/views/departmentitem/itemret/returnNote/detail.vue
@@ -0,0 +1,120 @@
+<template>
+  <win-md class="stock-detail" :title="setting.title" @close="close" :width="'800px'">
+    <el-row :gutter="20">
+      <el-col :span="8">
+        <span>閫�鍥炲崟鍙凤細</span>
+        <span>{{ detail.businessFormCode }}</span>
+      </el-col>
+      <el-col :span="8">
+        <span>閫�鍥炰粨搴擄細</span>
+        <span>{{ detail.warehouseName }}</span>
+      </el-col>
+      <el-col :span="8">
+        <span>鎵�灞炴満鏋勶細</span>
+        <span>{{ detail.agencyName }}</span>
+      </el-col>
+    </el-row>
+    <el-row :gutter="20" style="margin-top: 20px">
+      <el-col :span="8">
+        <span>鍒涘缓浜猴細</span>
+        <span>{{ detail.operatorName }}</span>
+      </el-col>
+      <el-col :span="8">
+        <span>閫�鍥炴椂闂达細</span>
+        <span>{{ detail.dealTime | formatTime }}</span>
+      </el-col>
+    </el-row>
+    <el-row v-if="detail.procureDoc" :gutter="20" style="margin-top: 20px">
+      <el-col class="img-row" :span="24">
+        <span>閫�鍥炴墜缁細</span>
+        <div class="img-box"></div>
+      </el-col>
+    </el-row>
+    <div class="goods-card" v-for="(goodsItem, goodsIndex) in detail.fromOutputGoods" :key="goodsIndex">
+      <el-row :gutter="20">
+        <el-col :span="8">
+          <span>鐗╁搧鍒嗙被锛�</span>
+          <span>{{ goodsItem.categoryName }}</span>
+        </el-col>
+        <el-col :span="8">
+          <span>鐗╁搧鍚嶇О锛�</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="counts" label="閲戦" align="center">
+          <template slot-scope="scope">
+            {{ scope.row.price * scope.row.counts | formatPrice}}
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
+  </win-md>
+</template>
+<script>
+import { outputDetail } from '@/api/stock/accessStock';
+import winMd from '@/components/win/win-md';
+import * as DateFormatter from '@/utils/DateFormatter';
+
+export default {
+  components: { winMd },
+
+  props: {
+    setting: {
+      type: Object,
+      default: () => {},
+    },
+  },
+  data() {
+    return {
+      detail: {
+        categoryName: '',
+        businessFormCode: '',
+        goodsName: '',
+        agencyId: '',
+        agencyName: '',
+        states: '',
+        createName: '',
+        fromOutputGoods: [],
+      },
+    };
+  },
+  filters: {
+    formatTime(time) {
+      if (!time) return;
+      return DateFormatter.LongToDateTime(time);
+    },
+    formatPrice(price) {
+      return price / 100
+    }
+  },
+  created() {
+    outputDetail({ id: this.setting.id }).then((res) => {
+      this.detail = res;
+    });
+  },
+  methods: {
+    close() {
+      this.$emit('close')
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+@import url(../../../../styles/store.scss);
+</style>
diff --git a/admin-web/src/views/departmentitem/itemret/returnNote/edit.vue b/admin-web/src/views/departmentitem/itemret/returnNote/edit.vue
new file mode 100644
index 0000000..a4aee1f
--- /dev/null
+++ b/admin-web/src/views/departmentitem/itemret/returnNote/edit.vue
@@ -0,0 +1,436 @@
+<template>
+  <win-md class="stock-edit" title="鐗╁搧閫�鍥�" @close="close" :width="'800px'">
+    <el-form class="form" ref="ruleForm" :model="formData" :rules="rules" label-width="120px">
+      <div class="main-w">
+        <el-row :gutter="24" class="headerHeight">
+          <el-col :span="12">
+            <el-form-item label="閮ㄩ棬" prop="warehouseId">
+              <el-input v-model="formData.departmentName" disabled></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="閫�鍥炰汉" prop="createName">
+              <el-input v-model="formData.createName" disabled></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="閫�鍥炴椂闂�" prop="dealTime">
+              <el-date-picker
+                v-model="formData.dealTime"
+                type="datetime"
+                value="yyyy-MM-dd HH:mm:ss"
+                value-format="yyyyMMddHHmmss"
+                placeholder="璇烽�夋嫨鏃ユ湡"
+                style="width: 100%"
+              >
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="24" class="headerHeight">
+          <el-col :span="24">
+            <el-form-item label="閫�鍥炴墜缁�" prop="procureDoc">
+              <upload ref="uploadRef" :settings="uploadSettings" @on-change="uploadChange"></upload>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <div class="goods-card" v-for="(goodsItem, goodsIndex) in formData.goods" :key="goodsIndex">
+          <el-row :gutter="24">
+            <el-col :span="12">
+              <el-form-item
+                label="鐗╁搧鍒嗙被"
+                :prop="`goods[${goodsIndex}].baseCategoryIds`"
+                :rules="{
+                  required: true,
+                  message: '璇烽�夋嫨',
+                  trigger: 'change',
+                }"
+              >
+                <el-cascader
+                  v-model="goodsItem.baseCategoryIds"
+                  :options="categoryOptions"
+                  :props="{ value: 'id' }"
+                  @change="categoryChange($event, goodsIndex)"
+                  style="width: 100%"
+                ></el-cascader>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item
+                label="鐗╁搧鍚嶇О"
+                :prop="`goods[${goodsIndex}].baseGoodsTemplateId`"
+                :rules="rules.baseGoodsTemplateId"
+              >
+                <el-select
+                  v-model="goodsItem.baseGoodsTemplateId"
+                  placeholder="璇峰厛鎷╃墿鍝佸垎绫�"
+                  filterable
+                  :disabled="!goodsItem.baseCategoryId"
+                  style="width: 100%"
+                  @change="goodsTemplateChange($event, goodsIndex)"
+                >
+                  <el-option
+                    v-for="item in goodsItem.goodsOptions"
+                    :key="item.id"
+                    :label="item.goodsName"
+                    :value="item.id"
+                  />
+                </el-select>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="24">
+            <el-col :span="12">
+              <el-form-item label="閫夋嫨鍒嗗彂鍗�" :prop="`goods[${goodsIndex}].modelsIds`">
+                <el-input v-if="!goodsItem.baseGoodsTemplateId" placeholder="璇峰厛鎷╃墿鍝佸悕绉�" readonly suffix-icon="el-icon-arrow-down" class="cursor-p"></el-input>
+                <div v-else @click="fenfaSetting.show=true">
+                  <el-input placeholder="璇烽�夋嫨" readonly suffix-icon="el-icon-arrow-down" class="cursor-p"></el-input>
+                </div>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-table :data="goodsItem.models" :stripe="true">
+            <el-table-column prop="baseGoodsModelsId" label="瑙勬牸鍨嬪彿" align="center">
+              <template slot-scope="scope">
+                {{ getGoodsModelsName(scope.row.baseGoodsModelsId) }}
+              </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="price" label="鐜版湁搴撳瓨" align="center">
+              <template slot-scope="scope">
+                {{ scope.row.worehouseCount }}
+              </template>
+            </el-table-column>
+            <el-table-column prop="counts" label="閫�鍥炴暟閲�" align="center">
+              <template slot-scope="scope">
+                <el-form-item
+                  label-width="0"
+                  style="margin-bottom: 0"
+                  :prop="`goods[${goodsIndex}].models[${scope.$index}].counts`"
+                  :rules="rules.counts"
+                >
+                  <el-input
+                    type="number"
+                    v-model="scope.row.counts"
+                    @change="countsChange($event, goodsIndex, scope.$index)"
+                  ></el-input>
+                </el-form-item>
+              </template>
+            </el-table-column>
+          </el-table>
+          <div class="btn-group">
+            <el-button
+              v-if="formData.goods.length > 1"
+              name="绉婚櫎"
+              type="danger"
+              plain
+              size="mini"
+              @click="removeGoods(goodsIndex)"
+              >绉婚櫎</el-button
+            >
+            <el-button
+              v-if="formData.goods.length - 1 == goodsIndex"
+              name="鏂板鐗╁搧"
+              type="primary"
+              plain
+              size="mini"
+              @click="addGoods"
+              >鏂板鐗╁搧</el-button
+            >
+          </div>
+        </div>
+      </div>
+    </el-form>
+    <div slot="footer" align="center" class="dialog-footer">
+      <my-button name="鍙栨秷" site="form" @click="close" />
+      <my-button name="淇濆瓨" site="form" @click="handleSubmit" />
+    </div>
+    <div v-if="fenfaSetting.show">
+      <win-sm title="閫夋嫨鍒嗗彂鍗�" @close="fenfaSetting.show=false" :width="'800px'">
+      <el-table :data="fenfaData">
+        <el-table-column type="selection" width="55"> </el-table-column>
+        <el-table-column label="鍒嗗彂鍗曞彿" prop="businessFormCode"></el-table-column>
+        <el-table-column label="鐗╁搧鍚嶇О" prop="modelName"></el-table-column>
+        <el-table-column label="鍒嗗彂鏁伴噺" prop="fenfaCount"></el-table-column>
+        <el-table-column label="鍓╀綑鏁伴噺" prop="count"></el-table-column>
+        <el-table-column label="鍒嗗彂鏃堕棿" prop="time"></el-table-column>
+      </el-table>
+      <div slot="footer" align="center" class="dialog-footer">
+        <my-button name="鍙栨秷" site="form" @click="fenfaSetting.show=false" />
+        <my-button name="纭畾" site="form" @click="handleConfirm" />
+      </div>
+    </win-sm>
+    </div>
+  </win-md>
+</template>
+<script>
+import {
+  goodsTemplate,
+  goodsModel,
+  selectTenantWarehouse,
+  warehouseSelectNumber,
+} from '@/api/baseSetting/finsystenant';
+import { outputAdd } from '@/api/stock/accessStock';
+import { getTree } from '@/api/foudation/classification';
+import MyButton from '@/components/myButton/myButton';
+import winMd from '@/components/win/win-md';
+import winSm from '@/components/win/win-sm';
+import upload from '@/components/upload/index';
+import { getUploadUrl } from '@/utils/base';
+import { mapGetters } from 'vuex';
+
+export default {
+  components: { MyButton, winMd, winSm, upload },
+  props: {
+    setting: {
+      type: Object,
+      default: () => {},
+    },
+  },
+  data() {
+    // 鑷畾涔夋牎楠�
+    // 鐗╁搧閲嶅鏍¢獙
+    var checkGoodsTemplateId = (rule, value, callback) => {
+      if (!value) {
+        return callback(new Error('璇烽�夋嫨'));
+      }
+      let temp = this.formData.goods.filter((v) => v.baseGoodsTemplateId == value);
+      if (!temp || temp.length != 1) {
+        return callback(new Error('宸查�夎繃姝ょ墿鍝�'));
+      }
+      callback();
+    };
+    return {
+      loading: false,
+      warehouseOptions: [], // 閫�鍥炰粨搴撳垪琛�
+      categoryOptions: [], // 鐗╁搧鍒嗙被鍒楄〃
+      modelList: [], //鍨嬪彿鍒楄〃
+      fenfaSetting: {
+        show: false,
+        id: '',
+      },
+      fenfaData:[],
+      formData: {
+        warehouseId: '', // 閫�鍥炰粨搴搃d
+        dealTime: '', // 閫�鍥炴椂闂�
+        procureDoc: '',
+        goods: [],
+      },
+      goodsItem: {
+        baseCategoryIds: '', // 鍒嗙被缂栧彿鏁扮粍
+        baseCategoryId: '', // 鍒嗙被缂栧彿
+        baseGoodsTemplateId: '', // 鐗╁搧妯$増缂栧彿
+        goodsTemplateName: '', // 鐗╁搧妯$増鍚嶇О
+        goodsOptions: [], // 鐗╁搧鍒楄〃select
+        modelsOptions: [], //瑙勬牸鍨嬪彿select
+        models: [], // 鐗╁搧鍚嶇О
+        modelsIds: [], //瑙勬牸鍨嬪彿
+      },
+      modelsItem: {
+        baseGoodsModelsId: '', // 瑙勬牸鍨嬪彿缂栧彿
+        worehouseCount: 0,
+        counts: null, // 鎿嶄綔鏁伴噺
+        unit: null, //鍗曚綅
+      },
+      rules: {
+        warehouseId: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
+        dealTime: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
+        buyType: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
+
+        baseCategoryIds: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
+        baseGoodsTemplateId: [{ validator: checkGoodsTemplateId, trigger: ['blur', 'change'] }],
+        modelsIds: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
+        counts: [{ required: true, message: '璇疯緭鍏�', trigger: 'change' }],
+      },
+
+      uploadSettings: {
+        title: '涓婁紶',
+        max: 20, // 鏈�澶уぇ灏忥紝鍗曚綅M
+        num: 10, // 鏀寔涓婁紶鍥剧墖涓暟
+        accept: '.jpg,.png', // 闄愬埗鏍煎紡
+        tip: '', // 鎻愮ず 榛樿锛歚鍙兘涓婁紶${this.defaultSettings.num}涓�${this.defaultSettings.accept}鏂囦欢锛屼笖涓嶈秴杩�${this.defaultSettings.max}kb`
+        uploadUrl: getUploadUrl(), // 涓婁紶璺緞
+        multiple: true, // 鏄惁鏀寔鎵归噺涓婁紶
+        disabled: false, // 鏄惁绂佺敤
+        type: 'picture', // text/picture
+      },
+    };
+  },
+  computed: {
+    ...mapGetters(['userInfo']),
+  },
+  created() {
+    this.init();
+  },
+  methods: {
+    async init() {
+      this.getWarehouseList();
+      this.getgoodsTemplate();
+      // 鑾峰彇鐗╁搧鍒嗙被鍒楄〃
+      const treeRes = await getTree();
+      this.categoryOptions = this.removeEmptyChildren(treeRes);
+      this.formData.departmentName = this.userInfo.sysDeptName;
+      this.formData.createName = this.userInfo.userName;
+    },
+
+    // 鑾峰彇閫�鍥炰粨搴撳垪琛�
+    getWarehouseList() {
+      selectTenantWarehouse({ agencyId: this.userInfo.tenantId })
+        .then((res) => {
+          this.warehouseOptions = res;
+          if (res.length) {
+            this.formData.goods.push(JSON.parse(JSON.stringify(this.goodsItem)));
+          }
+          if (this.warehouseOptions.length && !this.formData.warehouseId) {
+            // 榛樿閫変腑绗竴涓粨搴�
+            this.formData.warehouseId = this.warehouseOptions[0].id;
+          }
+        })
+        .catch((err) => {
+          console.log('err', err);
+        });
+    },
+
+    removeEmptyChildren(arr) {
+      arr.forEach((item) => {
+        if (!item.children || !item.children.length) {
+          delete item.children;
+        } else {
+          this.removeEmptyChildren(item.children);
+        }
+      });
+      return arr;
+    },
+
+    // 鑾峰彇鐗╁搧鍚嶇О鍒楄〃
+    getgoodsTemplate(id, index) {
+      goodsTemplate({ categoryId: id || '' }).then((res) => {
+        if (index || index == 0) {
+          this.$set(this.formData.goods[index], 'goodsOptions', res);
+        } else {
+          this.goodsTemplatelAll = res;
+        }
+      });
+    },
+
+    // 鏍规嵁鐗╁搧鍚嶇Оid鑾峰彇鍚嶅瓧
+    getGoodsTemplateName(id) {
+      let item = this.goodsTemplatelAll.find((v) => v.id == id);
+      if (item) {
+        return item.goodsName;
+      }
+      return;
+    },
+
+    // 鏍规嵁瑙勬牸鍨嬪彿id鑾峰彇鍚嶅瓧
+    getGoodsModelsName(id) {
+      let item = this.goodsModelAll.find((v) => v.id == id);
+      if (item) {
+        return item.modelName;
+      }
+      return;
+    },
+
+    // 鐗╁搧鍒嗙被閫夋嫨
+    categoryChange(e, index) {
+      this.formData.goods[index].goodsOptions = [];
+      this.formData.goods[index].baseGoodsTemplateId = '';
+      this.formData.goods[index].goodsTemplateName = '';
+      this.formData.goods[index].modelsOptions = [];
+      this.formData.goods[index].modelsIds = [];
+      this.formData.goods[index].models = [];
+
+      this.formData.goods[index].baseCategoryId = e[e.length - 1];
+      // 鏍规嵁閫変腑鍒嗙被璇锋眰鐗╁搧鍚嶇О鍒楄〃
+      this.getgoodsTemplate(e[e.length - 1], index);
+    },
+
+    // 鐗╁搧鍚嶇О鍒楄〃閫夋嫨
+    goodsTemplateChange(e, index) {
+      this.formData.goods[index].modelsOptions = [];
+      this.formData.goods[index].modelsIds = [];
+      this.formData.goods[index].models = [];
+
+      this.formData.goods[index].goodsTemplateName = this.getGoodsTemplateName(e);
+    },
+
+    // 涓婁紶
+    uploadChange() {
+      let arr = this.$refs.uploadRef.fileList;
+      this.formData.procureDoc = JSON.stringify(arr);
+    },
+
+    // 鐐瑰嚮鏂板鐗╁搧
+    addGoods() {
+      this.formData.goods.push(JSON.parse(JSON.stringify(this.goodsItem)));
+    },
+
+    // 鐐瑰嚮绉婚櫎
+    removeGoods(index) {
+      this.formData.goods.splice(index, 1);
+    },
+
+    // 閫�鍥炴暟閲忔牎楠�
+    countsChange(e, goodsIndex, index) {
+      const curItem = this.formData.goods[goodsIndex].models[index];
+      const worehouseCount = curItem.worehouseCount;
+      if (e == 0) {
+        this.$message.warning('鏁伴涓嶈兘涓�0');
+        curItem.counts = null;
+      }
+      if (e > worehouseCount) {
+        this.$message.warning('鏁伴瓒呰繃鐜版湁搴撳瓨');
+        curItem.counts = worehouseCount > 0 ? worehouseCount : null;
+      }
+    },
+
+    handleConfirm(){
+
+    },
+
+    // 鎻愪氦
+    handleSubmit() {
+      this.$refs['ruleForm'].validate((valid) => {
+        if (valid) {
+          console.log('this.formData', this.formData);
+          outputAdd(this.formData)
+            .then((res) => {
+              this.$message.success('淇濆瓨鎴愬姛锛�');
+              this.close();
+              this.$emit('search');
+            })
+            .catch((err) => {
+              console.log('edit err', err);
+              this.$message.error('淇濆瓨澶辫触');
+            });
+        } else {
+          this.$message.error('鏍¢獙鏈�氳繃锛岃妫�鏌ャ��');
+        }
+      });
+    },
+
+    close() {
+      this.formData = {
+        warehouseId: '', // 閫�鍥炰粨搴搃d
+        dealTime: '', // 閫�鍥炴椂闂�
+        goods: [],
+      };
+      this.$emit('close');
+    },
+  },
+};
+</script>
+<style scoped lang="scss">
+@import url(../../../../styles/store.scss);
+.cursor-p {
+  ::v-deep {
+    .el-input__inner {
+      cursor: pointer;
+    }
+  }
+}
+</style>
diff --git a/admin-web/src/views/departmentitem/itemret/returnNote/index.vue b/admin-web/src/views/departmentitem/itemret/returnNote/index.vue
index ea1d5b0..9c9e512 100644
--- a/admin-web/src/views/departmentitem/itemret/returnNote/index.vue
+++ b/admin-web/src/views/departmentitem/itemret/returnNote/index.vue
@@ -1,449 +1,157 @@
 <template>
-  <div class="app-container">
+  <div class="app-container stock-container">
     <el-container>
-      <el-container>
-        <el-card class="box-card" style="width: 100%" shadow="never">
-          <!--鎼滅储鏉′欢-->
-          <div class="filter-container">
-            <my-search ref="searchBar" :items="items" @search="fifterForm"></my-search>
-          </div>
-          <el-row style="margin-top: 15px">
-            <el-col>
-              <!--鍒楄〃-->
-              <my-button name="鏂板" @click="addtable" site="form" />
-              <div :style="{'overflow-y': 'auto', height:`${clientHeight - 320}px`}">
-                    <el-row class="card"
-                            :gutter="5">
-                        <el-col v-for="(item, index) in proData" :key="index" class="cm-item">
-                          <el-card class="card-data">
-                            <div class="card-container">
-                              <div class="hed-one">鍑哄簱鍗曞彿锛歿{ item.order_no }}</div>
-                              <div class="one-hed">
-                                <div class="box"><span class="span-two">鏈烘瀯锛�</span>{{ item.customer_name }}</div>
-                                <div class="box"><span class="span-two">鎿嶄綔浜猴細</span>{{ item.customer_name }}</div>
-                                <div class="box"><span class="span-two">鍑哄簱鏃堕棿锛�</span>{{ item.customer_name }}</div>
-                              </div>
-                              <div class="card-end">
-                                <div v-for="(just, index) in item.data" class="two-end">
-                                  <div class="item"><span>{{ just.order_no }}锛�</span>{{ just.customer_name }}</div>
-                                </div>
-                              </div>
-                            </div>
-                            <div class="card-but">
-                              <my-button name="鏌ョ湅璇︽儏"   site="form" />
-                              <my-button name="瀵煎嚭鍑哄簱鍗�" site="form" />
-                            </div>
-                          </el-card>
-                        </el-col>
-                    </el-row>
-              </div>
-              <el-pagination
-                :small="false"
-                :current-page="1"
-                :page-sizes="[5, 10, 20, 50, 100, 200, 300, 400, 500]"
-                :page-size="10"
-                layout="total, sizes, prev, pager, next, jumper"
-                :total="0"
-                @size-change="handleSizeChange"
-                @current-change="handleCurrentChange"
-              />
-            </el-col>
-          </el-row>
-          <!--娣诲姞/缂栬緫寮圭獥-->
-          <el-dialog title="鏂板鍑哄簱"  :close-on-click-modal="false" :visible.sync="adddialog" width="60%" >
-            <el-form ref="ruleForm" :model="formData" class="demo-ruleForm" label-width="100px">
-              <el-row :gutter="24" class="headerHeight">
-                  <el-col :span="12">
-                    <el-form-item label="浠撳簱鍚嶇О" prop="name">
-                      <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
-                    </el-form-item>
-                  </el-col>
-                  <el-col :span="12">
-                    <el-form-item label="浠撳簱鍚嶇О" prop="name">
-                      <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-                <el-row :gutter="24" class="headerHeight">
-                  <el-col :span="24">
-                    <el-form-item label="鍑哄簱鎵嬬画" prop="name">                      
-                      浠呭厑璁稿鍏ls銆亁lsx鏍煎紡鏂囦欢
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-                <div style="position: relative;">
-                  <div style="background-color: #F9F9F9;width: 90%;">
-                  <el-row :gutter="24" class="">
-                    <el-col :span="12">
-                      <el-form-item label="浠撳簱鍚嶇О" prop="name">
-                        <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
-                      </el-form-item>
-                    </el-col>
-                    <el-col :span="12">
-                      <el-form-item label="浠撳簱鍚嶇О" prop="name">
-                        <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
-                      </el-form-item>
-                    </el-col>
-                  </el-row>
-                  <el-row :gutter="24" class="">
-                    <el-col :span="12">
-                      <el-form-item label="浠撳簱鍚嶇О" prop="name">
-                        <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
-                      </el-form-item>
-                    </el-col>
-                  </el-row>
-                  <el-table :data="formData.tableData" height="100%"  :stripe="true">
-                    <el-table-column prop="projectName" label="瑙勬牸鍨嬪彿" align="center"> </el-table-column>
-                    <el-table-column prop="time1" label="鍗曚綅"  align="center"> </el-table-column>
-                    <el-table-column prop="unit" label="鐜版湁搴撳瓨" align="center"> </el-table-column>
-                    <el-table-column prop="time2" label="鍑哄簱鏁伴噺"  align="center"> </el-table-column>
-                  </el-table>
-                  </div>
-                  <div style="position: absolute;right: 0;top: 152px;">
-                    <my-button style="display: block;margin-left: 10px;margin-bottom: 5px;" name="绉婚櫎" site="form"/>
-                    <my-button name="鏂板鐗╁搧" site="form"/>
-                  </div>
-                </div>
-            </el-form>
-            <div slot="footer" align="center" class="dialog-footer">
-              <my-button name="纭畾" site="form" />
-              <my-button name="鍙栨秷" site="form" @click="adddialog = false"/>
+      <el-card class="box-card" style="width: 100%" shadow="never">
+        <!--鎼滅储鏉′欢-->
+        <div class="filter-container">
+          <my-search ref="searchBar" :items="items" @search="fifterForm"></my-search>
+        </div>
+        <el-row style="margin-top: 15px">
+          <el-col>
+            <!--鍒楄〃-->
+            <div class="table-tool-bar" style="margin-bottom: 15px;">
+              <my-button name="鏂板" @click="handleAdd" site="tools" size="medium" />
             </div>
-          </el-dialog>
-        </el-card>
-      </el-container>
+            <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">
+                            <el-button site="form" type="success" size="mini" @click="handleExport(item)"
+                              >瀵煎嚭閫�鍥炲崟</el-button
+                            >
+                          <el-button name="鏌ョ湅璇︽儏" site="form" type="info" size="mini" @click="handleDetail(item)"
+                            >鏌ョ湅璇︽儏</el-button
+                          >
+                        </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>
+                      </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>
+                          </div>
+                        </div>
+                      </div>
+                    </div>
+                  </el-card>
+                </el-col>
+              </el-row>
+              <div class="no-data" v-else>鏆傛棤鏁版嵁</div>
+            </div>
+            <el-pagination
+              :small="false"
+              :current-page="pageNum"
+              :page-sizes="[5, 10, 20, 50, 100, 200, 300, 400, 500]"
+              :page-size="pageSize"
+              layout="total, sizes, prev, pager, next, jumper"
+              :total="total"
+              @size-change="handleSizeChange"
+              @current-change="handleCurrentChange"
+            />
+          </el-col>
+        </el-row>
+      </el-card>
     </el-container>
-    <my-import
-      :import-setting="importSetting"
-      :dialog-show="importSetting.dialogShow"
-      :dialog-title="importSetting.dialogTitle"
-    />
+    <!--娣诲姞/缂栬緫寮圭獥-->
+    <edit v-if="editSetting.show" :setting="editSetting" ref="editRef" @close="editSetting.show=false" @search="refreshData"></edit>
+    <detail v-if="detailSetting.show" :setting="detailSetting" @close="detailSetting.show=false" ref="detailRef"></detail>
   </div>
 </template>
 
 <script>
-import MyButton from "@/components/myButton/myButton";
-import SettingIplatform from '@/utils/settingIplatform';
-import myImport from '@/views/components/myImport'
-import {getBaseUrl} from '@/utils/base';
+import { outputList } from '@/api/stock/accessStock';
+import MyButton from '@/components/myButton/myButton';
+import myImport from '@/views/components/myImport';
+import edit from './edit';
+import detail from './detail';
+import listPage from '../../../mixins/listPage'
 
 export default {
-  name: "index",
-  components: {MyButton, myImport},
+  name: 'index',
+  mixins: [listPage],
+  components: { MyButton, myImport, edit, detail },
   data() {
     return {
-      
-      adddialog: false,
-      formData:{
-        tableData:[
-          {
-            projectName:'555'
-          },
-          {
-            projectName:'444'
-          }
-        ],
-      },
+      list: [],
       // 鎼滅储妗�
       items: [
         {
           type: 'text',
-          dataIndex: 'name',
-          label: '鍑哄簱鍗曞彿',
+          dataIndex: 'businessFormCode',
+          label: '閫�鍥炲崟鍙�',
           placeholder: '璇疯緭鍏�',
-          defaultValue: ''
+          defaultValue: '',
         },
         {
           type: 'text',
-          dataIndex: 'name',
+          dataIndex: 'goodsName',
           label: '鐗╁搧鍚嶇О',
           placeholder: '鍙ā绯婃悳绱�',
-          defaultValue: ''
-        },
-        {
-          type: 'text',
-          dataIndex: 'name',
-          label: '鍒涘缓浜�',
-          placeholder: '璇疯緭鍏�',
-          defaultValue: ''
+          defaultValue: '',
         },
         {
           type: 'date-picker',
-          dataIndex: 'val1',
-          label: '鍑哄簱鏃堕棿',
-          defaultValue: ''
+          dataIndex: 'startTime',
+          label: '閫�鍥炴椂闂�',
+          defaultValue: '',
         },
         {
           type: 'date-picker',
-          dataIndex: 'val2',
+          dataIndex: 'endTime',
           label: '鑷�',
-          defaultValue: ''
+          defaultValue: '',
         },
-        // {
-        //   type: 'select',
-        //   dataIndex: 'status',
-        //   label: '鐘舵��',
-        //   placeholder: '璇烽�夋嫨',
-        //   defaultValue: '1',
-        //   options: [
-        //     {
-        //       label: '鍚敤',
-        //       value: '1'
-        //     },
-        //     {
-        //       label: '绂佺敤',
-        //       value: '0'
-        //     }
-        //   ]
-        // }
       ],
-      proData: [
-        {
-          order_no:'55555',
-          customer_name:'666',
-          data:[
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'20浠�'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-          ]
-        },
-        {
-          order_no:'55555',
-          customer_name:'666',
-          data:[
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-          ]
-        },
-        {
-          order_no:'55555',
-          customer_name:'666',
-          data:[
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'20浠�'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-          ]
-        },
-        {
-          order_no:'55555',
-          customer_name:'666',
-          data:[
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'20浠�'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-          ]
-          
-        },
-        {
-          order_no:'55555',
-          customer_name:'666',
-          data:[
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'20浠�'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-          ]
-          
-        },
-        {
-          order_no:'55555',
-          customer_name:'666',
-          data:[
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'20浠�'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-          ]
-          
-        },
-        {
-          order_no:'55555',
-          customer_name:'666',
-          data:[
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'20浠�'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-          ]
-          
-        }
-      ],
-      // 鏍戞暟鎹�
-      treeDataList: [],
-      // 鎼滅储鏉′欢
-      filterFrom: {
-        tenantId: null,
-        userName: null,
-        userPhone: null,
-        status: 1
-      },
-      // 瀵煎叆
-      importSetting: {
-          dialogTitle: '瀵煎叆',
-          dialogShow: false,
-          fileSettings: {
-              data: {},
-              uploadUrl: getBaseUrl()+"/pc/fin/sys/tenant/import", // 涓婁紶鍦板潃
-              accept: '.xls', // 鏍煎紡
-              type: 'text', // 鍥炴樉褰㈠紡
-              loading: false // 瀵煎叆鏁堟灉
-          },
-          /* 妯℃澘涓嬭浇 */
-          templateSettings: {
-              templateName: '瀵煎叆妯℃澘.xls', // 鍚嶇О
-              templateUrl: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/getImportTemplate' // 涓嬭浇鍦板潃
-          },
-          onSuccess: null
-      },
-      editSetting: {
-        title: '',
-        id: '',
-        orgId: '',
-        show: false,
-      },
-    }
-  },
-  computed: {
-    clientHeight () {
-      return document.documentElement.clientHeight
-    },
-  },
-  created() {
+    };
   },
   methods: {
-    handleSizeChange(){},
-    handleCurrentChange(){},
-    //瀵煎叆
-    importOrg() {
-        this.importSetting.dialogShow = true
-        this.importSetting.onSuccess = (response, callBack) => {
-            if (response.code===1){
-              this.$message.success(response.msg)
-              this.search(1)
-            }else{
-              this.$message.warning(response.msg)
-            }
-            callBack()
-        }
-    },
-   
-    addtable() {
-      this.adddialog = true
-    },
-    // 鏌ヨtable鍒楄〃
-    search(pageNum) {
-      if (pageNum != undefined) {
-        // this.$refs.myTable.search(pageNum)
-      } else {
-        // this.$refs.myTable.search()
-      }
+    fetchData() {
+      this.loading = true;
+      outputList({
+        pageNum: this.pageNum,
+        pageSize: this.pageSize,
+        ...this.filterFrom,
+      }).then((res) => {
+        this.list = res.datas;
+        this.total = res.totalRows;
+        this.loading = false;
+      });
     },
     fifterForm(params) {
-      console.log(params,'555');
-      this.filterFrom = Object.assign(this.filterFrom, params)
-      this.search(1)
-    }
-  }
-}
+      this.filterFrom = Object.assign(this.filterFrom, params);
+      if (this.filterFrom.startTime) {
+        this.filterFrom.startTime = this.filterFrom.startTime.replace(/\-/g, '');
+      }
+      if (this.filterFrom.endTime) {
+        this.filterFrom.endTime = this.filterFrom.endTime.replace(/\-/g, '');
+      }
+      if (this.filterFrom.agencyId&&this.filterFrom.agencyId.length) {
+        this.filterFrom.agencyId = this.filterFrom.agencyId[this.filterFrom.agencyId.length - 1];
+      }
+      this.search(1);
+    },
+  },
+};
 </script>
 
-<style scoped>
-.card {
-    display: flex;
-    flex-wrap: wrap;
-    margin: 0px !important;
-    .cm-item {
-        width: 100%;
-    }
-    .cm-item /deep/ .el-card__body {
-        padding: 10px;
-    }
-}
-.card-data{
-  margin-top: 8px;
-  .card-container{
-    display: inline-block; 
-    width: 70%;
-    .hed-one{
-      color: #2298EE;
-      font-size: 18px;
-    }
-    .one-hed{
-      margin-top: 15px;
-      .box{
-        display: inline-block;  
-        margin-right: 20px;  
-      }
-    }
-    .span-two{
-      color: #83919e;
-      font-size: 14px;
-    }
-    .card-end{
-      font-size: 14px;
-      color: #3d3d3d;
-      margin-top: 15px;
-      display: flex;  
-      flex-wrap: wrap; 
-      .two-end{
-        width: calc(33.33% - 20px); 
-        margin-bottom: 15px; 
-      }
-    }
-    
-  }
-  .card-but{
-    display: inline-block; 
-  }
-  .end{
-    display: inline-block;  
-  }
-  
-}
-
+<style scoped lang="scss">
+@import url(../../../../styles/store.scss);
 </style>
diff --git a/admin-web/src/views/departmentitem/ledgerquy/itemQuy/index.vue b/admin-web/src/views/departmentitem/ledgerquy/itemQuy/index.vue
index 2936cd9..cdc889c 100644
--- a/admin-web/src/views/departmentitem/ledgerquy/itemQuy/index.vue
+++ b/admin-web/src/views/departmentitem/ledgerquy/itemQuy/index.vue
@@ -13,16 +13,9 @@
               <my-table-v2 ref="myTable" :filter="filterFrom" :table="table"/>
             </el-col>
           </el-row>
-          <!--娣诲姞/缂栬緫寮圭獥-->
-          <edit v-if="editSetting.show" :setting="editSetting" @close="editSetting.show = false" @search="search"/>
         </el-card>
       </el-container>
     </el-container>
-    <my-import
-      :import-setting="importSetting"
-      :dialog-show="importSetting.dialogShow"
-      :dialog-title="importSetting.dialogTitle"
-    />
   </div>
 </template>
 
@@ -30,41 +23,32 @@
 import MyTableV2 from "@/components/myTable/myTableV2";
 import MyButton from "@/components/myButton/myButton";
 import SettingIplatform from '@/utils/settingIplatform';
-import edit from './edit'
 import * as finsystenant from '@/api/baseSetting/finsystenant'
-import myImport from '@/views/components/myImport'
 import {getBaseUrl} from '@/utils/base';
 
 export default {
   name: "index",
-  components: {MyButton, MyTableV2, edit, myImport},
+  components: {MyButton, MyTableV2,},
   data() {
     return {
       // 鎼滅储妗�
       items: [
         {
-          type: 'text',
-          dataIndex: 'name',
-          label: '鍗曞彿',
-          placeholder: '璇疯緭鍏�',
-          defaultValue: ''
+          type: 'cascader',
+          dataIndex: 'agencyId',
+          label: '鏈烘瀯',
+          placeholder: '璇烽�夋嫨',
+          optionsConfig: { url: '/pc/fin/sys/tenant/select/tree_fin_tenant', props: null },
+          defaultValue: '',
+          options: [],
         },
         {
           type: 'select',
-          dataIndex: 'status',
-          label: '绫诲瀷',
+          dataIndex: 'name',
+          label: '閮ㄩ棬',
           placeholder: '璇烽�夋嫨',
-          defaultValue: '1',
-          options: [
-            {
-              label: '鍚敤',
-              value: '1'
-            },
-            {
-              label: '绂佺敤',
-              value: '0'
-            }
-          ]
+          defaultValue: '',
+          options: [],
         },
         {
           type: 'text',
@@ -74,11 +58,20 @@
           defaultValue: ''
         },
         {
-          type: 'text',
+          type: 'select',
           dataIndex: 'name',
-          label: '鍒涘缓浜�',
-          placeholder: '璇疯緭鍏�',
-          defaultValue: ''
+          label: '鍒嗙被',
+          placeholder: '璇烽�夋嫨',
+          defaultValue: '',
+          options: [],
+        },
+        {
+          type: 'select',
+          dataIndex: 'name',
+          label: '绫诲埆',
+          placeholder: '璇烽�夋嫨',
+          defaultValue: '',
+          options: [],
         },
       ],
       // 鏍戞暟鎹�
@@ -89,24 +82,6 @@
         userName: null,
         userPhone: null,
         status: 1
-      },
-      // 瀵煎叆
-      importSetting: {
-          dialogTitle: '瀵煎叆',
-          dialogShow: false,
-          fileSettings: {
-              data: {},
-              uploadUrl: getBaseUrl()+"/pc/fin/sys/tenant/import", // 涓婁紶鍦板潃
-              accept: '.xls', // 鏍煎紡
-              type: 'text', // 鍥炴樉褰㈠紡
-              loading: false // 瀵煎叆鏁堟灉
-          },
-          /* 妯℃澘涓嬭浇 */
-          templateSettings: {
-              templateName: '瀵煎叆妯℃澘.xls', // 鍚嶇О
-              templateUrl: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/getImportTemplate' // 涓嬭浇鍦板潃
-          },
-          onSuccess: null
       },
       editSetting: {
         title: '',
@@ -133,15 +108,14 @@
         },
         // 鍒椾俊鎭�
         columns: [
-          {title: '绫诲瀷', field: 'name', align: 'left',},
-          {title: '鍗曞彿', field: 'code', align: 'center'},
-          {title: '鐗╁搧鍚嶇О', field: 'lv', align: 'center', },
-          {title: '瑙勬牸鍨嬪彿', field: 'lv', align: 'center', },
-          {title: '鍑哄叆搴撴暟閲�', field: 'summary', align: 'left',},
-          {title: '閲戦', field: 'summary', align: 'left',},
-          {title: '鎵�灞炴満鏋�', field: 'summary', align: 'left',},
-          {title: '鍒涘缓浜�', field: 'summary', align: 'left',},
-          {title: '鎿嶄綔鏃堕棿', field: 'summary', align: 'left',},
+          {title: '鏈烘瀯', field: 'name', align: 'left',},
+          {title: '閮ㄩ棬', field: 'code', align: 'center'},
+          {title: '鍒嗙被', field: 'lv', align: 'center', },
+          {title: '鎵�灞炵被鍒�', field: 'lv', align: 'center', },
+          {title: '鐗╁搧鍚嶇О', field: 'summary', align: 'left',},
+          {title: '瑙勬牸鍨嬪彿', field: 'summary', align: 'left',},
+          {title: '鍗曚綅', field: 'summary', align: 'left',},
+          {title: '鍦ㄧ敤鏁伴噺', field: 'summary', align: 'left',},
         ],
         // 鎿嶄綔淇℃伅
         operation: {
@@ -170,94 +144,13 @@
     }
   },
   created() {
-    // 鑾峰彇鏈烘瀯鏍�
-    this.initTreeData()
   },
   methods: {
-    //瀵煎叆
-    importOrg() {
-        this.importSetting.dialogShow = true
-        this.importSetting.onSuccess = (response, callBack) => {
-            if (response.code===1){
-              this.$message.success(response.msg)
-              this.search(1)
-            }else{
-              this.$message.warning(response.msg)
-            }
-            callBack()
-        }
-    },
-    // 宸︿晶鏍戝垵濮嬪寲
-    initTreeData() {
-      finsystenant.getTree().then(res => {
-        const content = res || []
-        this.treeDataList.splice(0, this.treeDataList.length)
-        this.treeDataList = content
-        if (content.length > 0) {
-          this.importSetting.fileSettings.data = {pid: content[0].id}
-        }
-      })
-    },
-    updState(row) {
-      let vm = this
-      let text = row.status == 0 ? "鍚敤" : "绂佺敤";
-      vm.$modal.confirm('纭瑕�' + text + '"' + row.name + '"鍚楋紵').then(function () {
-        let params = Object.assign({}, row)
-        params.status = row.status == 1 ? 0 : 1
-        finsystenant.edit(params).then(res => {
-          if (res) {
-            row.status = row.status === 1 ? 0 : 1
-            vm.$modal.msgSuccess(text + "鎴愬姛");
-            vm.search()
-          }
-        })
-      })
-    },
-    del(row) {
-      this.$modal
-        .confirm('鏄惁纭鍒犻櫎鍚嶇О涓�"' + row.name + '"鐨勬満鏋勫悧锛�')
-        .then(function () {
-          finsystenant.del({id: row.id}).then((res) => {
-          });
-        })
-        .then((res) => {
-          this.$message.success('鍒犻櫎鎴愬姛锛�');
-          this.search()
-        })
-        .catch(() => {
-        });
-    },
-    showAdd() {
-      // if (!this.editSetting.orgId) {
-      //   this.$message.warning('璇峰厛閫夋嫨宸︿晶鏈烘瀯')
-      // } else {
-        this.editSetting.id = null;
-        this.editSetting.info = null;
-        this.editSetting.title = '鏂板';
-        this.editSetting.show = true;
-      // }
-    },
     showAudit(row) {
       this.editSetting.id = row.id;
       this.editSetting.info = JSON.stringify(row);
       this.editSetting.title = '缂栬緫';
       this.editSetting.show = true;
-    },
-    nodeClick(param) {
-      param = param || {}
-      this.p = Object.assign({}, {
-        id: param.id,
-        name: param.name
-      })
-      if (this.p.id != undefined && this.p.id != null) {
-        this.filterFrom.tenantId = this.p.id
-        this.editSetting.orgId = this.p.id
-      } else {
-        this.filterFrom.tenantId = null
-        this.editSetting.orgId = null
-      }
-      this.importSetting.fileSettings.data = {pid: param.id}
-      this.search(1)
     },
     // 鏌ヨtable鍒楄〃
     search(pageNum) {
diff --git a/admin-web/src/views/departmentitem/ledgerquy/ledQuy/index.vue b/admin-web/src/views/departmentitem/ledgerquy/ledQuy/index.vue
index 2936cd9..532bb3f 100644
--- a/admin-web/src/views/departmentitem/ledgerquy/ledQuy/index.vue
+++ b/admin-web/src/views/departmentitem/ledgerquy/ledQuy/index.vue
@@ -10,44 +10,60 @@
           <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>
-          <!--娣诲姞/缂栬緫寮圭獥-->
-          <edit v-if="editSetting.show" :setting="editSetting" @close="editSetting.show = false" @search="search"/>
         </el-card>
       </el-container>
     </el-container>
-    <my-import
-      :import-setting="importSetting"
-      :dialog-show="importSetting.dialogShow"
-      :dialog-title="importSetting.dialogTitle"
-    />
   </div>
 </template>
 
 <script>
-import MyTableV2 from "@/components/myTable/myTableV2";
-import MyButton from "@/components/myButton/myButton";
+import MyTableV2 from '@/components/myTable/myTableV2';
+import MyButton from '@/components/myButton/myButton';
 import SettingIplatform from '@/utils/settingIplatform';
-import edit from './edit'
-import * as finsystenant from '@/api/baseSetting/finsystenant'
-import myImport from '@/views/components/myImport'
-import {getBaseUrl} from '@/utils/base';
+import * as finsystenant from '@/api/baseSetting/finsystenant';
+import { getBaseUrl } from '@/utils/base';
 
 export default {
-  name: "index",
-  components: {MyButton, MyTableV2, edit, myImport},
+  name: 'index',
+  components: { MyButton, MyTableV2 },
   data() {
     return {
       // 鎼滅储妗�
       items: [
         {
+          type: 'cascader',
+          dataIndex: 'agencyId',
+          label: '鏈烘瀯',
+          placeholder: '璇烽�夋嫨',
+          optionsConfig: { url: '/pc/fin/sys/tenant/select/tree_fin_tenant', props: null },
+          defaultValue: '',
+          options: [],
+        },
+        {
+          type: 'select',
+          dataIndex: 'name',
+          label: '閮ㄩ棬',
+          placeholder: '璇疯緭鍏�',
+          defaultValue: '',
+          options: [],
+        },
+        {
           type: 'text',
           dataIndex: 'name',
-          label: '鍗曞彿',
+          label: '鐗╁搧鍚嶇О',
           placeholder: '璇疯緭鍏�',
-          defaultValue: ''
+          defaultValue: '',
+        },
+        {
+          type: 'select',
+          dataIndex: 'name',
+          label: '瑙勬牸鍨嬪彿',
+          placeholder: '璇疯緭鍏�',
+          defaultValue: '',
+          options: [],
         },
         {
           type: 'select',
@@ -58,27 +74,39 @@
           options: [
             {
               label: '鍚敤',
-              value: '1'
+              value: '1',
             },
             {
               label: '绂佺敤',
-              value: '0'
-            }
-          ]
+              value: '0',
+            },
+          ],
         },
         {
           type: 'text',
           dataIndex: 'name',
-          label: '鐗╁搧鍚嶇О',
+          label: '鍗曞彿',
           placeholder: '璇疯緭鍏�',
-          defaultValue: ''
+          defaultValue: '',
         },
         {
           type: 'text',
           dataIndex: 'name',
-          label: '鍒涘缓浜�',
+          label: '鎿嶄綔浜�',
           placeholder: '璇疯緭鍏�',
-          defaultValue: ''
+          defaultValue: '',
+        },
+        {
+          type: 'date-picker',
+          dataIndex: 'dealTimeStart',
+          label: '鏃堕棿',
+          defaultValue: '',
+        },
+        {
+          type: 'date-picker',
+          dataIndex: 'dealTimeEnd',
+          label: '鑷�',
+          defaultValue: '',
         },
       ],
       // 鏍戞暟鎹�
@@ -88,25 +116,7 @@
         tenantId: null,
         userName: null,
         userPhone: null,
-        status: 1
-      },
-      // 瀵煎叆
-      importSetting: {
-          dialogTitle: '瀵煎叆',
-          dialogShow: false,
-          fileSettings: {
-              data: {},
-              uploadUrl: getBaseUrl()+"/pc/fin/sys/tenant/import", // 涓婁紶鍦板潃
-              accept: '.xls', // 鏍煎紡
-              type: 'text', // 鍥炴樉褰㈠紡
-              loading: false // 瀵煎叆鏁堟灉
-          },
-          /* 妯℃澘涓嬭浇 */
-          templateSettings: {
-              templateName: '瀵煎叆妯℃澘.xls', // 鍚嶇О
-              templateUrl: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/getImportTemplate' // 涓嬭浇鍦板潃
-          },
-          onSuccess: null
+        status: 1,
       },
       editSetting: {
         title: '',
@@ -121,27 +131,37 @@
         url: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/select/list', // 璇锋眰鍦板潃
         // 宸ュ叿鏉�
         tools: {
-          columnsCtrl: {// 鍒楁帶鍒舵寜閽�
-            show: false
+          columnsCtrl: {
+            // 鍒楁帶鍒舵寜閽�
+            show: false,
           },
-          generalExport: {// 閫氱敤瀵煎嚭鎸夐挳
-            show: false
+          generalExport: {
+            // 閫氱敤瀵煎嚭鎸夐挳
+            show: false,
           },
           // 鑷畾涔夊伐鍏锋潯鎸夐挳
-          custom: [
-          ]
+          custom: [],
         },
         // 鍒椾俊鎭�
         columns: [
-          {title: '绫诲瀷', field: 'name', align: 'left',},
-          {title: '鍗曞彿', field: 'code', align: 'center'},
-          {title: '鐗╁搧鍚嶇О', field: 'lv', align: 'center', },
-          {title: '瑙勬牸鍨嬪彿', field: 'lv', align: 'center', },
-          {title: '鍑哄叆搴撴暟閲�', field: 'summary', align: 'left',},
-          {title: '閲戦', field: 'summary', align: 'left',},
-          {title: '鎵�灞炴満鏋�', field: 'summary', align: 'left',},
-          {title: '鍒涘缓浜�', field: 'summary', align: 'left',},
-          {title: '鎿嶄綔鏃堕棿', field: 'summary', align: 'left',},
+          { title: '鏈烘瀯', field: 'name', align: 'left' },
+          { title: '閮ㄩ棬', field: 'code', align: 'center' },
+          { title: '鐗╁搧鍚嶇О', field: 'lv', align: 'center' },
+          { title: '瑙勬牸鍨嬪彿', field: 'lv', align: 'center' },
+          { title: '绫诲瀷', field: 'summary', align: 'left' },
+          { title: '鍗曞彿', field: 'summary', align: 'left' },
+          { title: '鏁伴噺', field: 'summary', align: 'left' },
+          { title: '鎿嶄綔鍓嶆暟閲�', field: 'summary', align: 'left' },
+          { title: '鎿嶄綔鍚庢暟閲�', field: 'summary', align: 'left' },
+          {
+            title: '鎿嶄綔鏃堕棿',
+            field: 'summary',
+            align: 'left',
+            width: 160,
+            formatter: (row) => {
+              return { value: DateFormatter.LongToDateTime(row.procureTime) };
+            },
+          },
         ],
         // 鎿嶄綔淇℃伅
         operation: {
@@ -163,118 +183,34 @@
             small: false,
             pageNum: 1,
             pageSize: 10,
-            total: 0
-          }
-        }
+            total: 0,
+          },
+        },
       },
-    }
+    };
   },
-  created() {
-    // 鑾峰彇鏈烘瀯鏍�
-    this.initTreeData()
-  },
+  created() {},
   methods: {
-    //瀵煎叆
-    importOrg() {
-        this.importSetting.dialogShow = true
-        this.importSetting.onSuccess = (response, callBack) => {
-            if (response.code===1){
-              this.$message.success(response.msg)
-              this.search(1)
-            }else{
-              this.$message.warning(response.msg)
-            }
-            callBack()
-        }
-    },
-    // 宸︿晶鏍戝垵濮嬪寲
-    initTreeData() {
-      finsystenant.getTree().then(res => {
-        const content = res || []
-        this.treeDataList.splice(0, this.treeDataList.length)
-        this.treeDataList = content
-        if (content.length > 0) {
-          this.importSetting.fileSettings.data = {pid: content[0].id}
-        }
-      })
-    },
-    updState(row) {
-      let vm = this
-      let text = row.status == 0 ? "鍚敤" : "绂佺敤";
-      vm.$modal.confirm('纭瑕�' + text + '"' + row.name + '"鍚楋紵').then(function () {
-        let params = Object.assign({}, row)
-        params.status = row.status == 1 ? 0 : 1
-        finsystenant.edit(params).then(res => {
-          if (res) {
-            row.status = row.status === 1 ? 0 : 1
-            vm.$modal.msgSuccess(text + "鎴愬姛");
-            vm.search()
-          }
-        })
-      })
-    },
-    del(row) {
-      this.$modal
-        .confirm('鏄惁纭鍒犻櫎鍚嶇О涓�"' + row.name + '"鐨勬満鏋勫悧锛�')
-        .then(function () {
-          finsystenant.del({id: row.id}).then((res) => {
-          });
-        })
-        .then((res) => {
-          this.$message.success('鍒犻櫎鎴愬姛锛�');
-          this.search()
-        })
-        .catch(() => {
-        });
-    },
-    showAdd() {
-      // if (!this.editSetting.orgId) {
-      //   this.$message.warning('璇峰厛閫夋嫨宸︿晶鏈烘瀯')
-      // } else {
-        this.editSetting.id = null;
-        this.editSetting.info = null;
-        this.editSetting.title = '鏂板';
-        this.editSetting.show = true;
-      // }
-    },
     showAudit(row) {
       this.editSetting.id = row.id;
       this.editSetting.info = JSON.stringify(row);
       this.editSetting.title = '缂栬緫';
       this.editSetting.show = true;
     },
-    nodeClick(param) {
-      param = param || {}
-      this.p = Object.assign({}, {
-        id: param.id,
-        name: param.name
-      })
-      if (this.p.id != undefined && this.p.id != null) {
-        this.filterFrom.tenantId = this.p.id
-        this.editSetting.orgId = this.p.id
-      } else {
-        this.filterFrom.tenantId = null
-        this.editSetting.orgId = null
-      }
-      this.importSetting.fileSettings.data = {pid: param.id}
-      this.search(1)
-    },
     // 鏌ヨtable鍒楄〃
     search(pageNum) {
       if (pageNum != undefined) {
-        this.$refs.myTable.search(pageNum)
+        this.$refs.myTable.search(pageNum);
       } else {
-        this.$refs.myTable.search()
+        this.$refs.myTable.search();
       }
     },
     fifterForm(params) {
-      this.filterFrom = Object.assign(this.filterFrom, params)
-      this.search(1)
-    }
-  }
-}
+      this.filterFrom = Object.assign(this.filterFrom, params);
+      this.search(1);
+    },
+  },
+};
 </script>
 
-<style scoped>
-
-</style>
+<style scoped></style>
diff --git a/admin-web/src/views/foundation/store/person.vue b/admin-web/src/views/foundation/store/person.vue
index 1a4e5dc..9c153c4 100644
--- a/admin-web/src/views/foundation/store/person.vue
+++ b/admin-web/src/views/foundation/store/person.vue
@@ -1,5 +1,5 @@
 <template>
-  <win-md :title="setting.title" @close="close" :width="'800px'">
+  <win-md :title="setting.title" @close="close" :width="'800px'" :loading="loading">
     <div class="section-container">
       <div class="section-left">
         <div class="header-row"><span class="title">閫夋嫨浜哄憳锛�</span></div>
@@ -52,6 +52,8 @@
   },
   data() {
     return {
+      loading:true,
+      loadingText:'鍔犺浇涓�',
       selectdSections: [],
       treeData: [],
       formData: {},
@@ -64,15 +66,10 @@
   },
   computed: {
     checkedKeys() {
-      console.log(
-        1111,
-        this.selectdSections.map((v) => v.id),
-      );
       return this.selectdSections.map((v) => v.id);
     },
   },
   created() {
-    console.log(this.setting);
     if (this.setting.info) {
       this.formData = Object.assign({}, JSON.parse(this.setting.info));
     }
@@ -84,6 +81,7 @@
         return item;
       });
       this.key = Math.random();
+    this.loading = false
     });
   },
   methods: {
@@ -145,12 +143,16 @@
           managerName: item.name,
         });
       });
-      debugger;
-      warehouseManagerAdd(params).then((res) => {
+      setTimeout(()=>{
         this.$message.success('淇濆瓨鎴愬姛锛�');
         this.close();
         this.$emit('search');
-      });
+      },6000)
+      // warehouseManagerAdd(params).then((res) => {
+      //   this.$message.success('淇濆瓨鎴愬姛锛�');
+      //   this.close();
+      //   this.$emit('search');
+      // });
     },
   },
 };
diff --git a/admin-web/src/views/stock/accessStock/outbound/detail.vue b/admin-web/src/views/stock/accessStock/outbound/detail.vue
index 9ad74bf..0cd965a 100644
--- a/admin-web/src/views/stock/accessStock/outbound/detail.vue
+++ b/admin-web/src/views/stock/accessStock/outbound/detail.vue
@@ -1,5 +1,5 @@
 <template>
-  <win-md class="stock-detail" :title="setting.title" @close="close" :width="'800px'">
+  <win-md class="stock-detail" :title="setting.title" @close="close" :width="'800px'" :loading="loading">
     <el-row :gutter="20">
       <el-col :span="8">
         <span>鍑哄簱鍗曞彿锛�</span>
@@ -82,6 +82,7 @@
   },
   data() {
     return {
+      loading:true,
       detail: {
         categoryName: '',
         businessFormCode: '',
@@ -106,6 +107,7 @@
   created() {
     outputDetail({ id: this.setting.id }).then((res) => {
       this.detail = res;
+      this.loading = false
     });
   },
   methods: {
diff --git a/admin-web/src/views/stock/accessStock/outbound/edit.vue b/admin-web/src/views/stock/accessStock/outbound/edit.vue
index 1521f03..2146305 100644
--- a/admin-web/src/views/stock/accessStock/outbound/edit.vue
+++ b/admin-web/src/views/stock/accessStock/outbound/edit.vue
@@ -169,7 +169,7 @@
     </el-form>
     <div slot="footer" align="center" class="dialog-footer">
       <my-button name="鍙栨秷" site="form" @click="close" />
-      <my-button name="淇濆瓨" site="form" @click="handleSubmit" />
+      <el-button name="淇濆瓨" type="primary" size="medium" :loading="btnloading" @click="handleSubmit">淇濆瓨</el-button>
     </div>
   </win-md>
 </template>
@@ -211,6 +211,7 @@
     };
     return {
       loading: false,
+      btnloading: false,
       warehouseOptions: [], // 鍑哄簱浠撳簱鍒楄〃
       categoryOptions: [], // 鐗╁搧鍒嗙被鍒楄〃
       modelList: [], //鍨嬪彿鍒楄〃
@@ -432,19 +433,23 @@
     handleSubmit() {
       this.$refs['ruleForm'].validate((valid) => {
         if (valid) {
+          this.btnloading = true;
           console.log('this.formData', this.formData);
           outputAdd(this.formData)
             .then((res) => {
               this.$message.success('淇濆瓨鎴愬姛锛�');
+              this.btnloading = false;
               this.close();
               this.$emit('search');
             })
             .catch((err) => {
               console.log('edit err', err);
+              this.btnloading = false;
               this.$message.error('淇濆瓨澶辫触');
             });
         } else {
           this.$message.error('鏍¢獙鏈�氳繃锛岃妫�鏌ャ��');
+          this.btnloading = false;
         }
       });
     },
diff --git a/admin-web/src/views/stock/accessStock/outboundDetails/index.vue b/admin-web/src/views/stock/accessStock/outboundDetails/index.vue
index e94ddb1..58e8656 100644
--- a/admin-web/src/views/stock/accessStock/outboundDetails/index.vue
+++ b/admin-web/src/views/stock/accessStock/outboundDetails/index.vue
@@ -51,13 +51,16 @@
           label: '绫诲瀷',
           placeholder: '璇烽�夋嫨',
           defaultValue: '',
-          options: [{
-            label:'閲囪喘鍏ュ簱',
-            value:1
-          },{
-            label:'閫�杩樺叆搴�',
-            value:2
-          }],
+          options: [
+            {
+              label: '閲囪喘鍏ュ簱',
+              value: 1,
+            },
+            {
+              label: '閫�杩樺叆搴�',
+              value: 2,
+            },
+          ],
         },
         {
           type: 'select',
@@ -152,7 +155,15 @@
           { title: '閲戦', field: 'totalPrice', align: 'left' },
           { title: '鎵�灞炴満鏋�', field: 'agencyName', align: 'left' },
           { title: '鍒涘缓浜�', field: 'createdName', align: 'left' },
-          { title: '鎿嶄綔鏃堕棿', field: 'dealTime', align: 'left' },
+          {
+            title: '鎿嶄綔鏃堕棿',
+            field: 'dealTime',
+            align: 'center',
+            width: 160,
+            formatter: (row) => {
+              return { value: DateFormatter.LongToDateTime(row.createTime) };
+            },
+          },
         ],
         // 鎿嶄綔淇℃伅
         operation: {
diff --git a/admin-web/src/views/stock/index.scss b/admin-web/src/views/stock/index.scss
index 1d33fb1..bc1f7ec 100644
--- a/admin-web/src/views/stock/index.scss
+++ b/admin-web/src/views/stock/index.scss
@@ -2,7 +2,8 @@
   .ml-20 {
     margin-left: 20px;
   }
-  .card,.list-item {
+  .card,
+  .list-item {
     display: flex;
     flex-wrap: wrap;
     margin: 0px !important;
@@ -47,7 +48,7 @@
           text-align: center;
           border-radius: 4px;
           border: 1px solid #f9675b99;
-          background: rgba($color:#f9675b99,$alpha:0.1);
+          background: rgba($color: #f9675b99, $alpha: 0.1);
           font-family: 'Microsoft YaHei';
           color: #f9675b;
           font-size: 13px;
@@ -57,17 +58,17 @@
         }
         .states-success {
           border: 1px solid #39ad6199;
-          background: rgba($color:#39ad6199,$alpha:0.1);
+          background: rgba($color: #39ad6199, $alpha: 0.1);
           color: #39ad61;
         }
         .states-info {
           border: 1px solid #999999;
-          background: rgba($color:#999999,$alpha:0.1);
+          background: rgba($color: #999999, $alpha: 0.1);
           color: #999999;
         }
         .states-warning {
           border: 1px solid #e6a23c;
-          background: rgba($color:#e6a23c,$alpha:0.1);
+          background: rgba($color: #e6a23c, $alpha: 0.1);
           color: #e6a23c;
         }
       }
@@ -128,15 +129,19 @@
       }
     }
   }
+  .el-pagination {
+    display: flex;
+    justify-content: flex-end;
+  }
 }
-.no-data{
+.no-data {
   margin-top: 100px;
   text-align: center;
   color: #909399;
 }
 
 /*缂栬緫*/
-.stock-edit{
+.stock-edit {
   .main-w {
     width: 88%;
   }
@@ -169,7 +174,7 @@
 }
 
 /*璇︽儏*/
-.stock-detail{
+.stock-detail {
   .img-row {
     display: flex;
     align-content: center;
@@ -185,7 +190,7 @@
       width: 100%;
     }
   }
-  
+
   .goods-card {
     position: relative;
     background: #f6f6f6;
@@ -198,4 +203,4 @@
       margin-top: 0;
     }
   }
-}
\ No newline at end of file
+}
diff --git a/admin-web/src/views/stock/inventorycount/inventorytask/detail.vue b/admin-web/src/views/stock/inventorycount/inventorytask/detail.vue
index 1f26174..4c66b66 100644
--- a/admin-web/src/views/stock/inventorycount/inventorytask/detail.vue
+++ b/admin-web/src/views/stock/inventorycount/inventorytask/detail.vue
@@ -8,11 +8,6 @@
     <el-table v-loading="loading" :data="formData.tableData" height="100%" :stripe="true" class="the-table">
       <el-table-column prop="goodsTemplateName" label="鐗╁搧鍚嶇О"> </el-table-column>
       <el-table-column prop="baseGoodsModelsId" label="鍨嬪彿" align="center"> </el-table-column>
-      <el-table-column prop="classification" label="璐疆鏃ユ湡"> </el-table-column>
-      <el-table-column prop="unit" label="浣跨敤閮ㄩ棬" align="center"> </el-table-column>
-      <el-table-column prop="kc" label="浣跨敤浜�" align="center"> </el-table-column>
-      <el-table-column prop="price" label="鍗曚环" align="center"> </el-table-column>
-      <el-table-column prop="inventoryResult" label="閲戦" align="center"> </el-table-column>
       <el-table-column prop="inventoryCounts" label="搴旂洏鏁伴噺" align="center"></el-table-column>
       <el-table-column prop="inventoryCounts" label="瀹炵洏鏁伴噺" align="center"></el-table-column>
       <el-table-column prop="inventoryCounts" label="鐘舵��" align="center"></el-table-column>
diff --git a/admin-web/src/views/stock/inventorycount/inventorytask/edit.vue b/admin-web/src/views/stock/inventorycount/inventorytask/edit.vue
index 2ce7f4d..4d9bc93 100644
--- a/admin-web/src/views/stock/inventorycount/inventorytask/edit.vue
+++ b/admin-web/src/views/stock/inventorycount/inventorytask/edit.vue
@@ -15,21 +15,21 @@
           <el-option v-for="item in warehouseOptions" :key="item.id" :label="item.warehouseName" :value="item.id" />
         </el-select>
       </el-form-item>
-      <el-form-item label="鐩樼偣浜�" prop="operatorId">
-        <el-select v-model="formData.operatorId" placeholder="璇烽�夋嫨" style="width: 100%">
-          <el-option v-for="item in operatorOptions" :key="item.id" :label="item.warehouseName" :value="item.id" />
+      <el-form-item label="鐩樼偣浜�" prop="operatorUserId">
+        <el-select v-model="formData.operatorUserId" placeholder="璇烽�夋嫨" style="width: 100%">
+          <el-option v-for="item in operatorOptions" :key="item.id" :label="item.managerName" :value="item.managerId" />
         </el-select>
       </el-form-item>
-      <el-form-item label="鐩戠洏浜�" prop="operatorId2">
-        <el-select v-model="formData.operatorId2" placeholder="璇烽�夋嫨" style="width: 100%">
-          <el-option v-for="item in operatorOptions" :key="item.id" :label="item.warehouseName" :value="item.id" />
+      <el-form-item label="鐩戠洏浜�" prop="monitorUserId">
+        <el-select v-model="formData.monitorUserId" placeholder="璇烽�夋嫨" style="width: 100%">
+          <el-option v-for="item in operatorOptions2" :key="item.id" :label="item.userName" :value="item.id" />
         </el-select>
       </el-form-item>
-      <el-form-item label="澶囨敞" prop="beiz1">
+      <el-form-item label="澶囨敞" prop="remark">
         <el-input
           type="textarea"
           placeholder="璇疯緭鍏ュ唴瀹�"
-          v-model="formData.beiz1"
+          v-model="formData.remark"
           resize="none"
           maxlength="100"
           show-word-limit
@@ -44,11 +44,12 @@
 </template>
 
 <script>
-import { selectTenantWarehouse } from '@/api/baseSetting/finsystenant';
+import { selectTenantWarehouse, tenantUserQueryUser } from '@/api/baseSetting/finsystenant';
 import { inventoryAdd, inventoryEdit } from '@/api/stock/inventory';
+import { warehouseManagerList } from '@/api/foudation/store';
 import winSm from '@/components/win/win-sm';
 import myButton from '@/components/myButton/myButton';
-import {formatDate} from '@/utils/DateFormatter'
+import { formatDate } from '@/utils/DateFormatter';
 import { mapGetters } from 'vuex';
 
 export default {
@@ -64,35 +65,47 @@
       checkAll: false,
       checkedList: [],
       warehouseOptions: [], // 浠撳簱鍒楄〃
-      operatorOptions:[],
+      operatorOptions: [],
+      operatorOptions2: [],
       formData: {},
       rules: {
         businessFormName: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }],
         warehouseId: [{ required: true, message: '璇烽�夋嫨', trigger: 'blur' }],
-        operatorId: [{ required: true, message: '璇烽�夋嫨', trigger: 'blur' }],
-        operatorId2: [{ required: true, message: '璇烽�夋嫨', trigger: 'blur' }],
+        operatorUserId: [{ required: true, message: '璇烽�夋嫨', trigger: 'blur' }],
+        monitorUserId: [{ required: true, message: '璇烽�夋嫨', trigger: 'blur' }],
       },
     };
   },
-  computed:{
-    ...mapGetters(['userInfo'])
+  computed: {
+    ...mapGetters(['userInfo']),
   },
   created() {
     if (this.setting.info) {
-      this.formData = Object.assign({}, JSON.parse(this.setting.info));
-    }else {
-      this.formData.businessFormName = formatDate(new Date(),'yyyy骞碝M鏈堜唤鐩樼偣')
+      // this.formData = Object.assign({}, JSON.parse(this.setting.info));
+    } else {
+      this.formData.businessFormName = formatDate(new Date(), 'yyyy骞碝M鏈堜唤鐩樼偣');
     }
     this.handleSelectTenantWarehouse();
-    let temp = 
-    this.formData.operatorId = '1109327915216504'
-    this.formData.operatorId2 = '10990356630810'
+    this.getPdr();
+    this.getJpr();
   },
   methods: {
     // 鑾峰彇浠撳簱鍒楄〃
     handleSelectTenantWarehouse() {
-      selectTenantWarehouse({agencyId:this.userInfo.tenantId}).then((res) => {
+      selectTenantWarehouse({ agencyId: this.userInfo.tenantId }).then((res) => {
         this.warehouseOptions = res;
+      });
+    },
+    // 鑾峰彇鐩樼偣浜�
+    getPdr() {
+      warehouseManagerList({ tenantId: this.userInfo.tenantId }).then((res) => {
+        this.operatorOptions = res;
+      });
+    },
+    // 鑾峰彇鐩戠洏浜�
+    getJpr() {
+      tenantUserQueryUser({ tenantId: this.userInfo.tenantId }).then((res) => {
+        this.operatorOptions2 = res;
       });
     },
     getEditInfo(id) {},
@@ -106,23 +119,15 @@
           if (this.setting.id) {
             // 缂栬緫鎺ュ彛
             inventoryEdit(params).then((res) => {
-              if (res) {
-                this.$message.success('淇濆瓨鎴愬姛锛�');
-                this.close();
-                this.$emit('search');
-              } else {
-                this.$message.error('淇濆瓨澶辫触');
-              }
+              this.$message.success('淇濆瓨鎴愬姛锛�');
+              this.close();
+              this.$emit('search');
             });
           } else {
             inventoryAdd(params).then((res) => {
-              if (res) {
-                this.$message.success('淇濆瓨鎴愬姛锛�');
-                this.close();
-                this.$emit('search');
-              } else {
-                this.$message.error('淇濆瓨澶辫触');
-              }
+              this.$message.success('淇濆瓨鎴愬姛锛�');
+              this.close();
+              this.$emit('search');
             });
           }
         } else {
diff --git a/admin-web/src/views/stock/inventorycount/inventorytask/index.vue b/admin-web/src/views/stock/inventorycount/inventorytask/index.vue
index a8ce8af..411bdbd 100644
--- a/admin-web/src/views/stock/inventorycount/inventorytask/index.vue
+++ b/admin-web/src/views/stock/inventorycount/inventorytask/index.vue
@@ -42,7 +42,8 @@
 import myImport from '@/views/components/myImport';
 import { getBaseUrl } from '@/utils/base';
 import { selectTenantWarehouse } from '@/api/baseSetting/finsystenant';
-import {inventoryListApi} from '@/api/stock/inventory'
+import { inventoryListApi } from '@/api/stock/inventory';
+import * as DateFormatter from '@/utils/DateFormatter';
 
 export default {
   name: 'index',
@@ -157,9 +158,36 @@
           { title: '鐩樼偣浠撳簱', field: 'warehouseName', align: 'center' },
           { title: '鐩樼偣浜�', field: 'operatorName', align: 'center' },
           { title: '鐩戠洏浜�', field: 'operatorName2', align: 'left' },
-          { title: '鐩樼偣鏃堕棿', field: 'inventoryDate', align: 'left' },
-          { title: '鍒涘缓鏃堕棿', field: 'createTime', align: 'left' },
-          { title: '鐘舵��', field: 'states', align: 'left' },
+          {
+            title: '鐩樼偣鏃堕棿',
+            field: 'inventoryDate',
+            align: 'center',
+            width: 160,
+            formatter: (row) => {
+              return { value: row.inventoryDate ? DateFormatter.LongToDateTime(row.inventoryDate) : '-' };
+            },
+          },
+          {
+            title: '鍒涘缓鏃堕棿',
+            field: 'createTime',
+            align: 'center',
+            width: 160,
+            formatter: (row) => {
+              return { value: DateFormatter.LongToDateTime(row.createTime) };
+            },
+          },
+          {
+            title: '鐘舵��',
+            field: 'states',
+            align: 'left',
+            type: 'primary',
+            formatter: (row) => {
+              return {
+                value: row.states == 0 ? '鏈紑濮�' : row.states == 1 ? '杩涜涓�' : '宸茬洏鐐�',
+                type: row.states == 0 ? 'danger' : row.states == 1 ? 'success' : 'primary',
+              };
+            },
+          },
         ],
         // 鎿嶄綔淇℃伅
         operation: {
@@ -195,17 +223,17 @@
     };
   },
   created() {
-    selectTenantWarehouse().then(res=>{
-      this.items.forEach(v=>{
-        if(v.label=='鐩樼偣浠撳簱') {
-          v.options = res.map(item=>{
-            item.label=item.warehouseName
-            item.vlaue=item.id
-            return item
-          })
+    selectTenantWarehouse().then((res) => {
+      this.items.forEach((v) => {
+        if (v.label == '鐩樼偣浠撳簱') {
+          v.options = res.map((item) => {
+            item.label = item.warehouseName;
+            item.vlaue = item.id;
+            return item;
+          });
         }
-      })
-    })
+      });
+    });
   },
   methods: {
     //瀵煎叆
diff --git a/admin-web/src/views/stock/ledger/inventoryQuery/index.vue b/admin-web/src/views/stock/ledger/inventoryQuery/index.vue
index 4f67bc0..617ee74 100644
--- a/admin-web/src/views/stock/ledger/inventoryQuery/index.vue
+++ b/admin-web/src/views/stock/ledger/inventoryQuery/index.vue
@@ -16,11 +16,7 @@
         </el-card>
       </el-container>
     </el-container>
-    <my-import
-      :import-setting="importSetting"
-      :dialog-show="importSetting.dialogShow"
-      :dialog-title="importSetting.dialogTitle"
-    />
+    
   </div>
 </template>
 
@@ -29,14 +25,14 @@
 import MyButton from '@/components/myButton/myButton';
 import SettingIplatform from '@/utils/settingIplatform';
 import * as finsystenant from '@/api/baseSetting/finsystenant';
-import myImport from '@/views/components/myImport';
 import { getBaseUrl } from '@/utils/base';
-import { selectTenantWarehouse, getCategorySelectTree } from '@/api/baseSetting/finsystenant';
+import { selectTenantWarehouse, getCategorySelectTree, treeList } from '@/api/baseSetting/finsystenant';
 import { getDicts } from '@/api/system/dict/data';
+import { doExport } from '@/api/stock/ledger';
 
 export default {
   name: 'index',
-  components: { MyButton, MyTableV2, myImport },
+  components: { MyButton, MyTableV2 },
   data() {
     return {
       // 鎼滅储妗�
@@ -60,15 +56,14 @@
         },
         {
           type: 'text',
-          dataIndex: 'name',
+          dataIndex: 'goodsTemplateName',
           label: '鐗╁搧鍚嶇О',
           placeholder: '璇疯緭鍏�',
           defaultValue: '',
         },
         {
           type: 'select',
-          dataIndex: 'modelsIds',
-          multiple: true,
+          dataIndex: 'categoryId',
           label: '鍒嗙被',
           placeholder: '璇烽�夋嫨',
           defaultValue: '',
@@ -76,7 +71,7 @@
         },
         {
           type: 'select',
-          dataIndex: 'warehouseId',
+          dataIndex: 'costType',
           label: '绫诲埆',
           placeholder: '璇烽�夋嫨',
           defaultValue: '',
@@ -92,35 +87,11 @@
         userPhone: null,
         status: 1,
       },
-      // 瀵煎叆
-      importSetting: {
-        dialogTitle: '瀵煎叆',
-        dialogShow: false,
-        fileSettings: {
-          data: {},
-          uploadUrl: getBaseUrl() + '/pc/fin/sys/tenant/import', // 涓婁紶鍦板潃
-          accept: '.xls', // 鏍煎紡
-          type: 'text', // 鍥炴樉褰㈠紡
-          loading: false, // 瀵煎叆鏁堟灉
-        },
-        /* 妯℃澘涓嬭浇 */
-        templateSettings: {
-          templateName: '瀵煎叆妯℃澘.xls', // 鍚嶇О
-          templateUrl: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/getImportTemplate', // 涓嬭浇鍦板潃
-        },
-        onSuccess: null,
-      },
-      editSetting: {
-        title: '',
-        id: '',
-        orgId: '',
-        show: false,
-      },
       // 琛ㄦ牸鏁版嵁
       table: {
         showIndex: true, // 鏄惁鏄剧ず搴忓彿
         expand: false, // 鏄惁鏄剧ず璇︽儏鏁版嵁
-        url: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/select/list', // 璇锋眰鍦板潃
+        url: SettingIplatform.apiBaseURL + '/pc/fin/warehouse/ledger/getList', // 璇锋眰鍦板潃
         // 宸ュ叿鏉�
         tools: {
           columnsCtrl: {
@@ -132,18 +103,26 @@
             show: false,
           },
           // 鑷畾涔夊伐鍏锋潯鎸夐挳
-          custom: [],
+          custom: [
+            {
+              name: '瀵煎嚭',
+              icon: 'el-icon-download',
+              click: () => {
+                this.handleExport();
+              },
+            },
+          ],
         },
         // 鍒椾俊鎭�
         columns: [
-          { title: '绫诲瀷', field: 'name', align: 'left' },
-          { title: '浠撳簱', field: 'code', align: 'center' },
-          { title: '鍒嗙被', field: 'lv', align: 'center' },
-          { title: '鎵�灞炵被鍒�', field: 'lv', align: 'center' },
-          { title: '鐗╁搧鍚嶇О', field: 'summary', align: 'left' },
-          { title: '瑙勬牸鍨嬪彿', field: 'summary', align: 'left' },
-          { title: '鍗曚綅', field: 'summary', align: 'left' },
-          { title: '褰撳墠搴撳瓨', field: 'summary', align: 'left' },
+          { 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' },
         ],
         paging: {
           show: true, // 鏄剧ず鍒嗛〉
@@ -168,35 +147,79 @@
           if (v.label == '浠撳簱') {
             v.options = res.map((item) => {
               item.label = item.warehouseName;
-              item.vlaue = item.id;
+              item.value = item.id;
               return item;
             });
           }
         });
+        console.log('this.items', this.items);
       });
       getDicts('GOODS_PRICE').then((res) => {
+        // 浠峰�肩被鍨�1A 2B 3C
         this.items.forEach((v) => {
           if (v.label == '绫诲埆') {
             v.options = res.map((v) => {
               v.label = v.dict_label;
-              v.value = v.dict_value;
+              if (v.dict_value == 'A') {
+                v.value = 1;
+              } else if (v.dict_value == 'B') {
+                v.value = 2;
+              } else {
+                v.value = 3;
+              }
               return v;
             });
           }
         });
       });
-      getCategorySelectTree().then((res) => {
+      treeList().then((res) => {
         this.items.forEach((v) => {
           if (v.label == '鍒嗙被') {
             v.options = res.map((item) => {
-              item.label = item.label;
-              item.vlaue = item.id;
+              item.label = item.categoryName;
+              item.value = item.id;
               return item;
             });
           }
         });
       });
     },
+
+    // 瀵煎嚭
+    handleExport() {
+      let loading = this.$loading({
+        lock: true,
+        text: '瀵煎嚭涓紝璇风◢鍊�...',
+        spinner: 'el-icon-loading',
+        background: 'rgba(0, 0, 0, 0.7)',
+      });
+      // 鍒ゆ柇鎬绘潯鏁版槸鍚﹀ぇ浜庢渶澶ф敮鎸佹潯鏁�
+      doExport({ ...this.filterFrom })
+        .then((res) => {
+          const blob = new Blob([res], { type: 'application/vnd.ms-excel' });
+          const fileName = `搴撳瓨鏌ヨ.xls`;
+          if ('download' in document.createElement('a')) {
+            // 闈濱E涓嬭浇
+            const elink = document.createElement('a');
+            elink.download = fileName;
+            elink.style.display = 'none';
+            elink.href = URL.createObjectURL(blob);
+            document.body.appendChild(elink);
+            elink.click();
+            URL.revokeObjectURL(elink.href);
+            document.body.removeChild(elink);
+          } else {
+            // IE10+涓嬭浇
+            navigator.msSaveBlob(blob, fileName);
+          }
+          this.$message.success('瀵煎嚭鎴愬姛锛�');
+          loading.close();
+        })
+        .catch(() => {
+          loading.close();
+        });
+    },
+
     // 鏌ヨtable鍒楄〃
     search(pageNum) {
       if (pageNum != undefined) {
@@ -207,6 +230,9 @@
     },
     fifterForm(params) {
       this.filterFrom = Object.assign(this.filterFrom, params);
+      if (params.agencyId && params.agencyId.length) {
+        this.filterFrom.agencyId = params.agencyId[params.agencyId.length - 1];
+      }
       this.search(1);
     },
   },
diff --git a/admin-web/src/views/stock/procure/purchaseOrder/detail.vue b/admin-web/src/views/stock/procure/purchaseOrder/detail.vue
index 4dc2ce5..480d5fc 100644
--- a/admin-web/src/views/stock/procure/purchaseOrder/detail.vue
+++ b/admin-web/src/views/stock/procure/purchaseOrder/detail.vue
@@ -1,5 +1,5 @@
 <template>
-  <win-md class="stock-detail" :title="setting.title" @close="close" :width="'800px'">
+  <win-md class="stock-detail" :title="setting.title" @close="close" :width="'800px'" :loading="loading">
     <el-row :gutter="20">
       <el-col :span="8">
         <span>鍏ュ簱鍗曞彿锛�</span>
@@ -119,6 +119,7 @@
   },
   data() {
     return {
+      loading:true,
       fileList: [],
       detail: {
         baseCategoryName: '',
@@ -146,6 +147,7 @@
   },
   created() {
     procureDetail({ id: this.setting.id }).then((res) => {
+      this.loading = false
       this.detail = res;
       this.fileList = this.detail.procureDoc ? JSON.parse(this.detail.procureDoc) : [];
       this.$nextTick(() => {
diff --git a/admin-web/src/views/stock/procure/purchaseOrder/edit.vue b/admin-web/src/views/stock/procure/purchaseOrder/edit.vue
index 7d8cc0c..6b4a2a1 100644
--- a/admin-web/src/views/stock/procure/purchaseOrder/edit.vue
+++ b/admin-web/src/views/stock/procure/purchaseOrder/edit.vue
@@ -1,5 +1,5 @@
 <template>
-  <win-md class="stock-edit" :title="`${setting.title}閲囪喘鍏ュ簱`" @close="close" :width="'800px'">
+  <win-md class="stock-edit" :title="`${setting.title}閲囪喘鍏ュ簱`" @close="close" :width="'800px'" :loading="loading">
     <el-form class="form" ref="ruleForm" :model="formData" :rules="rules" label-width="120px">
       <div class="main-w">
         <el-row :gutter="24" class="headerHeight">
@@ -256,7 +256,7 @@
       callback();
     };
     return {
-      loading: false,
+      loading: true,
       buyTypeOptions: [
         {
           label: '闆嗛噰',
@@ -361,6 +361,7 @@
           return item;
         });
       }
+      this.loading = false;
     },
 
     // 鑾峰彇鍏ュ簱浠撳簱鍒楄〃
@@ -502,8 +503,8 @@
     handleSubmit() {
       this.$refs['ruleForm'].validate((valid) => {
         if (valid) {
+          this.loading = true;
           console.log('formData', this.formData);
-          debugger;
           if (!this.setting.id) {
             procureAdd(this.formData)
               .then((res) => {
@@ -513,6 +514,7 @@
               })
               .catch((err) => {
                 console.log('create err', err);
+                this.loading = false;
                 this.$message.error('淇濆瓨澶辫触');
               });
           } else {
@@ -524,6 +526,7 @@
               })
               .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 621f136..33b64a6 100644
--- a/admin-web/src/views/stock/procure/purchaseOrder/index.vue
+++ b/admin-web/src/views/stock/procure/purchaseOrder/index.vue
@@ -120,7 +120,7 @@
 import edit from './edit';
 import detail from './detail';
 import { getBaseUrl } from '@/utils/base';
-import listPage from '../../../mixins/listPage'
+import listPage from '../../../mixins/listPage';
 
 export default {
   name: 'index',
@@ -249,17 +249,29 @@
     },
     // 鍏ュ簱
     handleIncome(row) {
-      this.$confirm(`鎮ㄧ‘瀹� 鍗曞彿锛�${row.businessFormCode}  鍏ュ簱鍚�?`, '閲囪喘鍏ュ簱').then(() => {
-        procureIncome({ id: row.id })
-          .then((res) => {
-            this.$message.success('鍏ュ簱鎴愬姛锛�');
-            this.search();
-          })
-          .catch(() => {});
+      this.$confirm(`鎮ㄧ‘瀹� 鍗曞彿锛�${row.businessFormCode}  鍏ュ簱鍚�?`, '閲囪喘鍏ュ簱', {
+        beforeClose: (action, instance, done) => {
+          if (action == 'confirm') {
+            instance.confirmButtonLoading = true;
+            instance.confirmButtonText = '鎵ц涓�...';
+            procureIncome({ id: row.id })
+              .then((res) => {
+                this.$message.success('鍏ュ簱鎴愬姛锛�');
+                done();
+                instance.confirmButtonLoading = false;
+                this.search();
+              })
+              .catch(() => {
+                done();
+              });
+          } else {
+            done();
+          }
+        },
       });
     },
     del(row) {
-      this.$modal.confirm('鏄惁纭鍒犻櫎鍏ュ簱鍗曞彿涓�"' + row.businessFormCode + '"鐨勬暟鎹悧锛�').then( () => {
+      this.$modal.confirm('鏄惁纭鍒犻櫎鍏ュ簱鍗曞彿涓�"' + row.businessFormCode + '"鐨勬暟鎹悧锛�').then(() => {
         procureDel({ id: row.id })
           .then((res) => {
             this.$message.success('鍒犻櫎鎴愬姛锛�');
diff --git a/admin-web/src/views/stock/transfer/transferApplication/detail.vue b/admin-web/src/views/stock/transfer/transferApplication/detail.vue
index 6249a6d..db84e75 100644
--- a/admin-web/src/views/stock/transfer/transferApplication/detail.vue
+++ b/admin-web/src/views/stock/transfer/transferApplication/detail.vue
@@ -1,5 +1,5 @@
 <template>
-  <win-md class="stock-detail" :title="setting.title" @close="close" :width="'800px'">
+  <win-md class="stock-detail" :title="setting.title" @close="close" :width="'800px'" :loading="loading">
     <div v-loading="loading">
       <el-row :gutter="20">
         <el-col :span="8">
@@ -91,7 +91,7 @@
   },
   data() {
     return {
-      loading: false,
+      loading: true,
       detail: {},
       fileList:[]
     };
@@ -103,7 +103,6 @@
     },
   },
   created() {
-    this.loading = true;
     transferDetail({ id: this.setting.id }).then((res) => {
       this.detail = res;
       this.fileList = this.detail.procureDoc ? JSON.parse(this.detail.procureDoc) : [];
diff --git a/admin-web/src/views/stock/transfer/transferApplication/index.vue b/admin-web/src/views/stock/transfer/transferApplication/index.vue
index 497b784..6720ce6 100644
--- a/admin-web/src/views/stock/transfer/transferApplication/index.vue
+++ b/admin-web/src/views/stock/transfer/transferApplication/index.vue
@@ -220,11 +220,25 @@
 
     // 鍏ュ簱
     handleIncome(row) {
-      this.$confirm(`鎮ㄧ‘瀹� 鍗曞彿锛�${row.businessFormCode}  鎺ユ敹鍏ュ簱鍚�?`, '鎺ユ敹鍏ュ簱').then(() => {
-        transfeIncome({ id: row.id }).then((res) => {
-          this.$message.success('鎺ユ敹鍏ュ簱鎴愬姛锛�');
-          this.search(1);
-        });
+      this.$confirm(`鎮ㄧ‘瀹� 鍗曞彿锛�${row.businessFormCode}  鎺ユ敹鍏ュ簱鍚�?`, '鎺ユ敹鍏ュ簱', {
+        beforeClose: (action, instance, done) => {
+          if (action == 'confirm') {
+            instance.confirmButtonLoading = true;
+            instance.confirmButtonText = '鎵ц涓�...';
+            transfeIncome({ id: row.id })
+              .then((res) => {
+                this.$message.success('鎺ユ敹鍏ュ簱鎴愬姛锛�');
+                done();
+                instance.confirmButtonLoading = false;
+                this.search(1);
+              })
+              .catch(() => {
+                done();
+              });
+          } else {
+            done();
+          }
+        },
       });
     },
 
diff --git a/admin-web/src/views/stock/transfer/transferissue/index.vue b/admin-web/src/views/stock/transfer/transferissue/index.vue
index f3f2404..f938a91 100644
--- a/admin-web/src/views/stock/transfer/transferissue/index.vue
+++ b/admin-web/src/views/stock/transfer/transferissue/index.vue
@@ -24,11 +24,7 @@
                           <div v-if="item.states == 4" class="states states-info">宸叉挙閿�</div>
                         </div>
                         <div class="card-header-right">
-                          <el-button
-                            v-if="item.states == 1"
-                            site="form"
-                            type="success"
-                            size="mini"
+                          <el-button v-if="item.states == 1" site="form" type="success" size="mini"
                             >瀵煎嚭璋冩嫧鍑哄簱鍗�</el-button
                           >
                           <el-button
@@ -39,11 +35,7 @@
                             @click="handleOutput(item)"
                             >鍑哄簱</el-button
                           >
-                          <el-button
-                            v-if="item.states == 2"
-                            site="form"
-                            type="primary"
-                            size="mini"
+                          <el-button v-if="item.states == 2" site="form" type="primary" size="mini"
                             >瀵煎嚭璋冩嫧鍏ュ簱鍗�</el-button
                           >
                           <el-button name="鏌ョ湅璇︽儏" site="form" type="info" size="mini" @click="handleDetail(item)"
@@ -110,7 +102,7 @@
 </template>
 
 <script>
-import { transferList,transferOutput } from '@/api/stock/transfer';
+import { transferList, transferOutput } from '@/api/stock/transfer';
 import MyButton from '@/components/myButton/myButton';
 import myImport from '@/views/components/myImport';
 import detail from './detail';
@@ -214,12 +206,25 @@
       });
     },
     handleOutput(row) {
-      this.$confirm(`鎮ㄧ‘瀹� 鍗曞彿锛�${row.businessFormCode}  璋冩嫧鍑哄簱鍚�?`, '璋冩嫧鍑哄簱').then(() => {
-        transferOutput({ id: row.id })
-          .then((res) => {
-            this.$message.success('璋冩嫧鍑哄簱鎴愬姛锛�');
-            this.search(1);
-          })
+      this.$confirm(`鎮ㄧ‘瀹� 鍗曞彿锛�${row.businessFormCode}  璋冩嫧鍑哄簱鍚�?`, '璋冩嫧鍑哄簱', {
+        beforeClose: (action, instance, done) => {
+          if (action == 'confirm') {
+            instance.confirmButtonLoading = true;
+            instance.confirmButtonText = '鎵ц涓�...';
+            transferOutput({ id: row.id })
+              .then((res) => {
+                this.$message.success('璋冩嫧鍑哄簱鎴愬姛锛�');
+                done();
+                instance.confirmButtonLoading = false;
+                this.search(1);
+              })
+              .catch(() => {
+                done();
+              });
+          } else {
+            done();
+          }
+        },
       });
     },
     fifterForm(params) {
diff --git a/admin-web/src/views/systemManger/server/user/edit.vue b/admin-web/src/views/systemManger/server/user/edit.vue
index 14efd94..a68d1b5 100644
--- a/admin-web/src/views/systemManger/server/user/edit.vue
+++ b/admin-web/src/views/systemManger/server/user/edit.vue
@@ -87,6 +87,7 @@
         },
         data() {
             return {
+                deptmentOptions:[],
                 checkAll: false,
                 checkedList: [],
                 roleList: [

--
Gitblit v1.9.1