From 6e97c32af7572bfd121db2ad116901e84de56e51 Mon Sep 17 00:00:00 2001
From: xzg <4727863@qq.com>
Date: Wed, 13 Mar 2024 17:41:25 +0800
Subject: [PATCH] =?UTF-8?q?=E6=8A=A5=E8=A1=A8=EF=BC=8C=E6=8B=86=E5=8D=95?=
 =?UTF-8?q?=EF=BC=8C=E4=BF=AE=E5=A4=8D=E8=8B=A5=E5=B9=B2BUG?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/api/basic/basicMaterial.js                |   8 +-
 src/api/reportforms/index.js                  |  56 +++
 src/components/tablecmt/tablecmt.vue          |   1 +
 src/option/reportforms/DeliveryTrainNumber.js |  26 +-
 src/option/reportforms/Inventory.js           | 148 +++++++
 src/option/reportforms/InventoryOutbound.js   | 396 +++++++++++++-----
 src/option/reportforms/InventoryReceipt.js    | 148 +++++++
 src/option/reportforms/Selfpickupreport.js    |  20 +-
 .../driverArtery/basicdataDriverArtery.vue    |   1 +
 .../warehouse/basicdataWarehouseTemp.vue      | 258 ++++++++----
 .../inventory/distributionStockListMarket.vue | 115 +++--
 .../inventory/distrilbutionBillLading.vue     |   1 +
 src/views/reportforms/DeliveryCustomers.vue   | 171 +++++++-
 src/views/reportforms/DeliveryTrainNumber.vue | 181 +++++++-
 src/views/reportforms/Inventory.vue           | 366 ++++++++++++++++
 src/views/reportforms/InventoryOutbound.vue   |   5 +-
 src/views/reportforms/InventoryReceipt.vue    | 366 ++++++++++++++++
 17 files changed, 1985 insertions(+), 282 deletions(-)
 create mode 100644 src/option/reportforms/Inventory.js
 create mode 100644 src/option/reportforms/InventoryReceipt.js
 create mode 100644 src/views/reportforms/Inventory.vue
 create mode 100644 src/views/reportforms/InventoryReceipt.vue

diff --git a/src/api/basic/basicMaterial.js b/src/api/basic/basicMaterial.js
index b696515b..318122e5 100644
--- a/src/api/basic/basicMaterial.js
+++ b/src/api/basic/basicMaterial.js
@@ -23,7 +23,13 @@ export const getListMaterial = (current, size, params) => {
     }
   })
 }
