From 45eb9232d7edfdfb15dbceaa2e5c28117f448a8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A6=82=E5=88=9D?= <3236758982@qq.com> Date: Fri, 17 Apr 2026 19:40:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9D=8E=E7=BA=A2=E6=94=80=EF=BC=9AV2.0.001?= =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E7=9A=84=E9=87=87=E6=91=98=E7=AE=A1?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/erp/box/index.ts | 13 + src/api/erp/farming/index.ts | 13 + src/api/erp/pick-broccoli/index.ts | 85 ++++ src/api/erp/product/index.ts | 22 + src/api/erp/purchase-order/index.ts | 90 ++++ src/api/erp/supplier/index.ts | 12 + .../pick-broccoli/components/search-form.vue | 126 ++++++ src/pages-erp/pick-broccoli/detail/index.vue | 237 ++++++++++ src/pages-erp/pick-broccoli/form/index.vue | 354 +++++++++++++++ src/pages-erp/pick-broccoli/index.vue | 331 ++++++++++++++ .../purchase-order/components/search-form.vue | 104 +++++ src/pages-erp/purchase-order/detail/index.vue | 297 +++++++++++++ src/pages-erp/purchase-order/form/index.vue | 412 ++++++++++++++++++ src/pages-erp/purchase-order/index.vue | 344 +++++++++++++++ src/pages/index/index.ts | 22 + vite.config.ts | 1 + 16 files changed, 2463 insertions(+) create mode 100644 src/api/erp/box/index.ts create mode 100644 src/api/erp/farming/index.ts create mode 100644 src/api/erp/pick-broccoli/index.ts create mode 100644 src/api/erp/product/index.ts create mode 100644 src/api/erp/purchase-order/index.ts create mode 100644 src/api/erp/supplier/index.ts create mode 100644 src/pages-erp/pick-broccoli/components/search-form.vue create mode 100644 src/pages-erp/pick-broccoli/detail/index.vue create mode 100644 src/pages-erp/pick-broccoli/form/index.vue create mode 100644 src/pages-erp/pick-broccoli/index.vue create mode 100644 src/pages-erp/purchase-order/components/search-form.vue create mode 100644 src/pages-erp/purchase-order/detail/index.vue create mode 100644 src/pages-erp/purchase-order/form/index.vue create mode 100644 src/pages-erp/purchase-order/index.vue diff --git a/src/api/erp/box/index.ts b/src/api/erp/box/index.ts new file mode 100644 index 0000000..bc463ea --- /dev/null +++ b/src/api/erp/box/index.ts @@ -0,0 +1,13 @@ +import { http } from '@/http/http' + +/** 框管理记录 */ +export interface Box { + id?: number + boxNumber: string + [key: string]: any +} + +/** 获取框管理分页列表(用于提取框编号) */ +export function getBoxPage(params?: Record) { + return http.get<{ list: Box[], total: number }>('/erp/box/page', { pageNo: 1, pageSize: 100, ...params }) +} diff --git a/src/api/erp/farming/index.ts b/src/api/erp/farming/index.ts new file mode 100644 index 0000000..4055a02 --- /dev/null +++ b/src/api/erp/farming/index.ts @@ -0,0 +1,13 @@ +import { http } from '@/http/http' + +/** 田间管理记录 */ +export interface FarmingManagement { + id?: number + code: string + [key: string]: any +} + +/** 获取田间管理分页列表(用于提取田间编号) */ +export function getFarmingManagementPage(params?: Record) { + return http.get<{ list: FarmingManagement[], total: number }>('/erp/farming-management/page', { pageNo: 1, pageSize: 100, ...params }) +} diff --git a/src/api/erp/pick-broccoli/index.ts b/src/api/erp/pick-broccoli/index.ts new file mode 100644 index 0000000..da40ff2 --- /dev/null +++ b/src/api/erp/pick-broccoli/index.ts @@ -0,0 +1,85 @@ +import type { PageParam, PageResult } from '@/http/types' +import { http } from '@/http/http' + +/** 西兰花采摘记录信息 */ +export interface PickBroccoli { + id?: number + pickCode?: string + userId?: number + userName?: string + fieldCode?: string + fieldName?: string + basketCode?: string + basketWeight?: number + licensePlate?: string + pickTime?: string + loadTime?: string + loaderId?: number + loaderName?: string + status?: number + unloadTime?: string + unloaderId?: number + unloaderName?: string + warehouseId?: string + warehouseName?: string + unloadBatch?: string + productId?: number + productName?: string + remark?: string + createTime?: string +} + +/** 获取采摘记录分页列表 */ +export function getPickBroccoliPage(params: PageParam) { + return http.get>('/erp/pick-broccoli/page', params) +} + +/** 获取采摘记录详情 */ +export function getPickBroccoli(id: number) { + return http.get(`/erp/pick-broccoli/get?id=${id}`) +} + +/** 创建采摘记录 */ +export function createPickBroccoli(data: PickBroccoli) { + return http.post('/erp/pick-broccoli/create', data) +} + +/** 更新采摘记录 */ +export function updatePickBroccoli(data: PickBroccoli) { + return http.put('/erp/pick-broccoli/update', data) +} + +/** 删除采摘记录 */ +export function deletePickBroccoli(id: number) { + return http.delete(`/erp/pick-broccoli/delete?id=${id}`) +} + +/** 更新采摘记录状态 */ +export function updatePickBroccoliStatus(id: number, status: number) { + return http.put(`/erp/pick-broccoli/update-status?id=${id}&status=${status}`) +} + +/** 装车操作 */ +export function loadTruck(id: number, licensePlate: string, loaderId: number, loaderName: string) { + return http.put(`/erp/pick-broccoli/load-truck?id=${id}&licensePlate=${licensePlate}&loaderId=${loaderId}&loaderName=${loaderName}`) +} + +/** 卸车入库操作 */ +export function unloadTruck(licensePlate: string, unloaderId: number, unloaderName: string, warehouseId: string, warehouseName: string) { + return http.put(`/erp/pick-broccoli/unload-truck?licensePlate=${licensePlate}&unloaderId=${unloaderId}&unloaderName=${unloaderName}&warehouseId=${warehouseId}&warehouseName=${warehouseName}`) +} + +/** 获取已装车车辆列表 */ +export function getLoadedTrucks() { + return http.get('/erp/pick-broccoli/list-loaded-trucks') +} + +/** 卸车预览 */ +export function getUnloadPreview(licensePlate: string) { + return http.get(`/erp/pick-broccoli/unload-preview?licensePlate=${licensePlate}`) +} + +/** 生成采摘编号 */ +export function generatePickCode() { + return http.get<{ code: string }>('/erp/pick-broccoli/generate-code') +} diff --git a/src/api/erp/product/index.ts b/src/api/erp/product/index.ts new file mode 100644 index 0000000..f785570 --- /dev/null +++ b/src/api/erp/product/index.ts @@ -0,0 +1,22 @@ +import { http } from '@/http/http' + +/** 产品精简信息 */ +export interface ProductSimple { + id: number + name: string + barCode?: string + unitId?: number + unitName?: string + standard?: string + purchasePrice?: number + salePrice?: number + minPrice?: number + supplierId?: number + supplierName?: string + weight?: number +} + +/** 获取产品精简列表 */ +export function getProductSimpleList() { + return http.get('/erp/product/simple-list') +} diff --git a/src/api/erp/purchase-order/index.ts b/src/api/erp/purchase-order/index.ts new file mode 100644 index 0000000..a52c9cf --- /dev/null +++ b/src/api/erp/purchase-order/index.ts @@ -0,0 +1,90 @@ +import type { PageParam, PageResult } from '@/http/types' +import { http } from '@/http/http' + +/** 采购订单项 */ +export interface PurchaseOrderItem { + id?: number + productId: number + productUnitId: number + productPrice?: number + count: number + taxPercent?: number + taxPrice?: number + remark?: string + inCount?: number + returnCount?: number + supplierId?: number + supplierName?: string + productName?: string + productBarCode?: string + productUnitName?: string + stockCount?: number + productSpec?: string +} + +/** 采购订单信息 */ +export interface PurchaseOrder { + id?: number + no?: string + status?: number + supplierId?: number + supplierName?: string + accountId?: number + orderTime?: string + totalCount?: number + totalPrice?: number + totalProductPrice?: number + totalTaxPrice?: number + discountPercent?: number + discountPrice?: number + depositPrice?: number + fileUrl?: string + remark?: string + creator?: string + creatorName?: string + createTime?: string + items?: PurchaseOrderItem[] + productNames?: string + inCount?: number + returnCount?: number + auditorId?: number + auditorName?: string + purchaseRequisitionId?: number + purchaseRequisitionNo?: string + invoiceType?: number + invoiceTypeName?: string + freightPayer?: number + freightPayerName?: string + settlementMethod?: number + settlementMethodName?: string +} + +/** 获取采购订单分页列表 */ +export function getPurchaseOrderPage(params: PageParam) { + return http.get>('/erp/purchase-order/page', params) +} + +/** 获取采购订单详情 */ +export function getPurchaseOrder(id: number) { + return http.get(`/erp/purchase-order/get?id=${id}`) +} + +/** 创建采购订单 */ +export function createPurchaseOrder(data: PurchaseOrder) { + return http.post('/erp/purchase-order/create', data) +} + +/** 更新采购订单 */ +export function updatePurchaseOrder(data: PurchaseOrder) { + return http.put('/erp/purchase-order/update', data) +} + +/** 更新采购订单状态 */ +export function updatePurchaseOrderStatus(id: number, status: number) { + return http.put(`/erp/purchase-order/update-status?id=${id}&status=${status}`) +} + +/** 删除采购订单 */ +export function deletePurchaseOrder(ids: number[]) { + return http.delete(`/erp/purchase-order/delete?ids=${ids.join(',')}`) +} diff --git a/src/api/erp/supplier/index.ts b/src/api/erp/supplier/index.ts new file mode 100644 index 0000000..6fd173d --- /dev/null +++ b/src/api/erp/supplier/index.ts @@ -0,0 +1,12 @@ +import { http } from '@/http/http' + +/** 供应商精简信息 */ +export interface SupplierSimple { + id: number + name: string +} + +/** 获取供应商精简列表 */ +export function getSupplierSimpleList() { + return http.get('/erp/supplier/simple-list') +} diff --git a/src/pages-erp/pick-broccoli/components/search-form.vue b/src/pages-erp/pick-broccoli/components/search-form.vue new file mode 100644 index 0000000..77ebfc9 --- /dev/null +++ b/src/pages-erp/pick-broccoli/components/search-form.vue @@ -0,0 +1,126 @@ + + + diff --git a/src/pages-erp/pick-broccoli/detail/index.vue b/src/pages-erp/pick-broccoli/detail/index.vue new file mode 100644 index 0000000..c7ee0aa --- /dev/null +++ b/src/pages-erp/pick-broccoli/detail/index.vue @@ -0,0 +1,237 @@ + + + + + diff --git a/src/pages-erp/pick-broccoli/form/index.vue b/src/pages-erp/pick-broccoli/form/index.vue new file mode 100644 index 0000000..a9fbaa6 --- /dev/null +++ b/src/pages-erp/pick-broccoli/form/index.vue @@ -0,0 +1,354 @@ + + + + + diff --git a/src/pages-erp/pick-broccoli/index.vue b/src/pages-erp/pick-broccoli/index.vue new file mode 100644 index 0000000..9d7fac4 --- /dev/null +++ b/src/pages-erp/pick-broccoli/index.vue @@ -0,0 +1,331 @@ + + + + + diff --git a/src/pages-erp/purchase-order/components/search-form.vue b/src/pages-erp/purchase-order/components/search-form.vue new file mode 100644 index 0000000..dae32b3 --- /dev/null +++ b/src/pages-erp/purchase-order/components/search-form.vue @@ -0,0 +1,104 @@ + + + diff --git a/src/pages-erp/purchase-order/detail/index.vue b/src/pages-erp/purchase-order/detail/index.vue new file mode 100644 index 0000000..5c7ac5b --- /dev/null +++ b/src/pages-erp/purchase-order/detail/index.vue @@ -0,0 +1,297 @@ + + + + + diff --git a/src/pages-erp/purchase-order/form/index.vue b/src/pages-erp/purchase-order/form/index.vue new file mode 100644 index 0000000..ad411ec --- /dev/null +++ b/src/pages-erp/purchase-order/form/index.vue @@ -0,0 +1,412 @@ + + + + + diff --git a/src/pages-erp/purchase-order/index.vue b/src/pages-erp/purchase-order/index.vue new file mode 100644 index 0000000..3149ebb --- /dev/null +++ b/src/pages-erp/purchase-order/index.vue @@ -0,0 +1,344 @@ + + + + + diff --git a/src/pages/index/index.ts b/src/pages/index/index.ts index e75389f..797e94d 100644 --- a/src/pages/index/index.ts +++ b/src/pages/index/index.ts @@ -26,6 +26,28 @@ export interface MenuGroup { /** 菜单分组原始数据 */ const menuGroupsData: MenuGroup[] = [ + { + key: 'purchase', + name: '采购管理', + menus: [ + { + key: 'purchaseOrder', + name: '采购订单', + icon: 'order', + url: '/pages-erp/purchase-order/index', + iconColor: '#1890ff', + permission: 'erp:purchase-order:query', + }, + { + key: 'pickBroccoli', + name: '采摘管理', + icon: 'goods', + url: '/pages-erp/pick-broccoli/index', + iconColor: '#52c41a', + permission: 'erp:pick-broccoli:query', + }, + ], + }, { key: 'system', name: '系统管理', diff --git a/vite.config.ts b/vite.config.ts index b404002..c8df756 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -77,6 +77,7 @@ export default defineConfig(({ command, mode }) => { 'src/pages-system', // “系统管理”模块 'src/pages-infra', // “基础设施”模块 'src/pages-bpm', // “工作流程”模块 + 'src/pages-erp', // “采购管理”模块 ], dts: 'src/types/uni-pages.d.ts', }),