diff --git a/package.json b/package.json index 22852f9..870cfb9 100644 --- a/package.json +++ b/package.json @@ -28,9 +28,9 @@ "@vueup/vue-quill": "1.2.0", "@vueuse/core": "11.3.0", "animate.css": "4.1.1", - "countup.js": "^2.8.0", "await-to-js": "3.0.0", "axios": "1.7.8", + "countup.js": "^2.8.0", "crypto-js": "4.2.0", "diagram-js": "12.3.0", "didi": "9.0.2", @@ -54,7 +54,7 @@ "vue-qr": "^4.0.9", "vue-router": "4.4.5", "vue-types": "5.1.3", - "vxe-table": "4.5.22" + "vxe-table": "^4.5.22" }, "devDependencies": { "@eslint/js": "9.15.0", diff --git a/src/api/amz/packingSpecs/index.ts b/src/api/amz/packingSpecs/index.ts new file mode 100644 index 0000000..d6da2c4 --- /dev/null +++ b/src/api/amz/packingSpecs/index.ts @@ -0,0 +1,63 @@ +import request from '@/utils/request'; +import { AxiosPromise } from 'axios'; +import { PackingSpecsVO, PackingSpecsForm, PackingSpecsQuery } from '@/api/amz/packingSpecs/types'; + +/** + * 查询产品装箱规格列表 + * @param query + * @returns {*} + */ + +export const listPackingSpecs = (query?: PackingSpecsQuery): AxiosPromise => { + return request({ + url: '/amz/packingSpecs/list', + method: 'get', + params: query + }); +}; + +/** + * 查询产品装箱规格详细 + * @param id + */ +export const getPackingSpecs = (id: string | number): AxiosPromise => { + return request({ + url: '/amz/packingSpecs/' + id, + method: 'get' + }); +}; + +/** + * 新增产品装箱规格 + * @param data + */ +export const addPackingSpecs = (data: PackingSpecsForm) => { + return request({ + url: '/amz/packingSpecs', + method: 'post', + data: data + }); +}; + +/** + * 修改产品装箱规格 + * @param data + */ +export const updatePackingSpecs = (data: PackingSpecsForm) => { + return request({ + url: '/amz/packingSpecs', + method: 'put', + data: data + }); +}; + +/** + * 删除产品装箱规格 + * @param id + */ +export const delPackingSpecs = (id: string | number | Array) => { + return request({ + url: '/amz/packingSpecs/' + id, + method: 'delete' + }); +}; diff --git a/src/api/amz/packingSpecs/types.ts b/src/api/amz/packingSpecs/types.ts new file mode 100644 index 0000000..460fd01 --- /dev/null +++ b/src/api/amz/packingSpecs/types.ts @@ -0,0 +1,146 @@ +export interface PackingSpecsVO { + /** + * 规格ID(主键) + */ + id: string | number; + + /** + * 关联采购单明细项ID + */ + sendOrderId: string | number; + + /** + * 规格名称(如规格A) + */ + specName: string; + + /** + * 箱数(单位:箱) + */ + cartonCount: number; + + /** + * 每箱件数(单位:件) + */ + piecesPerCarton: number; + + /** + * 箱子长度(单位:厘米) + */ + length: number; + + /** + * 箱子宽度(单位:厘米) + */ + width: string | number; + + /** + * 箱子高度(单位:厘米) + */ + height: number; + + /** + * 单箱重量(单位:千克) + */ + weight: number; + +} + +export interface PackingSpecsForm extends BaseEntity { + /** + * 规格ID(主键) + */ + id?: string | number; + + /** + * 关联采购单明细项ID + */ + sendOrderId?: string | number; + + /** + * 规格名称(如规格A) + */ + specName?: string; + + /** + * 箱数(单位:箱) + */ + cartonCount?: number; + + /** + * 每箱件数(单位:件) + */ + piecesPerCarton?: number; + + /** + * 箱子长度(单位:厘米) + */ + length?: number; + + /** + * 箱子宽度(单位:厘米) + */ + width?: string | number; + + /** + * 箱子高度(单位:厘米) + */ + height?: number; + + /** + * 单箱重量(单位:千克) + */ + weight?: number; + +} + +export interface PackingSpecsQuery extends PageQuery { + + /** + * 关联采购单明细项ID + */ + sendOrderId?: string | number; + + /** + * 规格名称(如规格A) + */ + specName?: string; + + /** + * 箱数(单位:箱) + */ + cartonCount?: number; + + /** + * 每箱件数(单位:件) + */ + piecesPerCarton?: number; + + /** + * 箱子长度(单位:厘米) + */ + length?: number; + + /** + * 箱子宽度(单位:厘米) + */ + width?: string | number; + + /** + * 箱子高度(单位:厘米) + */ + height?: number; + + /** + * 单箱重量(单位:千克) + */ + weight?: number; + + /** + * 日期范围参数 + */ + params?: any; +} + + + diff --git a/src/api/amz/purchaseOutOrder/index.ts b/src/api/amz/purchaseOutOrder/index.ts new file mode 100644 index 0000000..95046a0 --- /dev/null +++ b/src/api/amz/purchaseOutOrder/index.ts @@ -0,0 +1,76 @@ +import request from '@/utils/request'; +import { AxiosPromise } from 'axios'; +import { PurchaseOutOrderVO, PurchaseOutOrderForm, PurchaseOutOrderQuery } from '@/api/amz/purchaseOutOrder/types'; + +/** + * 查询组合订单列表 + * @param query + * @returns {*} + */ + +export const listPurchaseOutOrder = (query?: PurchaseOutOrderQuery): AxiosPromise => { + return request({ + url: '/amz/purchaseOutOrder/list', + method: 'get', + params: query + }); +}; + +/** + * 查询组合订单详细 + * @param tenantId + */ +export const getPurchaseOutOrder = (tenantId: string | number): AxiosPromise => { + return request({ + url: '/amz/purchaseOutOrder/' + tenantId, + method: 'get' + }); +}; + +/** + * 新增组合订单 + * @param data + */ +export const addPurchaseOutOrder = (data: PurchaseOutOrderForm) => { + return request({ + url: '/amz/purchaseOutOrder', + method: 'post', + data: data + }); +}; + + +/** + * 新增组合订单 + * @param data + */ +export const createSendOrderByBo = (data: PurchaseOutOrderForm) => { + return request({ + url: '/amz/purchaseOutOrder/submit', + method: 'post', + data: data + }); +}; + +/** + * 修改组合订单 + * @param data + */ +export const updatePurchaseOutOrder = (data: PurchaseOutOrderForm) => { + return request({ + url: '/amz/purchaseOutOrder', + method: 'put', + data: data + }); +}; + +/** + * 删除组合订单 + * @param tenantId + */ +export const delPurchaseOutOrder = (tenantId: string | number | Array) => { + return request({ + url: '/amz/purchaseOutOrder/' + tenantId, + method: 'delete' + }); +}; diff --git a/src/api/amz/purchaseOutOrder/types.ts b/src/api/amz/purchaseOutOrder/types.ts new file mode 100644 index 0000000..4ebdd0e --- /dev/null +++ b/src/api/amz/purchaseOutOrder/types.ts @@ -0,0 +1,275 @@ +import { PurchaseOrderVO } from '@/api/amz/purchaseOrder/types'; +import { OrderOutItemVO } from '@/api/amz/purchaseOutOrderItem/types'; + +export interface PurchaseOutOrderVO { + /** + * 订单唯一编号 + */ + orderSn: string; + + /** + * 仓库名称 + */ + warehouseName: string; + + /** + * 外包仓库名称 + */ + outsourceWarehouseName: string; + + /** + * 供应商名称 + */ + supplierName: string; + + /** + * 业务创建时间 (Jackson格式: yyyy-MM-dd HH:mm:ss) + */ + bizCreateTime: string; + + /** + * 状态文本描述 + */ + statusText: string; + + /** + * 创建人姓名 + */ + createRealname: string; + + /** + * PTP流水号 + */ + ptpSn: string; + + /** + * 产品名称 + */ + productName: string; + + /** + * 标准SKU编码 + */ + sku: string; + + /** + * FNSKU编码 + */ + fnsku: string; + + /** + * 外包数量 + */ + outsourceQuantity: number; + + /** + * 实收数量 + */ + receiveQuantity: number; + + /** + * 预计到达时间 + */ + expectArriveTime: string; + + /** + * MSKU编码列表 (数组存储) + */ + msku: string; + + /** + * 关联计划单号列表 (数组存储) + */ + planSn: string; + + items?: OrderOutItemVO[]; + + /** + * 销售商名称 + */ + sellerName: string; +} + +export interface PurchaseOutOrderForm extends BaseEntity { + /** + * 订单唯一编号 + */ + orderSn?: string; + + /** + * 仓库名称 + */ + warehouseName?: string; + + /** + * 外包仓库名称 + */ + outsourceWarehouseName?: string; + + /** + * 供应商名称 + */ + supplierName?: string; + + /** + * 业务创建时间 (Jackson格式: yyyy-MM-dd HH:mm:ss) + */ + bizCreateTime?: string; + + /** + * 状态文本描述 + */ + statusText?: string; + + /** + * 创建人姓名 + */ + createRealname?: string; + + /** + * PTP流水号 + */ + ptpSn?: string; + + /** + * 产品名称 + */ + productName?: string; + + /** + * 标准SKU编码 + */ + sku?: string; + + /** + * FNSKU编码 + */ + fnsku?: string; + + /** + * 外包数量 + */ + outsourceQuantity?: number; + + /** + * 实收数量 + */ + receiveQuantity?: number; + + /** + * 预计到达时间 + */ + expectArriveTime?: string; + + /** + * MSKU编码列表 (数组存储) + */ + msku?: string; + + /** + * 关联计划单号列表 (数组存储) + */ + planSn?: string; + + /** + * 销售商名称 + */ + sellerName?: string; + + items?: OrderOutItemVO[]; + + quantityLeft?: number; + quantityShipped?: number; +} + +export interface PurchaseOutOrderQuery extends PageQuery { + /** + * 订单唯一编号 + */ + orderSn?: string; + + /** + * 仓库名称 + */ + warehouseName?: string; + + /** + * 外包仓库名称 + */ + outsourceWarehouseName?: string; + + /** + * 供应商名称 + */ + supplierName?: string; + + /** + * 业务创建时间 (Jackson格式: yyyy-MM-dd HH:mm:ss) + */ + bizCreateTime?: string; + + /** + * 状态文本描述 + */ + statusText?: string; + + /** + * 创建人姓名 + */ + createRealname?: string; + + /** + * PTP流水号 + */ + ptpSn?: string; + + /** + * 产品名称 + */ + productName?: string; + + /** + * 标准SKU编码 + */ + sku?: string; + + /** + * FNSKU编码 + */ + fnsku?: string; + + /** + * 外包数量 + */ + outsourceQuantity?: number; + + /** + * 实收数量 + */ + receiveQuantity?: number; + + /** + * 预计到达时间 + */ + expectArriveTime?: string; + + /** + * MSKU编码列表 (数组存储) + */ + msku?: string; + + /** + * 关联计划单号列表 (数组存储) + */ + planSn?: string; + + /** + * 销售商名称 + */ + sellerName?: string; + + /** + * 日期范围参数 + */ + params?: any; +} diff --git a/src/api/amz/purchaseOutOrderItem/types.ts b/src/api/amz/purchaseOutOrderItem/types.ts new file mode 100644 index 0000000..ad29167 --- /dev/null +++ b/src/api/amz/purchaseOutOrderItem/types.ts @@ -0,0 +1,196 @@ +import { PurchaseOrderVO } from '@/api/amz/purchaseOrder/types'; + +export interface OrderOutItemVO { + /** + * 明细项自增主键 + */ + itemId: string | number; + + /** + * 关联采购订单号 (外键) + */ + outOrderSn: string; + + /** + * 产品名称 + */ + productName: string; + + /** + * SKU编码 + */ + sku: string; + + /** + * 采购需求数量 + */ + quantityRequire: number; + + /** + * 业务创建时间 (Jackson格式: yyyy-MM-dd HH:mm:ss) + */ + bizCreateTime: string; + + /** + * 创建人姓名 + */ + createRealname: string; + + /** + * 预计到达时间 + */ + expectArriveTime: string; + + /** + * 仓库名称 + */ + warehouseName: string; + + /** + * 供应商名称 + */ + supplierName: string; + + /** + * 实际到货数量 + */ + quantityReal: number; + + /** + * 已入库数量 + */ + quantityEntry: number; + + ratio?: number; + + order?: PurchaseOrderVO; +} + +export interface OrderOutItemForm extends BaseEntity { + /** + * 明细项自增主键 + */ + itemId?: string | number; + + /** + * 关联采购订单号 (外键) + */ + outOrderSn?: string; + + /** + * 产品名称 + */ + productName?: string; + + /** + * SKU编码 + */ + sku?: string; + + /** + * 采购需求数量 + */ + quantityRequire?: number; + + /** + * 业务创建时间 (Jackson格式: yyyy-MM-dd HH:mm:ss) + */ + bizCreateTime?: string; + + /** + * 创建人姓名 + */ + createRealname?: string; + + /** + * 预计到达时间 + */ + expectArriveTime?: string; + + /** + * 仓库名称 + */ + warehouseName?: string; + + /** + * 供应商名称 + */ + supplierName?: string; + + /** + * 实际到货数量 + */ + quantityReal?: number; + + /** + * 已入库数量 + */ + quantityEntry?: number; +} + +export interface OrderOutItemQuery extends PageQuery { + /** + * 明细项自增主键 + */ + itemId?: string | number; + + /** + * 关联采购订单号 (外键) + */ + outOrderSn?: string; + + /** + * 产品名称 + */ + productName?: string; + + /** + * SKU编码 + */ + sku?: string; + + /** + * 采购需求数量 + */ + quantityRequire?: number; + + /** + * 业务创建时间 (Jackson格式: yyyy-MM-dd HH:mm:ss) + */ + bizCreateTime?: string; + + /** + * 创建人姓名 + */ + createRealname?: string; + + /** + * 预计到达时间 + */ + expectArriveTime?: string; + + /** + * 仓库名称 + */ + warehouseName?: string; + + /** + * 供应商名称 + */ + supplierName?: string; + + /** + * 实际到货数量 + */ + quantityReal?: number; + + /** + * 已入库数量 + */ + quantityEntry?: number; + + /** + * 日期范围参数 + */ + params?: any; +} diff --git a/src/api/amz/sendOrder/index.ts b/src/api/amz/sendOrder/index.ts index a8057d2..57cb8bc 100644 --- a/src/api/amz/sendOrder/index.ts +++ b/src/api/amz/sendOrder/index.ts @@ -16,6 +16,15 @@ export const listSendOrder = (query?: SendOrderQuery): AxiosPromise { + return request({ + url: '/amz/sendOrder/cover/list', + method: 'post', + params: { pageNum: data?.pageNum, pageSize: data?.pageSize }, + data: data + }); +}; + /** * 查询供应商创建的发货单详细 * @param id @@ -39,6 +48,14 @@ export const addSendOrder = (data: SendOrderForm) => { }); }; +export const transferSendOrder = (data: SendOrderVO) => { + return request({ + url: '/amz/sendOrder/transfer', + method: 'post', + data: data + }); +}; + /** * 修改供应商创建的发货单 * @param data @@ -51,6 +68,18 @@ export const updateSendOrder = (data: SendOrderForm) => { }); }; +/** + * 修改供应商创建的发货单 + * @param data + */ +export const updateSendOrderData = (data: SendOrderForm) => { + return request({ + url: '/amz/sendOrder/data', + method: 'post', + data: data + }); +}; + /** * 删除供应商创建的发货单 * @param id diff --git a/src/api/amz/sendOrder/types.ts b/src/api/amz/sendOrder/types.ts index af987f1..710840b 100644 --- a/src/api/amz/sendOrder/types.ts +++ b/src/api/amz/sendOrder/types.ts @@ -1,4 +1,6 @@ import { ShipmentPlanVO } from '@/api/amz/shipmentPlan/types'; +import { PackingSpecsVO } from '@/api/amz/packingSpecs/types'; +import { SendOrderItemVO } from '@/api/amz/sendOrderItem/types'; export interface SendOrderVO { /** @@ -64,6 +66,7 @@ export interface SendOrderVO { createTime: string; sendName: string; + items?: SendOrderItemVO[]; bizShipmentPlans: ShipmentPlanVO[]; } @@ -131,7 +134,12 @@ export interface SendOrderForm extends BaseEntity { sendDetail?: string; + sendName?: string; + sku?: string | number; + orderDetailId?: string | number; + + packingSpecsList?: PackingSpecsVO[]; } export interface SendOrderQuery extends PageQuery { diff --git a/src/api/amz/sendOrderItem/types.ts b/src/api/amz/sendOrderItem/types.ts new file mode 100644 index 0000000..065652e --- /dev/null +++ b/src/api/amz/sendOrderItem/types.ts @@ -0,0 +1,95 @@ +export interface SendOrderItemVO { + /** + * 主键ID + */ + id: string | number; + + /** + * 采购单号 + */ + orderSn: string; + + /** + * 发货日期 + */ + sendDate: string; + + /** + * 发货日期 + */ + storeName: string; + + /** + * 发货日期 + */ + productName: string; + + /** + * 发货日期 + */ + quantitySend: number; +} + +export interface SendOrderItemForm extends BaseEntity { + /** + * 主键ID + */ + id?: string | number; + + /** + * 采购单号 + */ + orderSn?: string; + + /** + * 发货日期 + */ + sendDate?: string; + + /** + * 发货日期 + */ + storeName?: string; + + /** + * 发货日期 + */ + productName?: string; + + /** + * 发货日期 + */ + quantitySend?: number; +} + +export interface SendOrderItemQuery extends PageQuery { + /** + * 采购单号 + */ + orderSn?: string; + + /** + * 发货日期 + */ + sendDate?: string; + + /** + * 发货日期 + */ + storeName?: string; + + /** + * 发货日期 + */ + productName?: string; + + /** + * 发货日期 + */ + quantitySend?: number; + + /** + * 日期范围参数 + */ + params?: any; +} diff --git a/src/api/amz/shipmentPlan/types.ts b/src/api/amz/shipmentPlan/types.ts index 75f7629..b59949f 100644 --- a/src/api/amz/shipmentPlan/types.ts +++ b/src/api/amz/shipmentPlan/types.ts @@ -157,11 +157,15 @@ export interface ShipmentPlanVO { sendOrders?: SendOrderVO[]; + amountPrice?: number | string; + /** * 供应商发货单id */ sendOrderId?: string | number; sendOrderIds?: string[] | number[]; + + itemVoList?: ShipmentItemVO[]; } interface Address { diff --git a/src/assets/styles/asinkj.scss b/src/assets/styles/asinkj.scss index d4536cb..2762dff 100644 --- a/src/assets/styles/asinkj.scss +++ b/src/assets/styles/asinkj.scss @@ -7,48 +7,63 @@ .pt5 { padding-top: 5px; } + .pr5 { padding-right: 5px; } + .pb5 { padding-bottom: 5px; } + .mt5 { margin-top: 5px; } + .mr5 { margin-right: 5px; } + .mb5 { margin-bottom: 5px; } + .mb8 { margin-bottom: 8px; } + .ml5 { margin-left: 5px; } + .mt10 { margin-top: 10px; } + .mr10 { margin-right: 10px; } + .mb10 { margin-bottom: 10px; } + .ml10 { margin-left: 10px; } + .mt20 { margin-top: 20px; } + .mr20 { margin-right: 20px; } + .mb20 { margin-bottom: 20px; } + .ml20 { margin-left: 20px; } @@ -74,6 +89,7 @@ h6 { .el-form .el-form-item__label { font-weight: 700; } + .el-dialog:not(.is-fullscreen) { margin-top: 6vh !important; } @@ -96,6 +112,7 @@ h6 { font-size: 13px; } } + .el-table__body-wrapper { .el-button [class*='el-icon-'] + span { margin-left: 1px; @@ -288,3 +305,72 @@ h6 { .top-right-btn { margin-left: auto; } + + +/* src/assets/styles/index.scss */ +/* 拖拽列样式 */ +.sortable-ghost { + opacity: 0.8; + color: #fff !important; + background: #42b983 !important; +} + +.top-right-btn { + margin-left: auto; +} + +/* ================== 修改点:移除:deep() ================== */ + +@media (prefers-color-scheme: light) { + .el-table__expanded-cell { + background: #f5fbfd !important; + padding: 0 !important; + border-bottom: none !important; + } + + .el-table__expanded-cell .el-table { + --el-table-bg-color: #ebf3ff !important; + --el-table-tr-bg-color: #f5fbfd !important; + --el-table-header-bg-color: #cfe2ff !important; + --el-table-header-text-color: #2c3e50 !important; + } + + .el-table__expanded-cell .el-table__body-wrapper { + background: #ebf3ff !important; + } + + .el-table__expanded-cell .el-table__header th { + background-color: #cfe2ff !important; + border-bottom: 2px solid #a6c5ff !important; + } + + .el-table__expanded-cell .el-table__header .cell { + color: #1a2b3c !important; + font-weight: 600; + } + + .el-table__expanded-cell .el-table__body tr td { + background-color: transparent !important; + } + + .el-table__expanded-cell .el-card { + background: transparent !important; + border: none !important; + } + + .el-table__expanded-cell .el-table__body tr:hover > td { + background-color: #ffffff !important; + } + + .el-table__expanded-cell .el-table__header tr:hover th { + background-color: #b6d4ff !important; + } + + .el-table__expanded-cell .el-table__header .sort-caret.ascending { + border-bottom-color: #1a2b3c; + } + + .el-table__expanded-cell .el-table__header .sort-caret.descending { + border-top-color: #1a2b3c; + } +} diff --git a/src/components/RuoYiDoc/index.vue b/src/components/RuoYiDoc/index.vue deleted file mode 100644 index 1e27d89..0000000 --- a/src/components/RuoYiDoc/index.vue +++ /dev/null @@ -1,13 +0,0 @@ - - - diff --git a/src/components/RuoYiGit/index.vue b/src/components/RuoYiGit/index.vue deleted file mode 100644 index 17c5984..0000000 --- a/src/components/RuoYiGit/index.vue +++ /dev/null @@ -1,13 +0,0 @@ - - - diff --git a/src/store/modules/permission.ts b/src/store/modules/permission.ts index d3791a6..a7d5c0c 100644 --- a/src/store/modules/permission.ts +++ b/src/store/modules/permission.ts @@ -81,7 +81,7 @@ export const usePermissionStore = defineStore('permission', () => { route.children.forEach((child) => { if (child.path === 'purchaseOrderConfirm') { if (useUserStore().roles.includes('gengdan')) { - child.meta.title = '创建半成品转发'; + child.meta.title = '创建发货'; } } }); diff --git a/src/utils/asinkj.ts b/src/utils/asinkj.ts index c93b4db..a792f90 100644 --- a/src/utils/asinkj.ts +++ b/src/utils/asinkj.ts @@ -253,6 +253,10 @@ export const formatText = (text) => { return text.replace(/\n/g, '
'); }; +export const deepClone = (obj: T): T => { + return JSON.parse(JSON.stringify(obj)); +}; + export default { handleTree }; diff --git a/src/views/amz/amazonStore/index.vue b/src/views/amz/amazonStore/index.vue index 84d80ff..0b5a1f4 100644 --- a/src/views/amz/amazonStore/index.vue +++ b/src/views/amz/amazonStore/index.vue @@ -16,9 +16,9 @@ - - - + + + diff --git a/src/views/amz/inquiryRequest/index.vue b/src/views/amz/inquiryRequest/index.vue index 41daf38..a7f7a9b 100644 --- a/src/views/amz/inquiryRequest/index.vue +++ b/src/views/amz/inquiryRequest/index.vue @@ -307,7 +307,7 @@
- + @@ -316,7 +316,7 @@
- + @@ -331,13 +331,13 @@
- + 到 - + @@ -345,7 +345,7 @@
- + @@ -651,8 +651,6 @@ const submitQuoteForm = async () => { console.log('submitQuoteForm', quoteForm.value); logisticsQuoteFormRef.value?.validate(async (valid: boolean) => { if (valid) { - console.log('quoteForm', quoteForm.value); - return; const res = await checkPriceQuoteByBo(quoteForm.value); console.log('submitQuoteForm', res); if (res.code === 200) { diff --git a/src/views/amz/purchaseOrder/index.vue b/src/views/amz/purchaseOrder/index.vue index b8ddf39..8d14b1f 100644 --- a/src/views/amz/purchaseOrder/index.vue +++ b/src/views/amz/purchaseOrder/index.vue @@ -28,16 +28,16 @@ @@ -638,12 +633,17 @@ import { updateOrderItemDetail } from '@/api/amz/purchaseOrderItem'; import { SendOrderForm } from '@/api/amz/sendOrder/types'; import { Close, Plus } from '@element-plus/icons-vue'; import { addSendOrder, updateSendOrder } from '@/api/amz/sendOrder'; +import { PackingSpecsVO } from '@/api/amz/packingSpecs/types'; const { proxy } = getCurrentInstance() as ComponentInternalInstance; const { vendor_order_status } = toRefs(proxy?.useDict('vendor_order_status')); const { sys_yes_no } = toRefs(proxy?.useDict('sys_yes_no')); const { forward_status } = toRefs(proxy?.useDict('forward_status')); +const { send_order_type } = toRefs(proxy?.useDict('send_order_type')); + +const route = useRoute(); + const plength = ref(); const pheight = ref(); const pwidth = ref(); @@ -904,34 +904,19 @@ const data = reactive>({ // sendDate: [{ required: true, message: '发货日期不能为空', trigger: 'blur' }], storeName: [{ required: true, message: '采购店铺不能为空', trigger: 'blur' }], productName: [{ required: true, message: '产品名称不能为空', trigger: 'blur' }], - quantitySend: [{ required: true, message: '发货数量不能为空', trigger: 'blur' }], - quantityPerBox: [ - { - validator: (rule, value, callback) => { - if (totalBoxCount.value != shipForm.value.boxCount) { - console.log('totalBoxCount.value', totalBoxCount.value); - console.log('form.value.boxCount', shipForm.value.boxCount); - callback(new Error('明细箱数和总箱数不匹配,请调整')); - } - // 总量提示 - if (totalNum.value > shipForm.value.quantitySend) { - const exceed = totalNum.value - shipForm.value.quantitySend; - callback(new Error('总量超出 ' + exceed + ',请调整')); - } else { - callback(); - } - }, - trigger: 'blur' - } - ], - boxCount: [{ required: true, message: '箱数不能为空', trigger: 'blur' }], - // boxDimensions: [ + quantitySend: [{ required: true, message: '发货数量不能为空', trigger: 'blur' }] + // quantityPerBox: [ // { - // required: true, - // message: '长宽高都不能为空', // validator: (rule, value, callback) => { - // if (!plength.value || !pwidth.value || !pheight.value) { - // callback(new Error('长宽高都不能为空')); + // if (totalBoxCount.value != shipForm.value.boxCount) { + // console.log('totalBoxCount.value', totalBoxCount.value); + // console.log('form.value.boxCount', shipForm.value.boxCount); + // callback(new Error('明细箱数和总箱数不匹配,请调整')); + // } + // // 总量提示 + // if (totalNum.value > shipForm.value.quantitySend) { + // const exceed = totalNum.value - shipForm.value.quantitySend; + // callback(new Error('总量超出 ' + exceed + ',请调整')); // } else { // callback(); // } @@ -939,9 +924,24 @@ const data = reactive>({ // trigger: 'blur' // } // ], - weightPerBox: [{ required: true, message: '总重量不能为空', trigger: 'blur' }], - realStoreName: [{ required: true, message: '实际采购店铺不能为空', trigger: 'blur' }], - sendStatus: [{ required: true, message: '发货状态不能为空', trigger: 'change' }] + // boxCount: [{ required: true, message: '箱数不能为空', trigger: 'blur' }], + // // boxDimensions: [ + // // { + // // required: true, + // // message: '长宽高都不能为空', + // // validator: (rule, value, callback) => { + // // if (!plength.value || !pwidth.value || !pheight.value) { + // // callback(new Error('长宽高都不能为空')); + // // } else { + // // callback(); + // // } + // // }, + // // trigger: 'blur' + // // } + // // ], + // weightPerBox: [{ required: true, message: '总重量不能为空', trigger: 'blur' }], + // realStoreName: [{ required: true, message: '实际采购店铺不能为空', trigger: 'blur' }], + // sendStatus: [{ required: true, message: '发货状态不能为空', trigger: 'change' }] } }); @@ -1196,6 +1196,9 @@ const handleForward = async (row?, rowM?) => { // forwardForm.value.trackerId = row?.trackerId; // forwardForm.value.fwdStatus = row?.fwdStatus; // forwardForm.value.sendTime = row?.sendTime; + forwardForm.value.quantitySend = null; + forwardForm.value.inSupplierName = null; + forwardForm.value.inOrderSn = null; console.log('maxQuality', maxQuality.value); console.log('row', row); @@ -1205,6 +1208,8 @@ const handleForward = async (row?, rowM?) => { forwardDialog.title = '添加转发数据'; }; +const quantity = ref(0); + const handleShip = async (row?, rowM?) => { let isExist = false; rowM.forwardList?.forEach((item) => { @@ -1217,12 +1222,14 @@ const handleShip = async (row?, rowM?) => { proxy?.$modal.msgError('该订单已有转发订单,无法进行成品发货!'); return; } - + quantity.value = row?.quantityLeft; shipForm.value.orderSn = row?.orderSn; shipForm.value.productName = row?.productName; shipForm.value.quantitySend = row?.quantityReal; shipForm.value.storeName = rowM?.storeName; shipForm.value.orderDetailId = row?.id; + shipForm.value.sendName = rowM?.supplierName; + shipForm.value.sku = row?.sku; shipDialog.visible = true; }; @@ -1312,37 +1319,40 @@ const handleExport = () => { ); }; -const groups = ref([ +const groups = ref([ { - boxCount: null, - itemCount: null, - lengthPerBox: null, - widthPerBox: null, - heightPerBox: null, - weightPerBox: null + id: undefined, + sendOrderId: undefined, + specName: undefined, + cartonCount: undefined, + piecesPerCarton: undefined, + length: undefined, + width: undefined, + height: undefined, + weight: undefined } ]); // 计算所有输入值的总和 const totalNum = computed(() => { return groups.value.reduce((sum, group) => { - const box = Number(group.boxCount) || 0; - const item = Number(group.itemCount) || 0; + const box = Number(group.cartonCount) || 0; + const item = Number(group.piecesPerCarton) || 0; return sum + box * item; }, 0); }); const totalWeight = computed(() => { return groups.value.reduce((sum, group) => { - const box = Number(group.boxCount) || 0; - return sum + box * group.weightPerBox; + const box = Number(group.cartonCount) || 0; + return sum + box * group.weight; }, 0); }); // 计算所有输入值的总和 const totalBoxCount = computed(() => { return groups.value.reduce((sum, group) => { - const box = Number(group.boxCount) || 0; + const box = Number(group.cartonCount) || 0; return sum + box; }, 0); }); @@ -1409,24 +1419,26 @@ const shipSubmitForm = () => { '规格' + numberToLetter(index) + ': ' + - group.boxCount + + group.cartonCount + '箱x' + - group.itemCount + + group.piecesPerCarton + '件,长' + - group.lengthPerBox + + group.length + 'cm宽' + - group.widthPerBox + + group.width + 'cm高' + - group.heightPerBox + + group.height + 'cm,' + '单箱重量' + - group.weightPerBox + + group.weight + 'kg' + '\n' ); }, ''); console.log('sendText: ', sendText); - shipForm.value.sendDetail = sendText; + shipForm.value.sendDetail = null; + shipForm.value.packingSpecsList = groups.value; + console.log('shipForm', shipForm.value); sendOrderFormRef.value?.validate(async (valid: boolean) => { if (valid) { buttonLoading.value = true; @@ -1447,70 +1459,19 @@ function numberToLetter(num: number): string { return String.fromCharCode(num + 65); } +watch( + () => route.query.orderSn, + (newOrderSn) => { + if (typeof newOrderSn === 'string' && newOrderSn) { + queryParams.value.orderSn = newOrderSn; + getList(); + } + }, + { immediate: true } // 立即执行一次 +); + onMounted(() => { getList(); }); - + diff --git a/src/views/amz/purchaseOrderQuery/index.vue b/src/views/amz/purchaseOrderQuery/index.vue index 85f2e55..90d7d0b 100644 --- a/src/views/amz/purchaseOrderQuery/index.vue +++ b/src/views/amz/purchaseOrderQuery/index.vue @@ -141,6 +141,11 @@ + + + @@ -374,6 +379,7 @@ import { roleSelectPost } from '@/api/system/user'; const { proxy } = getCurrentInstance() as ComponentInternalInstance; const { vendor_order_status } = toRefs(proxy?.useDict('vendor_order_status')); const { forward_status } = toRefs(proxy?.useDict('forward_status')); +const { send_order_type } = toRefs(proxy?.useDict('send_order_type')); const purchaseOrderList = ref([]); const shipForwardList = ref([]); @@ -885,66 +891,4 @@ onMounted(() => { getList(); }); - + diff --git a/src/views/amz/purchaseOutOrder/index.vue b/src/views/amz/purchaseOutOrder/index.vue new file mode 100644 index 0000000..884abf5 --- /dev/null +++ b/src/views/amz/purchaseOutOrder/index.vue @@ -0,0 +1,649 @@ + + + diff --git a/src/views/amz/sendOrder/index.vue b/src/views/amz/sendOrder/index.vue index 66672c6..86db99c 100644 --- a/src/views/amz/sendOrder/index.vue +++ b/src/views/amz/sendOrder/index.vue @@ -57,10 +57,26 @@ - - + + + + + + +