-
+export const $_getListMaterial = (params) => {
+  return request({
+    url: '/api/logpm-basic/material//findPidList',
+    method: 'get',
+    params,
+  })
+}
 export const getDetail = (id) => {
   return request({
     url: '/api/logpm-basic/material/detail',
diff --git a/src/api/reportforms/index.js b/src/api/reportforms/index.js
index 9943023a..c5ca481c 100644
--- a/src/api/reportforms/index.js
+++ b/src/api/reportforms/index.js
@@ -82,4 +82,60 @@ export const $_getreport = (params) => {
     method: 'get',
     params,
   });
+};
+
+// 导出库存出库明细
+export const $_exportOutStocks  = (params) => {
+  return request({
+    url: '/api/logpm-report/stock/exportOutStocks',
+    method: 'get',
+    params,
+    responseType: 'blob',
+  })
+}
+
+
+// 库存品入库明细报表
+export const $_getinStocks = (params) => {
+  return request({
+    url: '/api/logpm-report/stock/inStocks',
+    method: 'get',
+    params,
+  });
+};
+// 库存品入库明细报表导出
+export const $_exportInStocks  = (params) => {
+  return request({
+    url: '/api/logpm-report/stock/exportInStocks',
+    method: 'get',
+    params,
+    responseType: 'blob',
+  })
+}
+
+// 库存品明细报表
+export const $_getInventory = (params) => {
+  return request({
+    url: '/api/logpm-report/stock/details',
+    method: 'get',
+    params,
+  });
+};
+
+// 导出库存品明细报表
+export const $_exportInventory  = (params) => {
+  return request({
+    url: '/api/logpm-report/stock/exportDetails',
+    method: 'get',
+    params,
+    responseType: 'blob',
+  })
+}
+// 获取仓库
+export const $_getMyWarehouseList = data => {
+  return request({
+    url: '/api/logpm-basicdata/warehouse/getMyWarehouseList',
+    method: 'get',
+    data,
+  });
 };
\ No newline at end of file
diff --git a/src/components/tablecmt/tablecmt.vue b/src/components/tablecmt/tablecmt.vue
index 07fb7a3e..99c18be6 100644
--- a/src/components/tablecmt/tablecmt.vue
+++ b/src/components/tablecmt/tablecmt.vue
@@ -58,6 +58,7 @@
             <el-select
               v-if="column.type == 3"
               v-model="column.values"
+              filterable
               class="m-2 selectbr"
               clearable
               :placeholder="`请选择${column.label}`"
diff --git a/src/option/reportforms/DeliveryTrainNumber.js b/src/option/reportforms/DeliveryTrainNumber.js
index f8e9231d..30408e20 100644
--- a/src/option/reportforms/DeliveryTrainNumber.js
+++ b/src/option/reportforms/DeliveryTrainNumber.js
@@ -39,7 +39,7 @@ export const columnList = [
     {
       prop: 'warehouseName',
       label: '仓库',
-      type: 2,
+      type: 3,
       values: '',
       width: '150',
       checkarr: [],
@@ -50,7 +50,7 @@ export const columnList = [
     {
       prop: 'type',
       label: '配送类型',
-      type: 1,
+      type: 3,
       values: '',
       width: '150',
       checkarr: [],
@@ -61,7 +61,7 @@ export const columnList = [
     {
       prop: 'kind',
       label: '配送种类',
-      type: 1,
+      type: 3,
       values: '',
       width: '150',
       checkarr: [],
@@ -267,14 +267,14 @@ export const columnList = [
         sortable: true,
         head: false,
       },
-    {
-      prop: 'createUserName',
-      label: '操作',
-      type: 6,
-      values: '',
-      width: '200',
-      checkarr: [],
-      fixed: 'right',
-      sortable: false,
-    },
+    // {
+    //   prop: 'createUserName',
+    //   label: '操作',
+    //   type: 6,
+    //   values: '',
+    //   width: '200',
+    //   checkarr: [],
+    //   fixed: 'right',
+    //   sortable: false,
+    // },
   ]
\ No newline at end of file
diff --git a/src/option/reportforms/Inventory.js b/src/option/reportforms/Inventory.js
new file mode 100644
index 00000000..936028f3
--- /dev/null
+++ b/src/option/reportforms/Inventory.js
@@ -0,0 +1,148 @@
+export const columnList = [
+    {
+      prop: '',
+      label: '复选框',
+      type: 0,
+      width: 55,
+      fixed: true,
+    },
+    {
+      prop: '',
+      label: '序号',
+      type: 12,
+      values: '',
+      width: 55,
+      fixed: true,
+    },
+    {
+      prop: 'warehouseName',
+      label: '仓库',
+      type: 2,
+      values: '',
+      width: '180',
+      checkarr: [],
+      fixed: false,
+      sortable: true,
+      head: false,
+    },
+    {
+      prop: 'marketName',
+      label: '商场名称',
+      type: 2,
+      values: '',
+      width: '150',
+      checkarr: [],
+      fixed: false,
+      sortable: true,
+      head: false,
+    },
+    {
+      prop: 'serviceType',
+      label: '类型',
+      type: 2,
+      values: '',
+      width: '150',
+      checkarr: [],
+      fixed: false,
+      sortable: true,
+      head: false,
+    },
+    {
+      prop: 'cargoNumber',
+      label: '物料编码',
+      type: 2,
+      values: '',
+      width: '180',
+      checkarr: [],
+      fixed: false,
+      sortable: true,
+      head: false,
+    },
+    {
+      prop: 'descriptionGoods',
+      label: '物料名称',
+      type: 2,
+      values: '',
+      width: '150',
+      checkarr: [],
+      fixed: false,
+      sortable: true,
+      head: false,
+    },
+    {
+      prop: 'quantityStock',
+      label: '入库总数',
+      type: 1,
+      values: '',
+      width: '150',
+      checkarr: [],
+      fixed: false,
+      sortable: true,
+      head: false,
+    }, 
+    {
+      prop: 'outboundQuantity',
+      label: '出库总数',
+      type: 1,
+      values: '',
+      width: '150',
+      checkarr: [],
+      fixed: false,
+      sortable: true,
+      head: false,
+    },
+     {
+        prop: 'currentQuantity',
+        label: '当前库存数',
+        type: 1,
+        values: '',
+        width: '200',
+        checkarr: [],
+        fixed: false,
+        sortable: true,
+        head: false,
+      },
+      {
+        prop: 'quantityOccupied',
+        label: '占用数',
+        type: 1,
+        values: '',
+        width: '150',
+        checkarr: [],
+        fixed: false,
+        sortable: true,
+        head: false,
+      },
+      {
+        prop: 'usableQuantity',
+        label: '可用数',
+        type: 1,
+        values: '',
+        width: '150',
+        checkarr: [],
+        fixed: false,
+        sortable: true,
+        head: false,
+      },
+      {
+        prop: 'allocationTitle',
+        label: '货位信息',
+        type: 2,
+        values: '',
+        width: '150',
+        checkarr: [],
+        fixed: false,
+        sortable: true,
+        head: false,
+      },
+    // {
+    //   prop: 'createUserName',
+    //   label: '操作',
+    //   type: 6,
+    //   values: '',
+    //   width: '200',
+    //   checkarr: [],
+    //   fixed: 'right',
+    //   sortable: false,
+    // },
+  ]
\ No newline at end of file
diff --git a/src/option/reportforms/InventoryOutbound.js b/src/option/reportforms/InventoryOutbound.js
index 9557c39f..c3929c1f 100644
--- a/src/option/reportforms/InventoryOutbound.js
+++ b/src/option/reportforms/InventoryOutbound.js
@@ -1,33 +1,274 @@
+// export const columnList = [
+//     {
+//       prop: '',
+//       label: '复选框',
+//       type: 0,
+//       width: 55,
+//       fixed: true,
+//     },
+//     {
+//       prop: '',
+//       label: '序号',
+//       type: 12,
+//       values: '',
+//       width: 55,
+//       fixed: true,
+//     },
+//     {
+//       prop: 'warehouse_name',
+//       label: '仓库',
+//       type: 2,
+//       values: '',
+//       width: '180',
+//       checkarr: [],
+//       fixed: false,
+//       sortable: true,
+//       head: false,
+//     },
+//     {
+//       prop: 'market_name',
+//       label: '商场名称',
+//       type: 2,
+//       values: '',
+//       width: '150',
+//       checkarr: [],
+//       fixed: false,
+//       sortable: true,
+//       head: false,
+//     },
+//     {
+//       prop: 'cargo_number',
+//       label: '物料编码',
+//       type: 2,
+//       values: '',
+//       width: '150',
+//       checkarr: [],
+//       fixed: false,
+//       sortable: true,
+//       head: false,
+//     },
+//     {
+//       prop: 'material_name',
+//       label: '物料名称',
+//       type: 2,
+//       values: '',
+//       width: '180',
+//       checkarr: [],
+//       fixed: false,
+//       sortable: true,
+//       head: false,
+//     },
+//     {
+//       prop: 'create_time',
+//       label: '出库时间',
+//       type: 4,
+//       values: '',
+//       width: '150',
+//       checkarr: [],
+//       fixed: false,
+//       sortable: true,
+//       head: false,
+//     },
+//     {
+//       prop: 'stock_quantity',
+//       label: '出库件数',
+//       type: 1,
+//       values: '',
+//       width: '150',
+//       checkarr: [],
+//       fixed: false,
+//       sortable: true,
+//       head: false,
+//     }, 
+//     {
+//       prop: 'goods_allocation_name',
+//       label: '货位信息',
+//       type: 2,
+//       values: '',
+//       width: '150',
+//       checkarr: [],
+//       fixed: false,
+//       sortable: true,
+//       head: false,
+//     },
+//      {
+//         prop: 'out_type',
+//         label: '出库类型',
+//         type: 2,
+//         values: '',
+//         width: '150',
+//         checkarr: [],
+//         fixed: false,
+//         sortable: true,
+//         head: false,
+//       },
+//       {
+//         prop: 'note_number',
+//         label: '配送单号',
+//         type: 2,
+//         values: '',
+//         width: '150',
+//         checkarr: [],
+//         fixed: false,
+//         sortable: true,
+//         head: false,
+//       },
+//       {
+//         prop: 'train_number',
+//         label: '配送车次号',
+//         type: 2,
+//         values: '',
+//         width: '150',
+//         checkarr: [],
+//         fixed: false,
+//         sortable: true,
+//         head: false,
+//       },
+//       {
+//         prop: 'reservation_code',
+//         label: '预约单号',
+//         type: 2,
+//         values: '',
+//         width: '150',
+//         checkarr: [],
+//         fixed: false,
+//         sortable: true,
+//         head: false,
+//       },
+//       {
+//         prop: 'client_name',
+//         label: '配送客户',
+//         type: 2,
+//         values: '',
+//         width: '150',
+//         checkarr: [],
+//         fixed: false,
+//         sortable: true,
+//         head: false,
+//       },
+      
+//     // {
+//     //   prop: 'createUserName',
+//     //   label: '操作',
+//     //   type: 6,
+//     //   values: '',
+//     //   width: '200',
+//     //   checkarr: [],
+//     //   fixed: 'right',
+//     //   sortable: false,
+//     // },
+//   ]
+
+
+
+
 export const columnList = [
-    {
-      prop: '',
-      label: '复选框',
-      type: 0,
-      width: 55,
-      fixed: true,
-    },
-    {
-      prop: '',
-      label: '序号',
-      type: 12,
-      values: '',
-      width: 55,
-      fixed: true,
-    },
-    {
-      prop: 'warehouse_name',
-      label: '仓库',
+  {
+    prop: '',
+    label: '复选框',
+    type: 0,
+    width: 55,
+    fixed: true,
+  },
+  {
+    prop: '',
+    label: '序号',
+    type: 12,
+    values: '',
+    width: 55,
+    fixed: true,
+  },
+  {
+    prop: 'warehouseName',
+    label: '仓库',
+    type: 2,
+    values: '',
+    width: '180',
+    checkarr: [],
+    fixed: false,
+    sortable: true,
+    head: false,
+  },
+  {
+    prop: 'marketName',
+    label: '商场名称',
+    type: 2,
+    values: '',
+    width: '150',
+    checkarr: [],
+    fixed: false,
+    sortable: true,
+    head: false,
+  },
+  {
+    prop: 'cargoNumber',
+    label: '物料编码',
+    type: 2,
+    values: '',
+    width: '150',
+    checkarr: [],
+    fixed: false,
+    sortable: true,
+    head: false,
+  },
+  {
+    prop: 'materialName',
+    label: '物料名称',
+    type: 2,
+    values: '',
+    width: '180',
+    checkarr: [],
+    fixed: false,
+    sortable: true,
+    head: false,
+  },
+  {
+    prop: 'createTime',
+    label: '出库时间',
+    type: 4,
+    values: '',
+    width: '150',
+    checkarr: [],
+    fixed: false,
+    sortable: true,
+    head: false,
+  },
+  {
+    prop: 'stockQuantity',
+    label: '出库件数',
+    type: 1,
+    values: '',
+    width: '150',
+    checkarr: [],
+    fixed: false,
+    sortable: true,
+    head: false,
+  }, 
+  {
+    prop: 'goodsAllocationName',
+    label: '货位信息',
+    type: 2,
+    values: '',
+    width: '150',
+    checkarr: [],
+    fixed: false,
+    sortable: true,
+    head: false,
+  },
+   {
+      prop: 'outType',
+      label: '出库类型',
       type: 2,
       values: '',
-      width: '180',
+      width: '150',
       checkarr: [],
       fixed: false,
       sortable: true,
       head: false,
     },
     {
-      prop: 'market_name',
-      label: '商场名称',
+      prop: 'noteNumber',
+      label: '配送单号',
       type: 2,
       values: '',
       width: '150',
@@ -37,8 +278,8 @@ export const columnList = [
       head: false,
     },
     {
-      prop: 'cargo_number',
-      label: '物料编码',
+      prop: 'trainNumber',
+      label: '配送车次号',
       type: 2,
       values: '',
       width: '150',
@@ -48,21 +289,10 @@ export const columnList = [
       head: false,
     },
     {
-      prop: 'material_name',
-      label: '物料名称',
+      prop: 'reservationCode',
+      label: '预约单号',
       type: 2,
       values: '',
-      width: '180',
-      checkarr: [],
-      fixed: false,
-      sortable: true,
-      head: false,
-    },
-    {
-      prop: 'create_time',
-      label: '出库时间',
-      type: 4,
-      values: '',
       width: '150',
       checkarr: [],
       fixed: false,
@@ -70,19 +300,8 @@ export const columnList = [
       head: false,
     },
     {
-      prop: 'stock_quantity',
-      label: '出库件数',
-      type: 1,
-      values: '',
-      width: '150',
-      checkarr: [],
-      fixed: false,
-      sortable: true,
-      head: false,
-    }, 
-    {
-      prop: 'goods_allocation_name',
-      label: '货位信息',
+      prop: 'clientName',
+      label: '配送客户',
       type: 2,
       values: '',
       width: '150',
@@ -91,70 +310,15 @@ export const columnList = [
       sortable: true,
       head: false,
     },
-     {
-        prop: 'out_type',
-        label: '出库类型',
-        type: 2,
-        values: '',
-        width: '150',
-        checkarr: [],
-        fixed: false,
-        sortable: true,
-        head: false,
-      },
-      {
-        prop: 'note_number',
-        label: '配送单号',
-        type: 2,
-        values: '',
-        width: '150',
-        checkarr: [],
-        fixed: false,
-        sortable: true,
-        head: false,
-      },
-      {
-        prop: 'train_number',
-        label: '配送车次号',
-        type: 2,
-        values: '',
-        width: '150',
-        checkarr: [],
-        fixed: false,
-        sortable: true,
-        head: false,
-      },
-      {
-        prop: 'reservation_code',
-        label: '预约单号',
-        type: 2,
-        values: '',
-        width: '150',
-        checkarr: [],
-        fixed: false,
-        sortable: true,
-        head: false,
-      },
-      {
-        prop: 'client_name',
-        label: '配送客户',
-        type: 2,
-        values: '',
-        width: '150',
-        checkarr: [],
-        fixed: false,
-        sortable: true,
-        head: false,
-      },
-      
-    {
-      prop: 'createUserName',
-      label: '操作',
-      type: 6,
-      values: '',
-      width: '200',
-      checkarr: [],
-      fixed: 'right',
-      sortable: false,
-    },
-  ]
\ No newline at end of file
+    
+  // {
+  //   prop: 'createUserName',
+  //   label: '操作',
+  //   type: 6,
+  //   values: '',
+  //   width: '200',
+  //   checkarr: [],
+  //   fixed: 'right',
+  //   sortable: false,
+  // },
+]
\ No newline at end of file
diff --git a/src/option/reportforms/InventoryReceipt.js b/src/option/reportforms/InventoryReceipt.js
new file mode 100644
index 00000000..1d8b4b2c
--- /dev/null
+++ b/src/option/reportforms/InventoryReceipt.js
@@ -0,0 +1,148 @@
+export const columnList = [
+    {
+      prop: '',
+      label: '复选框',
+      type: 0,
+      width: 55,
+      fixed: true,
+    },
+    {
+      prop: '',
+      label: '序号',
+      type: 12,
+      values: '',
+      width: 55,
+      fixed: true,
+    },
+    {
+      prop: 'warehouseName',
+      label: '仓库',
+      type: 2,
+      values: '',
+      width: '180',
+      checkarr: [],
+      fixed: false,
+      sortable: true,
+      head: false,
+    },
+    {
+      prop: 'marketName',
+      label: '商场名称',
+      type: 2,
+      values: '',
+      width: '150',
+      checkarr: [],
+      fixed: false,
+      sortable: true,
+      head: false,
+    },
+    {
+      prop: 'serviceType',
+      label: '类型',
+      type: 2,
+      values: '',
+      width: '150',
+      checkarr: [],
+      fixed: false,
+      sortable: true,
+      head: false,
+    },
+    {
+      prop: 'cargoNumber',
+      label: '物料编码',
+      type: 2,
+      values: '',
+      width: '180',
+      checkarr: [],
+      fixed: false,
+      sortable: true,
+      head: false,
+    },
+    {
+      prop: 'descriptionGoods',
+      label: '物料名称',
+      type: 2,
+      values: '',
+      width: '150',
+      checkarr: [],
+      fixed: false,
+      sortable: true,
+      head: false,
+    },
+    {
+      prop: 'stock_quantity',
+      label: '入库时间',
+      type: 4,
+      values: '',
+      width: '150',
+      checkarr: [],
+      fixed: false,
+      sortable: true,
+      head: false,
+    }, 
+    {
+      prop: 'despatch',
+      label: '运单号',
+      type: 2,
+      values: '',
+      width: '150',
+      checkarr: [],
+      fixed: false,
+      sortable: true,
+      head: false,
+    },
+     {
+        prop: 'orderCode',
+        label: '订单自编码',
+        type: 2,
+        values: '',
+        width: '200',
+        checkarr: [],
+        fixed: false,
+        sortable: true,
+        head: false,
+      },
+      {
+        prop: 'packageCode',
+        label: '包条码',
+        type: 2,
+        values: '',
+        width: '150',
+        checkarr: [],
+        fixed: false,
+        sortable: true,
+        head: false,
+      },
+      {
+        prop: 'quantityStock',
+        label: '入库数',
+        type: 1,
+        values: '',
+        width: '150',
+        checkarr: [],
+        fixed: false,
+        sortable: true,
+        head: false,
+      },
+      {
+        prop: 'allocationTitle',
+        label: '货位信息',
+        type: 2,
+        values: '',
+        width: '150',
+        checkarr: [],
+        fixed: false,
+        sortable: true,
+        head: false,
+      },
+    // {
+    //   prop: 'createUserName',
+    //   label: '操作',
+    //   type: 6,
+    //   values: '',
+    //   width: '200',
+    //   checkarr: [],
+    //   fixed: 'right',
+    //   sortable: false,
+    // },
+  ]
\ No newline at end of file
diff --git a/src/option/reportforms/Selfpickupreport.js b/src/option/reportforms/Selfpickupreport.js
index 2c54252d..84762884 100644
--- a/src/option/reportforms/Selfpickupreport.js
+++ b/src/option/reportforms/Selfpickupreport.js
@@ -224,14 +224,14 @@ export const columnList = [
         head: false,
       },
       
-    {
-      prop: 'createUserName',
-      label: '操作',
-      type: 6,
-      values: '',
-      width: '200',
-      checkarr: [],
-      fixed: 'right',
-      sortable: false,
-    },
+    // {
+    //   prop: 'createUserName',
+    //   label: '操作',
+    //   type: 6,
+    //   values: '',
+    //   width: '200',
+    //   checkarr: [],
+    //   fixed: 'right',
+    //   sortable: false,
+    // },
   ]
\ No newline at end of file
diff --git a/src/views/basicdata/driverArtery/basicdataDriverArtery.vue b/src/views/basicdata/driverArtery/basicdataDriverArtery.vue
index 669e5f21..11a7e5a9 100644
--- a/src/views/basicdata/driverArtery/basicdataDriverArtery.vue
+++ b/src/views/basicdata/driverArtery/basicdataDriverArtery.vue
@@ -328,6 +328,7 @@ export default {
             labelWidth: '150',
             width: '200px',
             align: 'center',
+            multiple:true,
             span: 11,
             // dicData: [],
             dicUrl: '/api/logpm-basicdata/vehicle/dictionary?vehicleNub={{key}}',
diff --git a/src/views/basicdata/warehouse/warehouse/basicdataWarehouseTemp.vue b/src/views/basicdata/warehouse/warehouse/basicdataWarehouseTemp.vue
index a357a911..0ed71d89 100644
--- a/src/views/basicdata/warehouse/warehouse/basicdataWarehouseTemp.vue
+++ b/src/views/basicdata/warehouse/warehouse/basicdataWarehouseTemp.vue
@@ -85,11 +85,15 @@
         </el-form-item>
 
         <el-form-item label="管理区域">
-          <el-cascader v-model="Addform.administrativeAreas" :options="areaoptions" placeholder="省/市/区" />
+          <el-cascader
+            v-model="Addform.administrativeAreas"
+            :options="areaoptions"
+            placeholder="省/市/区"
+          />
         </el-form-item>
 
         <el-form-item label="职能类型">
-            <el-select v-model="Addform.functionType" clearable placeholder="请选择职能类型" >
+          <el-select v-model="Addform.functionType" clearable placeholder="请选择职能类型">
             <el-option
               v-for="item in options"
               :key="item.dictKey"
@@ -100,28 +104,36 @@
         </el-form-item>
 
         <el-form-item label="仓库地区">
-          <el-cascader v-model="Addform.addressInfo" :options="areaoptions" placeholder="省/市/区" />
+          <el-cascader
+            v-model="Addform.addressInfo"
+            :options="areaoptions"
+            placeholder="省/市/区"
+          />
         </el-form-item>
 
         <el-form-item label="仓库地址">
-          <avue-input-map  :params="warehouseAddress" placeholder="请选择地图" v-model="Addform.map" ></avue-input-map>
+          <avue-input-map
+            :params="warehouseAddress"
+            placeholder="请选择地图"
+            v-model="Addform.map"
+          ></avue-input-map>
         </el-form-item>
 
         <el-form-item label="所属部门">
           <el-tree-select
-              v-model="Addform.department"
-              :data="AssessmentDepartment"
-              check-strictly
-              :render-after-expand="false"
-              style="width: 240px"
-              @node-click="BelongsearcheNodeClick"
-              clearable
-              @change="Belongingdepartment"
-            />
+            v-model="Addform.department"
+            :data="AssessmentDepartment"
+            check-strictly
+            :render-after-expand="false"
+            style="width: 240px"
+            @node-click="BelongsearcheNodeClick"
+            clearable
+            @change="Belongingdepartment"
+          />
         </el-form-item>
 
         <el-form-item label="仓库类型">
-          <el-select v-model="Addform.warehouseType" clearable placeholder="请选择仓库类型" >
+          <el-select v-model="Addform.warehouseType" clearable placeholder="请选择仓库类型">
             <el-option
               v-for="item in WarehouseType"
               :key="item.dictKey"
@@ -132,7 +144,7 @@
         </el-form-item>
 
         <el-form-item label="消防等级">
-          <el-select v-model="Addform.fireGrade" clearable placeholder="请选择消防等级" >
+          <el-select v-model="Addform.fireGrade" clearable placeholder="请选择消防等级">
             <el-option
               v-for="item in FireProtection"
               :key="item.dictKey"
@@ -143,7 +155,7 @@
         </el-form-item>
 
         <el-form-item label="是否具有消防等级">
-         <el-select v-model="Addform.fireRatingNot" clearable placeholder="请选择是否具有消防等级" >
+          <el-select v-model="Addform.fireRatingNot" clearable placeholder="请选择是否具有消防等级">
             <el-option
               v-for="item in Isprotection"
               :key="item.dictKey"
@@ -154,7 +166,7 @@
         </el-form-item>
 
         <el-form-item label="仓库结构">
-          <el-select v-model="Addform.warehouseStructure" clearable placeholder="请选择仓库结构" >
+          <el-select v-model="Addform.warehouseStructure" clearable placeholder="请选择仓库结构">
             <el-option
               v-for="item in WarehouseStructureList"
               :key="item.dictKey"
@@ -165,7 +177,7 @@
         </el-form-item>
 
         <el-form-item label="是否高架">
-          <el-select v-model="Addform.elevatedNot" clearable placeholder="请选择是否高架" >
+          <el-select v-model="Addform.elevatedNot" clearable placeholder="请选择是否高架">
             <el-option
               v-for="item in Iselevated"
               :key="item.dictKey"
@@ -180,7 +192,7 @@
         </el-form-item>
 
         <el-form-item label="电力类型">
-          <el-select v-model="Addform.powerCondition" clearable placeholder="请选择电力类型" >
+          <el-select v-model="Addform.powerCondition" clearable placeholder="请选择电力类型">
             <el-option
               v-for="item in powerConditionList"
               :key="item.dictKey"
@@ -199,7 +211,7 @@
         </el-form-item>
 
         <el-form-item label="租金类型">
-          <el-select v-model="Addform.rentType" clearable placeholder="请选择租金类型" >
+          <el-select v-model="Addform.rentType" clearable placeholder="请选择租金类型">
             <el-option
               v-for="item in rentTypeList"
               :key="item.dictKey"
@@ -210,7 +222,7 @@
         </el-form-item>
 
         <el-form-item label="仓库等级">
-          <el-select v-model="Addform.grade" clearable placeholder="请选择仓库等级" >
+          <el-select v-model="Addform.grade" clearable placeholder="请选择仓库等级">
             <el-option
               v-for="item in gradeList"
               :key="item.dictKey"
@@ -230,22 +242,54 @@
 
         <el-form-item label="日期范围">
           <el-date-picker
-        v-model="Addform.daterange"
-        type="datetimerange"
-        start-placeholder="租赁开始日期"
-        end-placeholder="租赁结束日期"
-        format="YYYY-MM-DD"
-        date-format="YYYY/MM/DD"
-        time-format="A hh:mm:ss"
-      />
+            v-model="Addform.daterange"
+            type="datetimerange"
+            start-placeholder="租赁开始日期"
+            end-placeholder="租赁结束日期"
+            format="YYYY-MM-DD"
+            date-format="YYYY/MM/DD"
+            time-format="A hh:mm:ss"
+          />
         </el-form-item>
         <el-form-item label="备注">
           <el-input v-model="Addform.remarks" placeholder="请输入日期范围" />
         </el-form-item>
         <el-form-item label="收款码">
-          <el-input v-model="Addform.paymentCodeUrl" placeholder="请上传收款码" />
-          <ImgList :imgList="imgs"></ImgList>
-          <ImgList :imgList="imgs1"></ImgList>
+          <el-upload :action="doubledCount"   :headers="headers" v-model:file-list="Addform.paymentCodeUrl" list-type="picture-card" :auto-upload="true">
+            <el-icon><Plus /></el-icon>
+
+            <template #file="{ file }">
+              <div>
+                <img class="el-upload-list__item-thumbnail" :src="file.url" alt="" />
+                <span class="el-upload-list__item-actions">
+                  <span
+                    class="el-upload-list__item-preview"
+                    @click="handlePictureCardPreview(file)"
+                  >
+                    <el-icon><zoom-in /></el-icon>
+                  </span>
+                  <span
+                    v-if="!disabled"
+                    class="el-upload-list__item-delete"
+                    @click="handleDownload(file)"
+                  >
+                    <el-icon><Download /></el-icon>
+                  </span>
+                  <span
+                    v-if="!disabled"
+                    class="el-upload-list__item-delete"
+                    @click="handleRemove(file)"
+                  >
+                    <el-icon><Delete /></el-icon>
+                  </span>
+                </span>
+              </div>
+            </template>
+          </el-upload>
+
+          <el-dialog v-model="dialogVisible">
+            <img w-full :src="dialogImageUrl" alt="Preview Image" />
+          </el-dialog>
         </el-form-item>
       </el-form>
       <template #footer>
@@ -277,36 +321,64 @@ import {
   getCurrentInstance,
 } from 'vue';
 import { columnList } from '@/option/basicdata/basicdataWarehouseTemp.js';
-import { $_getList, $_ObtainRegion,$_parentId } from '@/api/basicdata/basicdataWarehouse';
+import { $_getList, $_ObtainRegion, $_parentId } from '@/api/basicdata/basicdataWarehouse';
 import { getDictionaryBiz } from '@/api/system/dict'; //字典
+import { getToken } from '@/utils/auth';
 import { ElMessage } from 'element-plus';
+import { Delete, Download, Plus, ZoomIn } from '@element-plus/icons-vue';
 const options = ref([]); //职能类型
 const search = ref(false); //搜索展开
-const imgs=ref([
+const imgs = ref([
   'https://fuss10.elemecdn.com/3/28/bbf893f792f03a54408b3b7a7ebf0jpeg.jpeg',
   'https://fuss10.elemecdn.com/2/11/6535bcfb26e4c79b48ddde44f4b6fjpeg.jpeg',
-])
-const imgs1=ref([
+]);
+const imgs1 = ref([
   'https://fuss10.elemecdn.com/a/3f/3302e58f9a181d2509f3dc0fa68b0jpeg.jpeg',
   'https://fuss10.elemecdn.com/1/34/19aa98b1fcb2781c4fba33d850549jpeg.jpeg',
   'https://fuss10.elemecdn.com/0/6f/e35ff375812e6b0020b6b4e8f9583jpeg.jpeg',
+]);
+
+const dialogImageUrl = ref('');
+const dialogVisible = ref(false);
+const disabled = ref(false);
+
+const handleRemove = file => {
+  console.log(file);
+};
+
+const handlePictureCardPreview = file => {
+  dialogImageUrl.value = file.url;
+  dialogVisible.value = true;
+};
+
+const handleDownload = file => {
+  console.log(file);
+};
 
-])
 const query = ref({}); //顶部搜索参数
 const newlyaddload = ref(false); //新增弹窗
 const AssessmentDepartment = ref([]); //考核部门
-const department=ref()
+const department = ref();
 const Addform = ref({
-  map:[],
+  map: [],
 }); //表格新增数据表单
-const WarehouseType=ref([])//仓库类型
-const FireProtection=ref([])//消防等级
-const Isprotection=ref([])//是否具有消防等级
-const WarehouseStructureList=ref([]);//仓库结构
-const Iselevated=ref([]);//是否高架
-const powerConditionList=ref([]);//电力类型
-const rentTypeList=ref([]);//租金类型
-// 获取分类指标 
+const WarehouseType = ref([]); //仓库类型
+const FireProtection = ref([]); //消防等级
+const Isprotection = ref([]); //是否具有消防等级
+const WarehouseStructureList = ref([]); //仓库结构
+const Iselevated = ref([]); //是否高架
+const powerConditionList = ref([]); //电力类型
+const rentTypeList = ref([]); //租金类型
+const gradeList = ref([]); //仓库等级
+// 图片上传接口
+const doubledCount = computed(() => {
+  return '/api/blade-resource/oss/endpoint/put-file';
+});
+// 图片上传必须携带TOKEN
+const headers = computed(() => {
+  return { 'Blade-Auth': 'Bearer ' + getToken() };
+});
+// 获取分类指标
 // 在外部定义递归函数,用于加载和更新分类
 const loadChildren = (targetList, parentId, indicatorValue) => {
   let dataSub = { parentId };
@@ -343,7 +415,6 @@ const loadChildren = (targetList, parentId, indicatorValue) => {
   });
 };
 
-
 // 当分类项被点击时调用
 const classification = (val, index) => {
   console.log(index, '当前点击的谁');
@@ -363,8 +434,6 @@ const classification = (val, index) => {
   }
 };
 
-
-
 const BelongsearcheNodeClick = data => {
   department.value = data; //存储当前点击的考核部门
   if (data.hasChildren) {
@@ -400,7 +469,7 @@ const searchChangeS = () => {
   query.value = {};
   onLoad();
 };
-const areaoptions = ref([]);//地区
+const areaoptions = ref([]); //地区
 // 地区获取
 const initialization = () => {
   $_ObtainRegion().then(res => {
@@ -411,12 +480,9 @@ const initialization = () => {
   });
 };
 
-
 initialization();
 const searchHide = () => {};
 
-
-
 const details = reactive({
   /** 是否开启搜索 */
   search: false,
@@ -502,13 +568,13 @@ const showdrawer = _flag => {
 // 字典公共函数
 function updateDictionary(targetArray, dictionaryType) {
   getDictionaryBiz(dictionaryType).then(res => {
-   res.data.data.forEach((item)=>{
-    console.log(item);
-    targetArray.push({
-        dictKey:item.dictKey,
-        dictValue:item.dictValue,
-    })
-    })
+    res.data.data.forEach(item => {
+      console.log(item);
+      targetArray.push({
+        dictKey: item.dictKey,
+        dictValue: item.dictValue,
+      });
+    });
   });
 }
 const dictionary = () => {
@@ -520,7 +586,7 @@ const dictionary = () => {
   updateDictionary(Iselevated.value, 'yes_no'); //是否高架
   updateDictionary(powerConditionList.value, 'power_condition'); //是否高架
   updateDictionary(rentTypeList.value, 'rent_type'); //是否高架
-  updateDictionary(rentTypeList.value, 'warehouse_grade'); //仓库等级
+  updateDictionary(gradeList.value, 'warehouse_grade'); //仓库等级
 };
 // 页面初始化字典
 dictionary();
@@ -569,37 +635,41 @@ const newlyaddSubmit = () => {
   console.log(Addform.value);
 };
 // 部门选择
-const AffiliationList=ref({
-        formOption: {
-          labelWidth: 100,
-          column: [{
-            label: '自定义项',
-            prop: 'label'
-          }],
+const AffiliationList = ref({
+  formOption: {
+    labelWidth: 100,
+    column: [
+      {
+        label: '自定义项',
+        prop: 'label',
+      },
+    ],
+  },
+  lazy: true,
+  treeLoad: function (node, resolve) {
+    if (node.level === 0) {
+      return resolve([{ is_show: true, label: 'region', value: new Date().getTime() }]);
+    }
+    if (node.level > 2) return resolve([]);
+    setTimeout(() => {
+      const data = [
+        {
+          label: 'leaf',
+          is_show: true,
+          value: new Date().getTime(),
+          leaf: true,
         },
-        lazy: true,
-        treeLoad: function (node, resolve) {
-          if (node.level === 0) {
-            return resolve([{ is_show: true, label: 'region', value: new Date().getTime() }]);
-          }
-          if (node.level > 2) return resolve([]);
-          setTimeout(() => {
-            const data = [{
-              label: 'leaf',
-              is_show: true,
-              value: new Date().getTime(),
-              leaf: true
-            }, {
-              is_show: true,
-              value: new Date().getTime(),
-              label: 'zone'
-            }];
-
-            resolve(data);
-          }, 500);
+        {
+          is_show: true,
+          value: new Date().getTime(),
+          label: 'zone',
         },
-      }
-  ) 
+      ];
+
+      resolve(data);
+    }, 500);
+  },
+});
 </script>
 
 <style scoped lang="scss">
@@ -625,9 +695,11 @@ const AffiliationList=ref({
   .el-form-item {
     width: 46%;
   }
-  .el-form-item__content{
+  .el-form-item__content {
     width: 100% !important;
-    .el-select,.avue-input-map,.el-cascader{
+    .el-select,
+    .avue-input-map,
+    .el-cascader {
       width: 100% !important;
     }
   }
diff --git a/src/views/distribution/inventory/distributionStockListMarket.vue b/src/views/distribution/inventory/distributionStockListMarket.vue
index 3702c9eb..0009f560 100644
--- a/src/views/distribution/inventory/distributionStockListMarket.vue
+++ b/src/views/distribution/inventory/distributionStockListMarket.vue
@@ -143,12 +143,12 @@
                   v-model="formInline.sku"
                   placeholder="请输入sku"
                   clearable
-                  :disabled="Boolean(unpackFormDisable.sku)"
+                  :disabled="FromDis"
                 />
               </el-form-item>
               <el-form-item label="货物名称" style="width: 40%">
                 <!--                      <el-input v-model="formInline.descriptionGoods" placeholder="请输入货物名称" clearable />-->
-                <el-select
+                <!-- <el-select
                   style="width: 100%"
                   v-model="formInline.materialIdName"
                   filterable
@@ -167,6 +167,24 @@
                     :label="item.name"
                     :value="item.id"
                   />
+                </el-select> -->
+                <el-select
+                  style="width: 100%"
+                  v-model="formInline.materialIdName"
+                  filterable
+                  remote
+                  reserve-keyword
+                  placeholder="请选择物料名称"
+                  clearable
+                  :disabled="goodsDis"
+                  @change="getMethodName($event, '1')"
+                >
+                  <el-option
+                    v-for="item in optionsName"
+                    :key="item.id"
+                    :label="item.name"
+                    :value="item.id"
+                  />
                 </el-select>
               </el-form-item>
               <el-form-item label="货物单位" style="width: 40%">
@@ -178,7 +196,7 @@
                   reserve-keyword
                   remote-show-suffix
                   placeholder="请选择货物单位"
-                  :disabled="Boolean(unpackFormDisable.cargoUnit)"
+                  :disabled="FromDis"
                 >
                   <el-option
                     v-for="item in distributionUnit"
@@ -193,7 +211,7 @@
                   v-model="formInline.cargoNorms"
                   placeholder="请输入规格"
                   clearable
-                  :disabled="Boolean(unpackFormDisable.cargoNorms)"
+                  :disabled="FromDis"
                 />
               </el-form-item>
               <el-form-item label="产品编码" style="width: 40%">
@@ -201,7 +219,7 @@
                   v-model="formInline.cargoNumber"
                   placeholder="请输入产品编码"
                   clearable
-                  :disabled="Boolean(unpackFormDisable.cargoNumber)"
+                  :disabled="goodsDis || FromDis"
                 />
               </el-form-item>
               <el-form-item label="包装数量" style="width: 40%">
@@ -209,7 +227,7 @@
                   v-model="formInline.packageNum"
                   placeholder="请输入包装数量"
                   clearable
-                  :disabled="Boolean(unpackFormDisable.packageNum)"
+                  :disabled="FromDis"
                 />
               </el-form-item>
               <el-form-item label="拆箱数" style="width: 40%">
@@ -314,7 +332,7 @@ import {
   stockExport,
 } from '@/api/distribution/distributionStockList';
 import { getListParcelDetails } from '@/api/distribution/distributionParcelDetails';
-import { getListMaterial } from '@/api/basic/basicMaterial';
+import { getListMaterial, $_getListMaterial } from '@/api/basic/basicMaterial';
 import option from '@/option/distribution/distributionStockList';
 import { mapGetters } from 'vuex';
 import { exportBlob } from '@/api/common';
@@ -333,6 +351,8 @@ export default {
       unpackFormDisable: {},
       // 拆包名称下拉 选择
       optionsName: [],
+      goodsDis: true,
+      FromDis: true,
       columnList: [
         {
           prop: '',
@@ -820,24 +840,24 @@ export default {
     /**
      * 查询
      * */
-    async remoteMethodName(query) {
-      console.log('query', query);
-      if (query) {
-        this.loading = true;
-        //查询物料数据
-        let asd = await getListMaterial(this.page.currentPage, this.page.pageSize, {
-          name: query,
-          // pid: this.stockList.materialId,
-        }).then();
-        console.log('物料信息', asd.data.data);
-        if (!!asd.data.data) {
-          this.optionsName = asd.data.data.records;
-        }
-        this.loading = false;
-      } else {
-        this.optionsName = [];
-      }
-    },
+    // async remoteMethodName(query) {
+    //   console.log('query', query);
+    //   if (query) {
+    //     this.loading = true;
+    //     //查询物料数据
+    //     let asd = await getListMaterial(this.page.currentPage, this.page.pageSize, {
+    //       name: query,
+    //       pid: this.stockList.materialId,
+    //     }).then();
+    //     console.log('物料信息', asd.data.data);
+    //     if (!!asd.data.data) {
+    //       this.optionsName = asd.data.data.records;
+    //     }
+    //     this.loading = false;
+    //   } else {
+    //     this.optionsName = [];
+    //   }
+    // },
     /**
      * 物料选择赋值
      * */
@@ -1032,6 +1052,35 @@ export default {
         //   this.form.parcels = shi;
         // }
         // console.log("提交了");
+        if (this.FromDis) {
+          if (!this.formInline.materialIdName) {
+            this.$message.warning('请选择货物名称');
+            return;
+          }
+        }
+
+  
+        if (!this.formInline.sku) {
+          this.$message.warning('请输入Sku');
+          return;
+        }
+
+        if (!this.formInline.cargoUnit) {
+          this.$message.warning('请选择货物单位');
+          return;
+        }
+        if (!this.formInline.cargoNorms) {
+          this.$message.warning('请输入规格');
+          return;
+        }
+        if (!this.formInline.packageNum) {
+          this.$message.warning('请输入包装数量');
+          return;
+        }
+        if (!this.formInline.unpackingQuantity) {
+          this.$message.warning('请输入拆箱数量');
+          return;
+        }
         if (parseInt(this.formInline.unpackingQuantity) > parseInt(this.getQuery.quantityStock)) {
           this.$message.warning('拆包数量大于在库数量!!!');
           return;
@@ -1105,6 +1154,22 @@ export default {
       });
     },
     async handleViewDismantle(row) {
+      let data = {
+        pid: row.row.materialId,
+      };
+      $_getListMaterial(data).then(res => {
+        console.log('物料信息', res);
+        if (res.data.data.length) {
+          this.optionsName = res.data.data;
+          console.log('this.optionsName', this.optionsName);
+          this.goodsDis = false;
+          this.FromDis = true;
+        } else {
+          this.goodsDis = true;
+          this.FromDis = false;
+        }
+      });
+
       console.log('><<>L:', row.row);
       this.dismantle = true;
       this.view = true;
diff --git a/src/views/distribution/inventory/distrilbutionBillLading.vue b/src/views/distribution/inventory/distrilbutionBillLading.vue
index 2f00ed1a..48b5192e 100644
--- a/src/views/distribution/inventory/distrilbutionBillLading.vue
+++ b/src/views/distribution/inventory/distrilbutionBillLading.vue
@@ -2906,6 +2906,7 @@ export default {
       params.genre = 1;
       params.typeService = 3;
       params.reservation = '30';
+      params.isAll=0;
       getListOne(page.currentPage, page.pageSize, Object.assign(params, this.queryOrder)).then(
         res => {
           const data = res.data.data;
diff --git a/src/views/reportforms/DeliveryCustomers.vue b/src/views/reportforms/DeliveryCustomers.vue
index a9c00853..cfde24bd 100644
--- a/src/views/reportforms/DeliveryCustomers.vue
+++ b/src/views/reportforms/DeliveryCustomers.vue
@@ -7,13 +7,85 @@
         <!-- 搜索模块 -->
         <el-row v-if="search">
           <!-- 查询模块 -->
-          <el-form :inline="true" :model="query" class="el-fr-d">
-            <!-- 查询按钮 -->
-            <el-form-item class="el-btn">
-              <el-button type="primary" icon="el-icon-search" @click="searchChange">搜 索</el-button>
-              <el-button icon="el-icon-delete" @click="searchReset()">清 空</el-button>
+          <el-form :inline="true" :model="TopQuery" class="el-fr-d">
+          <!-- 查询按钮 -->
+
+          <div class="el_top_left">
+            <el-form-item label="配送日期">
+              <el-date-picker
+                v-model="TopQuery.time"
+                type="datetimerange"
+                start-placeholder="开始日期"
+                end-placeholder="结束日期"
+                format="YYYY-MM-DD"
+                date-format="YYYY/MM/DD"
+                time-format="A"
+                @change="Toptiem"
+              />
+            </el-form-item>
+
+            <el-form-item label="仓库">
+              <el-select
+                multiple
+                v-model="TopQuery.warehouse"
+                filterable
+                placeholder="多选仓库搜索"
+                style="width: 240px"
+              >
+                <el-option
+                  v-for="item in warehouseList"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item>
+
+            <el-form-item label="配送车辆">
+              <el-input
+                v-model="TopQuery.vehicle"
+                style="width: 240px"
+                :rows="1"
+                type="textarea"
+                placeholder="多个配送车辆请用逗号隔开"
+              />
+            </el-form-item>
+            <el-form-item label="配送司机">
+              <el-input
+                v-model="TopQuery.vehicle"
+                style="width: 240px"
+                :rows="1"
+                type="textarea"
+                placeholder="多个配送司机请用逗号隔开"
+              />
             </el-form-item>
-          </el-form>
+            <!-- <el-form-item label="配送类型">
+              <el-select multiple v-model="TopQuery.DeliveryType" filterable placeholder="多选仓库搜索" style="width: 240px">
+                <el-option
+                  v-for="item in DeliveryTypeList"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item> -->
+
+            <!-- <el-form-item label="配送种类">
+              <el-select multiple v-model="TopQuery.Deliverygeneric" filterable placeholder="多选仓库搜索" style="width: 240px">
+                <el-option
+                  v-for="item in DeliverygenericList"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item> -->
+          </div>
+          <el-form-item class="el-btn">
+            <el-button type="primary" icon="el-icon-search" @click="searchChange">搜 索</el-button>
+            <el-button icon="el-icon-delete" @click="searchReset()">清 空</el-button>
+          </el-form-item>
+        </el-form>
         </el-row>
   
         <!-- 控件模块 -->
@@ -91,11 +163,15 @@
   import { columnList } from '@/option/reportforms/DeliveryCustomers.js';
   import { getDictionaryBiz } from '@/api/system/dict'; //字典
   import { processRowProperty,setNodeHeight } from '@/utils/util';	
-  import {$_getcustomer,$_exportCustomer} from '@/api/reportforms/index.js';
+  import {$_getcustomer,$_exportCustomer,$_getMyWarehouseList} from '@/api/reportforms/index.js';
   import { ElMessageBox } from 'element-plus';
   import { downloadXls } from '@/utils/util'; 
   import functions from '@/utils/functions.js';
   import dayjs from 'dayjs';
+  const TopQuery=ref({});//顶部搜索
+  const warehouseList = ref([]); //仓库列表
+  const DeliveryTypeList =ref([])
+  const DeliverygenericList =ref([])
   const details = reactive({
     /** 是否开启搜索 */
     search: false,
@@ -218,7 +294,14 @@
       
   };
   // 实例函数
-
+  const Toptiem = val => {
+  if (!val) {
+    delete TopQuery.value.ks;
+    delete TopQuery.value.end;
+  }
+  console.log(val, '顶部时间触发');
+  console.log(TopQuery.value, '顶部时间触发');
+};
   /** 表格表头时间选择 */
   const timesc = (index, row) => {
     console.log(index, row);
@@ -247,8 +330,18 @@
   };
   // 网页顶部搜索按钮
   const searchChange = () => {
-    details.search = false; //关闭搜索
-  };
+  // 日期处理
+  if (TopQuery.value.time) {
+    TopQuery.value.ks = dayjs(TopQuery.value.time[0]).format('YYYY-MM-DD'); //开始日期
+    TopQuery.value.end = dayjs(TopQuery.value.time[1]).format('YYYY-MM-DD'); //结束日期
+  }
+  // 仓库处理
+  if (TopQuery.value.warehouse) {
+    TopQuery.value.warehouseJoin = TopQuery.value.warehouse.join(',');
+  }
+  console.log(TopQuery.value, '顶部搜索触发');
+  // details.search = false; //关闭搜索
+};
   // 每页多少条
   const sizeChange = val => {
     details.page.pageSize = val;
@@ -288,9 +381,31 @@
     });
   }
   // 页面初始化方法
-  const onLoad = () => {
-    // updateDictionary(columnList[3].checkarr, 'pc_work_order'); //异常类型
-  };
+// 页面初始化方法
+const onLoad = () => {
+  warehouseList.value = [];
+
+  columnList.find(res => res.label == '配送类型').checkarr = [];
+  columnList.find(res => res.label == '配送类型').checkarr = DeliveryTypeList.value;
+  columnList.find(res => res.label == '配送种类').checkarr = [];
+  columnList.find(res => res.label == '配送种类').checkarr = DeliverygenericList.value;
+  columnList.find(res => res.label == '仓库').checkarr = [];
+  columnList.find(res => res.label == '仓库').checkarr = warehouseList.value;
+
+  console.log(columnList, 'columnList');
+  // 获取仓库
+
+  $_getMyWarehouseList().then(res => {
+    console.log(res, '仓库列表');
+    if (res.data.data.length)
+      res.data.data.forEach(item => {
+        warehouseList.value.push({
+          value: item.name,
+          label: item.name,
+        });
+      });
+  });
+};
   onLoad();
   // 获取数据
 const getrain=()=>{
@@ -360,5 +475,35 @@ const exportReport=()=>{
     display: flex;
     flex-direction: column;
   }
+  :deep(.el-fr-d) {
+  width: 100%;
+  display: flex;
+  flex-wrap: wrap;
+  justify-content: space-between;
+  .el_top_left {
+    width: 100%;
+    display: flex;
+    justify-content: space-between;
+    .el-form-item {
+      align-items: flex-start;
+    }
+    .el-form-item__content {
+      align-items: flex-start;
+      height: 100%;
+      .el-date-editor {
+        height: 29px !important;
+      }
+    }
+  }
+}
+:deep(.el-btn) {
+  margin-right: 0;
+  display: flex;
+  width: 100%;
+  justify-content: flex-end;
+  .el-form-item__content {
+    justify-content: flex-end;
+  }
+}
   </style>
   
\ No newline at end of file
diff --git a/src/views/reportforms/DeliveryTrainNumber.vue b/src/views/reportforms/DeliveryTrainNumber.vue
index 3c7e1a3c..fd405aec 100644
--- a/src/views/reportforms/DeliveryTrainNumber.vue
+++ b/src/views/reportforms/DeliveryTrainNumber.vue
@@ -5,8 +5,80 @@
       <!-- 搜索模块 -->
       <el-row v-if="search">
         <!-- 查询模块 -->
-        <el-form :inline="true" :model="query" class="el-fr-d">
+        <el-form :inline="true" :model="TopQuery" class="el-fr-d">
           <!-- 查询按钮 -->
+
+          <div class="el_top_left">
+            <el-form-item label="配送日期">
+              <el-date-picker
+                v-model="TopQuery.time"
+                type="datetimerange"
+                start-placeholder="开始日期"
+                end-placeholder="结束日期"
+                format="YYYY-MM-DD"
+                date-format="YYYY/MM/DD"
+                time-format="A"
+                @change="Toptiem"
+              />
+            </el-form-item>
+
+            <el-form-item label="仓库">
+              <el-select
+                multiple
+                v-model="TopQuery.warehouse"
+                filterable
+                placeholder="多选仓库搜索"
+                style="width: 240px"
+              >
+                <el-option
+                  v-for="item in warehouseList"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item>
+
+            <el-form-item label="配送车辆">
+              <el-input
+                v-model="TopQuery.vehicle"
+                style="width: 240px"
+                :rows="1"
+                type="textarea"
+                placeholder="多个配送车辆请用逗号隔开"
+              />
+            </el-form-item>
+            <el-form-item label="配送司机">
+              <el-input
+                v-model="TopQuery.vehicle"
+                style="width: 240px"
+                :rows="1"
+                type="textarea"
+                placeholder="多个配送司机请用逗号隔开"
+              />
+            </el-form-item>
+            <!-- <el-form-item label="配送类型">
+              <el-select multiple v-model="TopQuery.DeliveryType" filterable placeholder="多选仓库搜索" style="width: 240px">
+                <el-option
+                  v-for="item in DeliveryTypeList"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item> -->
+
+            <!-- <el-form-item label="配送种类">
+              <el-select multiple v-model="TopQuery.Deliverygeneric" filterable placeholder="多选仓库搜索" style="width: 240px">
+                <el-option
+                  v-for="item in DeliverygenericList"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item> -->
+          </div>
           <el-form-item class="el-btn">
             <el-button type="primary" icon="el-icon-search" @click="searchChange">搜 索</el-button>
             <el-button icon="el-icon-delete" @click="searchReset()">清 空</el-button>
@@ -90,11 +162,36 @@ import { ref, reactive, toRefs, computed, onMounted, nextTick, watch } from 'vue
 import { columnList } from '@/option/reportforms/DeliveryTrainNumber.js';
 import { getDictionaryBiz } from '@/api/system/dict'; //字典
 import { processRowProperty, setNodeHeight } from '@/utils/util';
-import { $_getrain, $_exportTrain } from '@/api/reportforms/index.js';
+import { $_getrain, $_exportTrain, $_getMyWarehouseList } from '@/api/reportforms/index.js';
 import { ElMessageBox } from 'element-plus';
 import { downloadXls } from '@/utils/util';
 import functions from '@/utils/functions.js';
+const warehouseList = ref([]); //仓库列表
+const DeliveryTypeList = ref([
+  {
+    label: '商配',
+    value: '商配',
+  },
+
+  {
+    label: '市配',
+    value: '市配',
+  },
+]); //配送类型
+// 配送种类
+const DeliverygenericList = ref([
+  {
+    label: '自主配送',
+    value: '自主配送',
+  },
+
+  {
+    label: '三方配送',
+    value: '三方配送',
+  },
+]); //配送类型
 import dayjs from 'dayjs';
+const TopQuery = ref({}); //顶部搜索
 const details = reactive({
   /** 是否开启搜索 */
   search: false,
@@ -236,6 +333,7 @@ const btnsc = val => {
 /** 表格表头下拉框选择 */
 const selectsc = (index, row) => {
   processRowProperty(index, row, details);
+  getrain();
 };
 /** 表格表头复选框选择 */
 const selectionChange = list => {
@@ -244,7 +342,25 @@ const selectionChange = list => {
 };
 // 网页顶部搜索按钮
 const searchChange = () => {
-  details.search = false; //关闭搜索
+  // 日期处理
+  if (TopQuery.value.time) {
+    TopQuery.value.ks = dayjs(TopQuery.value.time[0]).format('YYYY-MM-DD'); //开始日期
+    TopQuery.value.end = dayjs(TopQuery.value.time[1]).format('YYYY-MM-DD'); //结束日期
+  }
+  // 仓库处理
+  if (TopQuery.value.warehouse) {
+    TopQuery.value.warehouseJoin = TopQuery.value.warehouse.join(',');
+  }
+  console.log(TopQuery.value, '顶部搜索触发');
+  // details.search = false; //关闭搜索
+};
+const Toptiem = val => {
+  if (!val) {
+    delete TopQuery.value.ks;
+    delete TopQuery.value.end;
+  }
+  console.log(val, '顶部时间触发');
+  console.log(TopQuery.value, '顶部时间触发');
 };
 // 每页多少条
 const sizeChange = val => {
@@ -286,7 +402,28 @@ function updateDictionary(targetArray, dictionaryType) {
 }
 // 页面初始化方法
 const onLoad = () => {
-  // updateDictionary(columnList[3].checkarr, 'pc_work_order'); //异常类型
+  warehouseList.value = [];
+
+  columnList.find(res => res.label == '配送类型').checkarr = [];
+  columnList.find(res => res.label == '配送类型').checkarr = DeliveryTypeList.value;
+  columnList.find(res => res.label == '配送种类').checkarr = [];
+  columnList.find(res => res.label == '配送种类').checkarr = DeliverygenericList.value;
+  columnList.find(res => res.label == '仓库').checkarr = [];
+  columnList.find(res => res.label == '仓库').checkarr = warehouseList.value;
+
+  console.log(columnList, 'columnList');
+  // 获取仓库
+
+  $_getMyWarehouseList().then(res => {
+    console.log(res, '仓库列表');
+    if (res.data.data.length)
+      res.data.data.forEach(item => {
+        warehouseList.value.push({
+          value: item.name,
+          label: item.name,
+        });
+      });
+  });
 };
 onLoad();
 // 获取数据
@@ -326,12 +463,10 @@ const exportReport = () => {
         .then(res => {
           downloadXls(res.data, `配送车次报表数据.xlsx`);
         })
-        .catch(() => {
-
-        })
+        .catch(() => {})
         .finally(() => {
           details.loadingObj.list = false;
-        })
+        });
     })
     .catch(() => {});
 };
@@ -362,4 +497,34 @@ const exportReport = () => {
   display: flex;
   flex-direction: column;
 }
+:deep(.el-fr-d) {
+  width: 100%;
+  display: flex;
+  flex-wrap: wrap;
+  justify-content: space-between;
+  .el_top_left {
+    width: 100%;
+    display: flex;
+    justify-content: space-between;
+    .el-form-item {
+      align-items: flex-start;
+    }
+    .el-form-item__content {
+      align-items: flex-start;
+      height: 100%;
+      .el-date-editor {
+        height: 29px !important;
+      }
+    }
+  }
+}
+:deep(.el-btn) {
+  margin-right: 0;
+  display: flex;
+  width: 100%;
+  justify-content: flex-end;
+  .el-form-item__content {
+    justify-content: flex-end;
+  }
+}
 </style>
diff --git a/src/views/reportforms/Inventory.vue b/src/views/reportforms/Inventory.vue
new file mode 100644
index 00000000..bed2f8d6
--- /dev/null
+++ b/src/views/reportforms/Inventory.vue
@@ -0,0 +1,366 @@
+<template>
+    <basic-container>
+      <!-- 首页表格 -->
+      <div class="avue-crud">
+        <!-- 搜索模块 -->
+        <el-row v-if="search">
+          <!-- 查询模块 -->
+          <el-form :inline="true" :model="query" class="el-fr-d">
+            <!-- 查询按钮 -->
+            <el-form-item class="el-btn">
+              <el-button type="primary" icon="el-icon-search" @click="searchChange">搜 索</el-button>
+              <el-button icon="el-icon-delete" @click="searchReset()">清 空</el-button>
+            </el-form-item>
+          </el-form>
+        </el-row>
+  
+        <!-- 控件模块 -->
+        <el-row>
+          <div class="avue-crud__header">
+            <!-- 头部左侧按钮模块 -->
+            <div class="avue-crud__left">
+              <el-button type="primary" @click="exportReport">
+                <el-icon><Download /></el-icon>导出报表</el-button
+              >
+            </div>
+            <!-- 头部右侧按钮模块 -->
+            <div class="avue-crud__right">
+              <el-button icon="el-icon-refresh" @click="searchChangeS" circle></el-button>
+              <el-button icon="Operation" @click="showdrawer(true)" circle></el-button>
+              <el-button icon="Search" @click="searchHide" circle></el-button>
+            </div>
+          </div>
+        </el-row>
+  
+        <!-- 首页表格 -->
+        <el-row>
+          <!-- 列表模块 -->
+          <tablecmt
+            class="tableNode"
+            :columnList="columnList"
+            :tableData="data"
+            :loading="loadingObj.list"
+            @inputTxt="inputsc"
+            @timeCheck="timesc"
+            @btnCheck="btnsc"
+            @selectCheck="selectsc"
+            @selection="selectionChange"
+          >
+            <template #default="slotProps">
+              <template v-if="slotProps.scope.column.label === '操作'">
+                <div class="ElBtnClass">
+                  <el-button @click="view(slotProps.scope)">查看</el-button>
+                </div>
+              </template>
+            </template>
+          </tablecmt>
+        </el-row>
+  
+        <!-- 分页模块 -->
+        <el-row class="el-fy">
+          <div class="avue-crud__pagination flex-c-sb" style="width: 100%">
+            <div></div>
+            <el-pagination
+              align="right"
+              background
+              @size-change="sizeChange"
+              @current-change="currentChange"
+              :current-page="page.currentPage"
+              :page-sizes="[30, 50, 80, 120]"
+              :page-size="page.pageSize"
+              layout="total, sizes, prev, pager, next, jumper"
+              :total="page.total"
+            >
+            </el-pagination>
+          </div>
+        </el-row>
+      </div>
+    </basic-container>
+    <!-- 列表配置显示 -->
+    <edittablehead
+      @setcolum="setnewcolum"
+      @closce="showdrawer"
+      :drawerShow="drawerShow"
+      :columnList="details.columnList"
+    ></edittablehead>
+  </template>
+  
+  <script setup>
+  import { ref, reactive, toRefs, computed, onMounted, nextTick, watch } from 'vue';
+  import { columnList } from '@/option/reportforms/Inventory.js';
+  import { getDictionaryBiz } from '@/api/system/dict'; //字典
+  import { processRowProperty, setNodeHeight } from '@/utils/util';
+  import { $_exportInventory ,$_getInventory} from '@/api/reportforms/index.js';
+  import { ElMessageBox } from 'element-plus';
+  import { downloadXls } from '@/utils/util';
+  import functions from '@/utils/functions.js';
+  import dayjs from 'dayjs';
+  const details = reactive({
+    /** 是否开启搜索 */
+    search: false,
+    /** 表格搜索条件 */
+    query: {},
+    /** 时间快捷选择设置 */
+    shortcuts: [
+      {
+        text: '最近一周',
+        value: () => {
+          const end = new Date();
+          const start = new Date();
+          start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
+          return [start, end];
+        },
+      },
+      {
+        text: '最近一个月',
+        value: () => {
+          const end = new Date();
+          const start = new Date();
+          start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
+          return [start, end];
+        },
+      },
+      {
+        text: '最近三个月',
+        value: () => {
+          const end = new Date();
+          const start = new Date();
+          start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
+          return [start, end];
+        },
+      },
+    ],
+    /** 时间选择器数据 */
+    stockupDate: [],
+    /** 列表 */
+    columnList,
+  
+    /** 列表数据 */
+    data: [],
+    /** 页面loading */
+    loadingObj: {
+      /** 列表加载loading */
+      list: false,
+      packageListLoading: false,
+    },
+    /** 列表复选框选中的数据 */
+    selectionList: [],
+    /** 是否显示设置表格 */
+    drawerShow: false,
+    /** 分页参数 */
+    page: {
+      currentPage: 1,
+      pageSize: 50,
+      total: 0,
+    },
+  
+    /** 弹出层显示 */
+    popUpShow: {
+      /** 包件明细 */
+      packageOrderListlVisited: false,
+      /** 二维码 */
+      QRCodeVisible: false,
+      /** 修改客户信息 */
+      editClientInfoVisible: false,
+    },
+    /** 列表Dom节点 */
+    listNode: '',
+    form: {},
+    /** 全屏 */
+    fullscreenObj: {
+      /** 包明细 */
+      packageOrderListlVisited: false,
+    },
+  });
+  
+  const {
+    search,
+    query,
+    shortcuts,
+    stockupDate,
+    data,
+    loadingObj,
+    selectionList,
+    drawerShow,
+    page,
+    trickleLoadingPage,
+    zeroAdditionalRecordingInfo,
+    popUpShow,
+    recorddata,
+  } = toRefs(details);
+  /**
+   * 设置列表 -- 固定函数
+   * 弹窗的勾选回调,用于更改头部数组
+   * 固定搭配,只需要更换   columnList
+   *  */
+  const setnewcolum = (newarr, headarr, type) => {
+    if (type == 1) {
+      details.columnList = newarr;
+      functions.setStorage(window.location.pathname + 'checkList', headarr);
+    } else if (type == 2) {
+      details.columnList = newarr;
+      functions.setStorage(window.location.pathname + 'flexList', headarr);
+    } else if (type == 3) {
+      details.columnList = newarr;
+      functions.setStorage(window.location.pathname + 'sortlist', headarr);
+    }
+  };
+  /** 展开列表控件 */
+  const showdrawer = _flag => {
+    details.drawerShow = _flag;
+  };
+  /** 表格表头输入框搜索 */
+  const inputsc = (index, row) => {
+    details.query[row.prop] = index;
+    processRowProperty(index, row, details);
+    getrain();
+  };
+  
+  /** 表格表头时间选择 */
+  const timesc = (index, row) => {
+    console.log(index, row);
+    if (!!index) {
+      index = dayjs(index).format('YYYY-MM-DD');
+    }
+    details.query[row.prop] = index;
+    if (!index) {
+      delete details.query[row.prop];
+    }
+    getrain();
+  };
+  
+  /** 表格表头输入框搜索 */
+  const btnsc = val => {
+    console.log(val);
+  };
+  /** 表格表头下拉框选择 */
+  const selectsc = (index, row) => {
+    processRowProperty(index, row, details);
+  };
+  /** 表格表头复选框选择 */
+  const selectionChange = list => {
+    console.log(list);
+    details.selectionList = list;
+  };
+  // 网页顶部搜索按钮
+  const searchChange = () => {
+    details.search = false; //关闭搜索
+  };
+  // 每页多少条
+  const sizeChange = val => {
+    details.page.pageSize = val;
+    getrain();
+  };
+  /** 页码改变执行的回调 */
+  const currentChange = val => {
+    details.page.currentPage = val;
+    getrain();
+  };
+  // 刷新按钮
+  const searchChangeS = () => {
+    details.columnList.forEach(item => {
+      item.values = '';
+    });
+    details.search = false; //关闭搜索
+    getrain();
+  };
+  // 顶部搜索
+  const searchHide = () => {
+    console.log(details);
+    details.search = !details.search;
+  
+    const _node = document.querySelector('.tableNode');
+    setNodeHeight(_node, '', true);
+  };
+  // 字典公共函数
+  function updateDictionary(targetArray, dictionaryType) {
+    getDictionaryBiz(dictionaryType).then(res => {
+      console.log(res, '字典');
+      res.data.data.forEach(item => {
+        targetArray.push({
+          value: item.dictKey,
+          label: item.dictValue,
+        });
+      });
+    });
+  }
+  // 页面初始化方法
+  const onLoad = () => {
+    // updateDictionary(columnList[3].checkarr, 'pc_work_order'); //异常类型
+  };
+  onLoad();
+  // 获取数据
+  const getrain = () => {
+    let data = {
+      current: details.page.currentPage,
+      size: details.page.pageSize,
+      ...details.query,
+    };
+    details.loadingObj.list = true;
+    $_getInventory(data)
+      .then(res => {
+        console.log(res, '当前参数1');
+        details.page.total = res.data.data.total;
+        details.data = res.data.data.records;
+      })
+      .catch(() => {})
+      .finally(() => {
+        details.loadingObj.list = false;
+      });
+  };
+  getrain();
+  
+  // 导出
+  const exportReport = () => {
+    ElMessageBox.confirm('是否导出报表?', {
+      confirmButtonText: '确定',
+      cancelButtonText: '取消',
+      type: 'warning',
+    })
+      .then(() => {
+        details.loadingObj.list = true;
+        let data = {
+          ...details.query,
+        };
+        $_exportInventory(data)
+          .then(res => {
+            downloadXls(res.data, `库存品明细报表数据.xlsx`);
+          })
+          .catch(() => {
+  
+          })
+          .finally(() => {
+            details.loadingObj.list = false;
+          })
+      })
+      .catch(() => {});
+  };
+  </script>
+  
+  <style scoped lang="scss">
+  .ElBtnClass button {
+    border: none;
+    padding: 0;
+    background-color: transparent;
+  }
+  :deep(.el-card) {
+    height: 100%;
+  }
+  :deep(.el-card__body) {
+    height: 100%;
+    display: flex;
+    flex-direction: column;
+  }
+  .el-fy {
+    flex: 1;
+    display: flex;
+    align-items: flex-end;
+    margin-bottom: 10px;
+  }
+  .avue-crud {
+    height: 100%;
+    display: flex;
+    flex-direction: column;
+  }
+  </style>
+  
\ No newline at end of file
diff --git a/src/views/reportforms/InventoryOutbound.vue b/src/views/reportforms/InventoryOutbound.vue
index c21eee06..01a1f1dd 100644
--- a/src/views/reportforms/InventoryOutbound.vue
+++ b/src/views/reportforms/InventoryOutbound.vue
@@ -90,7 +90,7 @@
   import { columnList } from '@/option/reportforms/InventoryOutbound.js';
   import { getDictionaryBiz } from '@/api/system/dict'; //字典
   import { processRowProperty, setNodeHeight } from '@/utils/util';
-  import { $_getSelfpickup,$_exportSelfpickup ,$_getreport } from '@/api/reportforms/index.js';
+  import { $_getreport ,$_exportOutStocks} from '@/api/reportforms/index.js';
   import { ElMessageBox } from 'element-plus';
   import { downloadXls } from '@/utils/util';
   import functions from '@/utils/functions.js';
@@ -312,7 +312,6 @@
   
   // 导出
   const exportReport = () => {
-    return;
     ElMessageBox.confirm('是否导出报表?', {
       confirmButtonText: '确定',
       cancelButtonText: '取消',
@@ -323,7 +322,7 @@
         let data = {
           ...details.query,
         };
-        $_exportSelfpickup(data)
+        $_exportOutStocks(data)
           .then(res => {
             downloadXls(res.data, `库存出库明细报表数据.xlsx`);
           })
diff --git a/src/views/reportforms/InventoryReceipt.vue b/src/views/reportforms/InventoryReceipt.vue
new file mode 100644
index 00000000..4e89be1f
--- /dev/null
+++ b/src/views/reportforms/InventoryReceipt.vue
@@ -0,0 +1,366 @@
+<template>
+    <basic-container>
+      <!-- 首页表格 -->
+      <div class="avue-crud">
+        <!-- 搜索模块 -->
+        <el-row v-if="search">
+          <!-- 查询模块 -->
+          <el-form :inline="true" :model="query" class="el-fr-d">
+            <!-- 查询按钮 -->
+            <el-form-item class="el-btn">
+              <el-button type="primary" icon="el-icon-search" @click="searchChange">搜 索</el-button>
+              <el-button icon="el-icon-delete" @click="searchReset()">清 空</el-button>
+            </el-form-item>
+          </el-form>
+        </el-row>
+  
+        <!-- 控件模块 -->
+        <el-row>
+          <div class="avue-crud__header">
+            <!-- 头部左侧按钮模块 -->
+            <div class="avue-crud__left">
+              <el-button type="primary" @click="exportReport">
+                <el-icon><Download /></el-icon>导出报表</el-button
+              >
+            </div>
+            <!-- 头部右侧按钮模块 -->
+            <div class="avue-crud__right">
+              <el-button icon="el-icon-refresh" @click="searchChangeS" circle></el-button>
+              <el-button icon="Operation" @click="showdrawer(true)" circle></el-button>
+              <el-button icon="Search" @click="searchHide" circle></el-button>
+            </div>
+          </div>
+        </el-row>
+  
+        <!-- 首页表格 -->
+        <el-row>
+          <!-- 列表模块 -->
+          <tablecmt
+            class="tableNode"
+            :columnList="columnList"
+            :tableData="data"
+            :loading="loadingObj.list"
+            @inputTxt="inputsc"
+            @timeCheck="timesc"
+            @btnCheck="btnsc"
+            @selectCheck="selectsc"
+            @selection="selectionChange"
+          >
+            <template #default="slotProps">
+              <template v-if="slotProps.scope.column.label === '操作'">
+                <div class="ElBtnClass">
+                  <el-button @click="view(slotProps.scope)">查看</el-button>
+                </div>
+              </template>
+            </template>
+          </tablecmt>
+        </el-row>
+  
+        <!-- 分页模块 -->
+        <el-row class="el-fy">
+          <div class="avue-crud__pagination flex-c-sb" style="width: 100%">
+            <div></div>
+            <el-pagination
+              align="right"
+              background
+              @size-change="sizeChange"
+              @current-change="currentChange"
+              :current-page="page.currentPage"
+              :page-sizes="[30, 50, 80, 120]"
+              :page-size="page.pageSize"
+              layout="total, sizes, prev, pager, next, jumper"
+              :total="page.total"
+            >
+            </el-pagination>
+          </div>
+        </el-row>
+      </div>
+    </basic-container>
+    <!-- 列表配置显示 -->
+    <edittablehead
+      @setcolum="setnewcolum"
+      @closce="showdrawer"
+      :drawerShow="drawerShow"
+      :columnList="details.columnList"
+    ></edittablehead>
+  </template>
+  
+  <script setup>
+  import { ref, reactive, toRefs, computed, onMounted, nextTick, watch } from 'vue';
+  import { columnList } from '@/option/reportforms/InventoryReceipt.js';
+  import { getDictionaryBiz } from '@/api/system/dict'; //字典
+  import { processRowProperty, setNodeHeight } from '@/utils/util';
+  import { $_exportInStocks ,$_getinStocks} from '@/api/reportforms/index.js';
+  import { ElMessageBox } from 'element-plus';
+  import { downloadXls } from '@/utils/util';
+  import functions from '@/utils/functions.js';
+  import dayjs from 'dayjs';
+  const details = reactive({
+    /** 是否开启搜索 */
+    search: false,
+    /** 表格搜索条件 */
+    query: {},
+    /** 时间快捷选择设置 */
+    shortcuts: [
+      {
+        text: '最近一周',
+        value: () => {
+          const end = new Date();
+          const start = new Date();
+          start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
+          return [start, end];
+        },
+      },
+      {
+        text: '最近一个月',
+        value: () => {
+          const end = new Date();
+          const start = new Date();
+          start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
+          return [start, end];
+        },
+      },
+      {
+        text: '最近三个月',
+        value: () => {
+          const end = new Date();
+          const start = new Date();
+          start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
+          return [start, end];
+        },
+      },
+    ],
+    /** 时间选择器数据 */
+    stockupDate: [],
+    /** 列表 */
+    columnList,
+  
+    /** 列表数据 */
+    data: [],
+    /** 页面loading */
+    loadingObj: {
+      /** 列表加载loading */
+      list: false,
+      packageListLoading: false,
+    },
+    /** 列表复选框选中的数据 */
+    selectionList: [],
+    /** 是否显示设置表格 */
+    drawerShow: false,
+    /** 分页参数 */
+    page: {
+      currentPage: 1,
+      pageSize: 50,
+      total: 0,
+    },
+  
+    /** 弹出层显示 */
+    popUpShow: {
+      /** 包件明细 */
+      packageOrderListlVisited: false,
+      /** 二维码 */
+      QRCodeVisible: false,
+      /** 修改客户信息 */
+      editClientInfoVisible: false,
+    },
+    /** 列表Dom节点 */
+    listNode: '',
+    form: {},
+    /** 全屏 */
+    fullscreenObj: {
+      /** 包明细 */
+      packageOrderListlVisited: false,
+    },
+  });
+  
+  const {
+    search,
+    query,
+    shortcuts,
+    stockupDate,
+    data,
+    loadingObj,
+    selectionList,
+    drawerShow,
+    page,
+    trickleLoadingPage,
+    zeroAdditionalRecordingInfo,
+    popUpShow,
+    recorddata,
+  } = toRefs(details);
+  /**
+   * 设置列表 -- 固定函数
+   * 弹窗的勾选回调,用于更改头部数组
+   * 固定搭配,只需要更换   columnList
+   *  */
+  const setnewcolum = (newarr, headarr, type) => {
+    if (type == 1) {
+      details.columnList = newarr;
+      functions.setStorage(window.location.pathname + 'checkList', headarr);
+    } else if (type == 2) {
+      details.columnList = newarr;
+      functions.setStorage(window.location.pathname + 'flexList', headarr);
+    } else if (type == 3) {
+      details.columnList = newarr;
+      functions.setStorage(window.location.pathname + 'sortlist', headarr);
+    }
+  };
+  /** 展开列表控件 */
+  const showdrawer = _flag => {
+    details.drawerShow = _flag;
+  };
+  /** 表格表头输入框搜索 */
+  const inputsc = (index, row) => {
+    details.query[row.prop] = index;
+    processRowProperty(index, row, details);
+    getrain();
+  };
+  
+  /** 表格表头时间选择 */
+  const timesc = (index, row) => {
+    console.log(index, row);
+    if (!!index) {
+      index = dayjs(index).format('YYYY-MM-DD');
+    }
+    details.query[row.prop] = index;
+    if (!index) {
+      delete details.query[row.prop];
+    }
+    getrain();
+  };
+  
+  /** 表格表头输入框搜索 */
+  const btnsc = val => {
+    console.log(val);
+  };
+  /** 表格表头下拉框选择 */
+  const selectsc = (index, row) => {
+    processRowProperty(index, row, details);
+  };
+  /** 表格表头复选框选择 */
+  const selectionChange = list => {
+    console.log(list);
+    details.selectionList = list;
+  };
+  // 网页顶部搜索按钮
+  const searchChange = () => {
+    details.search = false; //关闭搜索
+  };
+  // 每页多少条
+  const sizeChange = val => {
+    details.page.pageSize = val;
+    getrain();
+  };
+  /** 页码改变执行的回调 */
+  const currentChange = val => {
+    details.page.currentPage = val;
+    getrain();
+  };
+  // 刷新按钮
+  const searchChangeS = () => {
+    details.columnList.forEach(item => {
+      item.values = '';
+    });
+    details.search = false; //关闭搜索
+    getrain();
+  };
+  // 顶部搜索
+  const searchHide = () => {
+    console.log(details);
+    details.search = !details.search;
+  
+    const _node = document.querySelector('.tableNode');
+    setNodeHeight(_node, '', true);
+  };
+  // 字典公共函数
+  function updateDictionary(targetArray, dictionaryType) {
+    getDictionaryBiz(dictionaryType).then(res => {
+      console.log(res, '字典');
+      res.data.data.forEach(item => {
+        targetArray.push({
+          value: item.dictKey,
+          label: item.dictValue,
+        });
+      });
+    });
+  }
+  // 页面初始化方法
+  const onLoad = () => {
+    // updateDictionary(columnList[3].checkarr, 'pc_work_order'); //异常类型
+  };
+  onLoad();
+  // 获取数据
+  const getrain = () => {
+    let data = {
+      current: details.page.currentPage,
+      size: details.page.pageSize,
+      ...details.query,
+    };
+    details.loadingObj.list = true;
+    $_getinStocks(data)
+      .then(res => {
+        console.log(res, '当前参数1');
+        details.page.total = res.data.data.total;
+        details.data = res.data.data.records;
+      })
+      .catch(() => {})
+      .finally(() => {
+        details.loadingObj.list = false;
+      });
+  };
+  getrain();
+  
+  // 导出
+  const exportReport = () => {
+    ElMessageBox.confirm('是否导出报表?', {
+      confirmButtonText: '确定',
+      cancelButtonText: '取消',
+      type: 'warning',
+    })
+      .then(() => {
+        details.loadingObj.list = true;
+        let data = {
+          ...details.query,
+        };
+        $_exportInStocks(data)
+          .then(res => {
+            downloadXls(res.data, `库存入库明细报表数据.xlsx`);
+          })
+          .catch(() => {
+  
+          })
+          .finally(() => {
+            details.loadingObj.list = false;
+          })
+      })
+      .catch(() => {});
+  };
+  </script>
+  
+  <style scoped lang="scss">
+  .ElBtnClass button {
+    border: none;
+    padding: 0;
+    background-color: transparent;
+  }
+  :deep(.el-card) {
+    height: 100%;
+  }
+  :deep(.el-card__body) {
+    height: 100%;
+    display: flex;
+    flex-direction: column;
+  }
+  .el-fy {
+    flex: 1;
+    display: flex;
+    align-items: flex-end;
+    margin-bottom: 10px;
+  }
+  .avue-crud {
+    height: 100%;
+    display: flex;
+    flex-direction: column;
+  }
+  </style>
+  
\ No newline at end of file