From 6c869634188518364aef701f7a26b8ceaa672f1b Mon Sep 17 00:00:00 2001 From: xuqiuyun <1113560936@qq.com> Date: Tue, 28 Oct 2025 17:31:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E6=96=B0=E5=A2=9E=E8=BF=90?= =?UTF-8?q?=E9=80=81=E6=B8=85=E5=8D=95=E5=92=8C=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LOADING_ORDER_PAGE_FIX.md | 200 ++++ LOADING_ORDER_QUICK_FIX.md | 94 ++ ORDER_DELIVERY_RELATIONSHIP_SUMMARY.md | 137 +++ .../views/shipping/createDeliveryDialog.vue | 870 +++++++++++++++++- .../src/views/shipping/loadingOrder.vue | 481 ++-------- .../src/views/shipping/orderDialog.vue | 29 +- .../add_missing_photo_video_fields.sql | 48 + .../business/controller/OrderController.java | 8 +- .../business/dto/DeliveryCreateDto.java | 97 +- .../cattletrade/business/entity/Delivery.java | 30 + .../service/impl/DeliveryServiceImpl.java | 45 +- .../service/impl/OrderServiceImpl.java | 55 +- 12 files changed, 1629 insertions(+), 465 deletions(-) create mode 100644 LOADING_ORDER_PAGE_FIX.md create mode 100644 LOADING_ORDER_QUICK_FIX.md create mode 100644 ORDER_DELIVERY_RELATIONSHIP_SUMMARY.md create mode 100644 tradeCattle/add_missing_photo_video_fields.sql diff --git a/LOADING_ORDER_PAGE_FIX.md b/LOADING_ORDER_PAGE_FIX.md new file mode 100644 index 0000000..92dd8c2 --- /dev/null +++ b/LOADING_ORDER_PAGE_FIX.md @@ -0,0 +1,200 @@ +# 装车订单页面修复说明 + +## 问题分析 + +`loadingOrder.vue` 页面目前使用错误的接口: +- **当前使用:** `orderList(params)` → 调用 `/delivery/pageDeliveryOrderList` +- **应该使用:** `orderPageQuery(params)` → 调用 `/order/list` + +## 问题根源 + +1. **接口混用:** `orderList` 查询的是 `delivery` 装车运单表,而不是 `order` 订单表 +2. **字段不匹配:** 页面显示的字段(供应商、采购商、结算方式等)应该来自 `order` 表 +3. **数据结构错误:** 返回的是运单数据,而不是订单数据 + +## 修复方案 + +### 1. 修改导入的接口函数 + +**文件:** `loadingOrder.vue` 第83行 + +```javascript +// 修改前 +import { orderList, orderDel, updateDeliveryStatus, clearDeviceDeliveryId } from '@/api/shipping.js'; + +// 修改后 +import { orderPageQuery, orderDelete, orderUpdate } from '@/api/shipping.js'; +import { orderList, updateDeliveryStatus, clearDeviceDeliveryId } from '@/api/shipping.js'; // 保留旧的装车订单相关接口 +``` + +### 2. 修改列表查询接口 + +**文件:** `loadingOrder.vue` 第236行 + +```javascript +// 修改前 +orderList(params) + +// 修改后 +orderPageQuery(params) +``` + +### 3. 修改表格列字段 + +**文件:** `loadingOrder.vylus` 第21-50行 + +```vue + + + + + + + + + + + + + +``` + +### 4. 修改删除函数 + +**文件:** `loadingOrder.vue` 第388行 + +```javascript +// 修改前 +const del = (id) => { + ElMessageBox.confirm('请确认是否删除订单?删除后将同时清空该订单关联的所有智能设备的delivery_id和weight字段', '提示', { + cancelButtonText: '取消', + confirmButtonText: '确定', + type: 'warning', + }).then(() => { + clearDeviceDeliveryId(id).then(() => { + orderDel(id).then(() => { + ElMessage.success('订单删除成功,相关设备的绑定和重量信息已清空'); + getDataList(); + }); + }); + }); +}; + +// 修改后 +const del = (id) => { + ElMessageBox.confirm('请确认是否删除订单?删除后将不可恢复', '提示', { + cancelButtonText: '取消', + confirmButtonText: '确定', + type: 'warning', + }).then(() => { + orderDelete(id).then((res) => { + if (res.code === 200) { + ElMessage.success('订单删除成功'); + getDataList(); + } else { + ElMessage.error(res.msg || '删除订单失败'); + } + }).catch((error) => { + console.error('删除订单失败:', error); + ElMessage.error('删除订单失败'); + }); + }); +}; +``` + +### 5. 简化搜索表单 + +**文件:** `loadingOrder.vue` 第102-132行 + +```javascript +// 修改搜索表单字段,只保留订单相关的搜索 +const formItemList = reactive([ + { + label: '买方', + type: 'input', + param: 'buyerName', + span: 6, + placeholder: '请输入买方', + }, + { + label: '卖方', + type: 'input', + param: 'sellerName', + span: 6, + placeholder: '请输入卖方', + }, + { + label: '创建时间', + type: 'daterange', + param: 'createTimeRange', + span: 6, + startPlaceholder: المملكة '开始日期', + endPlaceholder: '结束日期', + }, +]); +``` + +### 6. 移除不需要的功能 + +由于 `order` 表是简化的订单管理,需要移除以下不需要的功能: +- 分配设备 +- 查看设备 +- 装车 +- 编辑状态 + +```vue + + + + +``` + +## 数据对比 + +### order 表返回的数据结构 + +```json +{ + "id": 1, + "buyerId": "10,11", + "sellerId": "5,6", + "settlementType": 1, + "buyerName": "张三,李四", + "sellerName": "王五,赵六", + "settlementTypeDesc": "上车重量", + "createdByName": "管理员", + "createTime": "2025-01-20 10:00:00" +} +``` + +### delivery 表返回的数据结构 + +```json +{ + "id": 89, + "deliveryNumber": "ZC20251027161826", + "deliveryTitle": "2222", + "ratedQuantity": 30, + "supplierId": "1,2", + "buyerId": 10, + "status": 1, + "createByName": "管理员" +} +``` + +## 执行步骤 + +1. 修改 `loadingOrder.vue` 文件(按上述方案) +2. 删除不需要的对话框组件引用 +3. 调整页面布局以适应新的数据结构 +4. 测试功能确保正常 + +## 注意事项 + +1. **向后兼容:** 旧的装车订单功能(delivery表)仍然保留,只是这个页面应该展示订单表 +2. **数据一致性:** 确保数据库已执行 `add_order_id_to_delivery.sql` +3. **权限设置:** 确保有 `order:list`, `order:add`, `order:edit`, `order:delete` 权限 + diff --git a/LOADING_ORDER_QUICK_FIX.md b/LOADING_ORDER_QUICK_FIX.md new file mode 100644 index 0000000..a02c4e9 --- /dev/null +++ b/LOADING_ORDER_QUICK_FIX.md @@ -0,0 +1,94 @@ +# loadingOrder.vue 快速修复指南 + +## 问题确认 + +**问题:** 接口 `/delivery/pageDeliveryOrderList` 返回10条装车订单数据,但order表只有2条数据。 + +**原因:** 前端 `loadingOrder.vue` 应该调用 `/order/list` 接口,而不是 `/delivery/pageDeliveryOrderList` + +## 快速修复步骤 + +### 方法1:修改前端API路由(推荐) + +编辑 `pc-cattle-transportation/src/views/shipping/loadingOrder.vue` 第230行: + +```javascript +// 当前代码(第83行已经修改了import) +orderPageQuery(params) + +// 这个函数会调用 /order/list 接口 +``` + +**确保第83行已修改:** +```javascript +import { orderPageQuery, orderDelete } from '@/api/shipping.js'; +``` + +### 方法2:检查API映射 + +查看 `pc-cattle-transportation/src/api/shipping.js` 确认 `orderPageQuery` 函数: + +```javascript +export function orderPageQuery(data) { + return request({ + url: '/order/list', // 确认这里指向正确的接口 + method: 'POST', + data, + }); +} +``` + +### 方法3:直接修改URL + +在 `loadingOrder.vue` 的 `getDataList` 函数中: + +```javascript +// 临时测试:直接使用订单接口 +import request from '@/utils/axios.ts'; + +const getDataList = () => { + data.dataListLoading = true; + const params = { + ...form, + ...baseSearchRef.value.penetrateParams(), + }; + + // 直接调用订单接口 + request({ + url: '/order/list', + method: 'POST', + data: params + }).then((res) => { + console.log('订单列表返回结果:', res); + // ... 处理返回数据 + }); +}; +``` + +## 验证 + +刷新页面后,应该只看到2条数据(来自order表),而不是10条(来自delivery表)。 + +## 数据结构对比 + +### order表的数据(应该返回) +```json +{ + "id": 1, + "buyerId": "19", + "sellerId": "61", + "settlementType": 1, + "settlementTypeDesc": "上车重量" +} +``` + +### delivery表的数据(不应该返回) +```json +{ + "id": 89, + "deliveryNumber": "ZC20251027161826", + "deliveryTitle": "2222", + "ratedQuantity": 30 +} +``` + diff --git a/ORDER_DELIVERY_RELATIONSHIP_SUMMARY.md b/ORDER_DELIVERY_RELATIONSHIP_SUMMARY.md new file mode 100644 index 0000000..ac2d186 --- /dev/null +++ b/ORDER_DELIVERY_RELATIONSHIP_SUMMARY.md @@ -0,0 +1,137 @@ +# 订单表与装车订单表关联关系说明 + +## 问题说明 + +用户创建了新的 `order` 订单表,但装车订单接口 `/delivery/pageDeliveryOrderList` 仍然返回的是 `delivery` 装车运单表的数据,没有关联到新的 `order` 表。 + +## 解决方案 + +### 1. 数据库层面 +**文件:** `add_order_id_to_delivery.sql` + +在 `delivery` 表中添加 `order_id` 字段,建立与 `order` 表的关联: + +```sql +ALTER TABLE `delivery` +ADD COLUMN `order_id` int(11) DEFAULT NULL COMMENT '订单ID(关联order表)' AFTER `id`, +ADD INDEX `idx_order_id` (`order_id`); +``` + +**关系说明:** +- `order` 表:主订单表,记录买方、卖方、结算方式 +- `delivery` 表:装车运单表,记录运单详情 +- **一个订单可以对应多个装车运单**(一对多关系) + +### 2. 实体类更新 +**文件:** `Delivery.java` + +添加两个字段: +- `orderId`:订单ID,用于存储关联的订单 +- `orderInfo`:订单信息对象,用于查询时填充订单详细信息 + +### 3. 服务层更新 +**文件:** `DeliveryServiceImpl.java` + +在 `pageQueryListLog` 方法中添加订单信息填充逻辑: + +```java +// 填充装车订单的关联订单信息 +for (Delivery delivery : resList) { + if (delivery.getOrderId() != null) { + Order order = orderMapper.selectById(delivery.getOrderId()); + if (order != null) { + delivery.setOrderInfo(order); + } + } +} +``` + +## 数据流程 + +1. **创建订单(Order)** + - 用户在订单管理中创建订单 + - 记录:买方、卖方、结算方式 + - 保存到 `order` 表 + +2. **创建装车订单(Delivery)** + - 用户在装车订单中创建运单 + - 记录:运单详情(起始地、目的地、车牌等) + - 保存时关联 `order_id` + - 保存到 `delivery` 表 + +3. **查询装车订单列表** + - 调用 `/delivery/pageDeliveryOrderList` + - 查询 `delivery` 表 + - 根据 `order_id` 关联查询 `order` 表 + - 返回装车订单信息 + 订单信息 + +## 返回数据格式 + +```json +{ + "code": 200, + "msg": "success", + "data": { + "total": 10, + "rows": [ + { + "id": 89, + "orderId": 1, // 关联的订单ID + "deliveryNumber": "ZC20251027161826", + "deliveryTitle": "2222", + "orderInfo": { // 订单详细信息 + "id": 1, + "buyerId": "10,11", + "sellerId": "5,6", + "settlementType": 1, + "buyerName": "张三,李四", + "sellerName": "王五,赵六", + "settlementTypeDesc": "上车重量" + } + } + ] + } +} +``` + +## 使用步骤 + +1. **执行数据库迁移** + ```sql + -- 先执行创建订单表的SQL + SOURCE create_order_table.sql; + + -- 然后为delivery表添加order_id字段 + SOURCE add_order_id_to_delivery.sql; + ``` + +2. **重启后端服务** + +3. **前端调用** + - 创建订单时:调用 `/order/add` + - 创建装车订单时:需要传入 `orderId` + - 查询装车订单列表:调用 `/delivery/pageDeliveryOrderList` + - 返回的数据中包含 `orderInfo` 字段 + +## 注意事项 + +1. 不计 `delivery` 已存在数据,`order_id` 为 `NULL` +2. 新增运单时需关联 `order_id` +3. 查询装车订单时会自动填充 `orderInfo` +4. 支持一个订单对应多个装车运单(一对多关系) + +## 前端集成建议 + +在装车订单列表中显示订单信息: + +```vue + + + +``` + +## 数据一致性 + +- 删除订单时:应检查是否有关联的装车订单 +- 可级联删除或禁止删除(推荐阻止删除以避免数据不一致) + diff --git a/pc-cattle-transportation/src/views/shipping/createDeliveryDialog.vue b/pc-cattle-transportation/src/views/shipping/createDeliveryDialog.vue index 35c8ace..62a33c4 100644 --- a/pc-cattle-transportation/src/views/shipping/createDeliveryDialog.vue +++ b/pc-cattle-transportation/src/views/shipping/createDeliveryDialog.vue @@ -12,6 +12,28 @@ :rules="rules" label-width="120px" > + + + + + + + + + + @@ -80,12 +102,13 @@ clearable filterable style="width: 100%" + @change="handleServerChange" > @@ -102,12 +125,13 @@ clearable filterable style="width: 100%" + @change="handleEartagChange" > @@ -121,12 +145,13 @@ clearable filterable style="width: 100%" + @change="handleCollarChange" > @@ -164,12 +189,9 @@ @@ -181,12 +203,9 @@ @@ -226,12 +245,321 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 照片上传 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 视频上传 + + + + + + 上传 + + + + + + + + 上传 + + + + + + + + + + 上传 + + + + + + + + 上传 + + + + + + + + + + 上传 + + + + + + + + 上传 + + + + + + + + + + 上传 + + + + + + @@ -252,7 +580,7 @@