diff --git a/src/api/erp/sale/out/index.ts b/src/api/erp/sale/out/index.ts
new file mode 100644
index 00000000..44b95d3a
--- /dev/null
+++ b/src/api/erp/sale/out/index.ts
@@ -0,0 +1,62 @@
+import request from '@/config/axios'
+
+// ERP 销售出库 VO
+export interface SaleOutVO {
+ id: number // 销售出库编号
+ no: string // 销售出库号
+ customerId: number // 客户编号
+ orderTime: Date // 出库工单时间
+ totalCount: number // 合计数量
+ totalPrice: number // 合计金额,单位:元
+ status: number // 状态
+ remark: string // 备注
+}
+
+// ERP 销售出库 API
+export const SaleOutApi = {
+ // 查询销售出库分页
+ getSaleOutPage: async (params: any) => {
+ return await request.get({ url: `/erp/sale-out/page`, params })
+ },
+
+ // 查询销售出库详情
+ getSaleOut: async (id: number) => {
+ return await request.get({ url: `/erp/sale-out/get?id=` + id })
+ },
+
+ // 新增销售出库
+ createSaleOut: async (data: SaleOutVO) => {
+ return await request.post({ url: `/erp/sale-out/create`, data })
+ },
+
+ // 修改销售出库
+ updateSaleOut: async (data: SaleOutVO) => {
+ return await request.put({ url: `/erp/sale-out/update`, data })
+ },
+
+ // 更新销售出库的状态
+ updateSaleOutStatus: async (id: number, status: number) => {
+ return await request.put({
+ url: `/erp/sale-out/update-status`,
+ params: {
+ id,
+ status
+ }
+ })
+ },
+
+ // 删除销售出库
+ deleteSaleOut: async (ids: number[]) => {
+ return await request.delete({
+ url: `/erp/sale-out/delete`,
+ params: {
+ ids: ids.join(',')
+ }
+ })
+ },
+
+ // 导出销售出库 Excel
+ exportSaleOut: async (params: any) => {
+ return await request.download({ url: `/erp/sale-out/export-excel`, params })
+ }
+}
diff --git a/src/views/erp/sale/out/SaleOutForm.vue b/src/views/erp/sale/out/SaleOutForm.vue
new file mode 100644
index 00000000..2d309e3e
--- /dev/null
+++ b/src/views/erp/sale/out/SaleOutForm.vue
@@ -0,0 +1,265 @@
+
+
+
+
diff --git a/src/views/erp/sale/out/components/SaleOutItemForm.vue b/src/views/erp/sale/out/components/SaleOutItemForm.vue
new file mode 100644
index 00000000..0422dc75
--- /dev/null
+++ b/src/views/erp/sale/out/components/SaleOutItemForm.vue
@@ -0,0 +1,273 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ —
+
+
+
+
+
+ + 添加出库产品
+
+
+
diff --git a/src/views/erp/sale/out/index.vue b/src/views/erp/sale/out/index.vue
new file mode 100644
index 00000000..af8f8a3a
--- /dev/null
+++ b/src/views/erp/sale/out/index.vue
@@ -0,0 +1,444 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+ 新增
+
+
+ 导出
+
+ item.id))"
+ v-hasPermi="['erp:sale-out:delete']"
+ :disabled="selectionList.length === 0"
+ >
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ erpPriceInputFormatter(scope.row.payPrice + scope.row.debtPrice) }}
+
+
+
+
+
+ 0
+ {{ erpPriceInputFormatter(scope.row.debtPrice) }}
+
+
+
+
+
+
+
+
+
+
+ 详情
+
+
+ 编辑
+
+
+ 审批
+
+
+ 反审批
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/erp/stock/out/index.vue b/src/views/erp/stock/out/index.vue
index 403432aa..20542596 100644
--- a/src/views/erp/stock/out/index.vue
+++ b/src/views/erp/stock/out/index.vue
@@ -271,6 +271,7 @@ const queryParams = reactive({
no: undefined,
productId: undefined,
customerId: undefined,
+ warehouseId: undefined,
outTime: [],
status: undefined,
remark: undefined,