jiaxing.zhou

feat(delivery):优化出库管理功能

- 更新组件类型定义,添加 ElCard、ElIcon 和 ElText 组件
-重构出库列表页面,统一使用 delivery 变量名替换 order 变量名- 修正删除按钮传递的参数错误问题
- 调整出库详情展示内容,优化信息展示结构
- 修改出库明细表格列名,更准确反映业务含义
- 扩展搜索参数,增加订单编号、开始日期和结束日期字段
- 优化新增出库逻辑,调整字段映射关系
-修复关闭详情弹窗后数据清理问题
- 统一刷新列表方法调用,确保数据同步更新
...@@ -8,12 +8,14 @@ export {} ...@@ -8,12 +8,14 @@ export {}
8 declare module 'vue' { 8 declare module 'vue' {
9 export interface GlobalComponents { 9 export interface GlobalComponents {
10 ElButton: typeof import('element-plus/es')['ElButton'] 10 ElButton: typeof import('element-plus/es')['ElButton']
11 + ElCard: typeof import('element-plus/es')['ElCard']
11 ElDatePicker: typeof import('element-plus/es')['ElDatePicker'] 12 ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
12 ElDescriptions: typeof import('element-plus/es')['ElDescriptions'] 13 ElDescriptions: typeof import('element-plus/es')['ElDescriptions']
13 ElDescriptionsItem: typeof import('element-plus/es')['ElDescriptionsItem'] 14 ElDescriptionsItem: typeof import('element-plus/es')['ElDescriptionsItem']
14 ElDialog: typeof import('element-plus/es')['ElDialog'] 15 ElDialog: typeof import('element-plus/es')['ElDialog']
15 ElForm: typeof import('element-plus/es')['ElForm'] 16 ElForm: typeof import('element-plus/es')['ElForm']
16 ElFormItem: typeof import('element-plus/es')['ElFormItem'] 17 ElFormItem: typeof import('element-plus/es')['ElFormItem']
18 + ElIcon: typeof import('element-plus/es')['ElIcon']
17 ElInput: typeof import('element-plus/es')['ElInput'] 19 ElInput: typeof import('element-plus/es')['ElInput']
18 ElInputNumber: typeof import('element-plus/es')['ElInputNumber'] 20 ElInputNumber: typeof import('element-plus/es')['ElInputNumber']
19 ElOption: typeof import('element-plus/es')['ElOption'] 21 ElOption: typeof import('element-plus/es')['ElOption']
...@@ -24,6 +26,7 @@ declare module 'vue' { ...@@ -24,6 +26,7 @@ declare module 'vue' {
24 ElTable: typeof import('element-plus/es')['ElTable'] 26 ElTable: typeof import('element-plus/es')['ElTable']
25 ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] 27 ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
26 ElTag: typeof import('element-plus/es')['ElTag'] 28 ElTag: typeof import('element-plus/es')['ElTag']
29 + ElText: typeof import('element-plus/es')['ElText']
27 Header: typeof import('./src/components/layout/Header.vue')['default'] 30 Header: typeof import('./src/components/layout/Header.vue')['default']
28 RouterLink: typeof import('vue-router')['RouterLink'] 31 RouterLink: typeof import('vue-router')['RouterLink']
29 RouterView: typeof import('vue-router')['RouterView'] 32 RouterView: typeof import('vue-router')['RouterView']
......
...@@ -98,13 +98,13 @@ ...@@ -98,13 +98,13 @@
98 </tr> 98 </tr>
99 </thead> 99 </thead>
100 <tbody> 100 <tbody>
101 - <tr v-for="order in orderList" :key="order.deliveryId"> 101 + <tr v-for="delivery in deliveryList" :key="delivery.deliveryId">
102 - <td>{{ order.deliveryId }}</td> 102 + <td>{{ delivery.deliveryId }}</td>
103 - <td>{{ order.deliveryNo }}</td> 103 + <td>{{ delivery.deliveryNo }}</td>
104 - <td>{{ order.dealerCode }}</td> 104 + <td>{{ delivery.dealerCode }}</td>
105 - <td>{{ order.dealerName }}</td> 105 + <td>{{ delivery.dealerName }}</td>
106 - <td>{{ formatDate(order.deliveryDate) }}</td> 106 + <td>{{ formatDate(delivery.deliveryDate) }}</td>
107 - <td>{{ order.orderNo }}</td> 107 + <td>{{ delivery.orderNo }}</td>
108 <td> 108 <td>
109 <span :class="getDeliveryStatusClass(delivery.deliveryStatus)"> 109 <span :class="getDeliveryStatusClass(delivery.deliveryStatus)">
110 {{ getDeliveryStatusText(delivery.deliveryStatus) }} 110 {{ getDeliveryStatusText(delivery.deliveryStatus) }}
...@@ -113,7 +113,7 @@ ...@@ -113,7 +113,7 @@
113 <td>{{ formatTime(delivery.createTime || '') }}</td> 113 <td>{{ formatTime(delivery.createTime || '') }}</td>
114 <td class="action-col"> 114 <td class="action-col">
115 <button @click="handleView(delivery)" class="view-btn">👁️ 查看</button> 115 <button @click="handleView(delivery)" class="view-btn">👁️ 查看</button>
116 - <button @click="handleDelete(order)" class="delete-btn">🗑️ 删除</button> 116 + <button @click="handleDelete(delivery)" class="delete-btn">🗑️ 删除</button>
117 </td> 117 </td>
118 </tr> 118 </tr>
119 </tbody> 119 </tbody>
...@@ -173,44 +173,48 @@ ...@@ -173,44 +173,48 @@
173 <button @click="closeDetailDialog" class="close-btn">×</button> 173 <button @click="closeDetailDialog" class="close-btn">×</button>
174 </div> 174 </div>
175 <div class="dialog-body"> 175 <div class="dialog-body">
176 - <div v-if="orderDetail" class="detail-content"> 176 + <div v-if="deliveryDetail" class="detail-content">
177 <div class="detail-section"> 177 <div class="detail-section">
178 - <h4>订单基本信息</h4> 178 + <h4>出库基本信息</h4>
179 <div class="detail-grid"> 179 <div class="detail-grid">
180 <div class="detail-item"> 180 <div class="detail-item">
181 - <label>订单编号:</label> 181 + <label>出库单号:</label>
182 - <span>{{ orderDetail.orderNo }}</span> 182 + <span>{{ deliveryDetail.deliveryNo }}</span>
183 + </div>
184 + <div class="detail-item">
185 + <label>关联订单编号:</label>
186 + <span>{{ deliveryDetail.orderNo }}</span>
183 </div> 187 </div>
184 <div class="detail-item"> 188 <div class="detail-item">
185 <label>经销商编码:</label> 189 <label>经销商编码:</label>
186 - <span>{{ orderDetail.dealerCode }}</span> 190 + <span>{{ deliveryDetail.dealerCode }}</span>
187 </div> 191 </div>
188 <div class="detail-item"> 192 <div class="detail-item">
189 <label>经销商名称:</label> 193 <label>经销商名称:</label>
190 - <span>{{ orderDetail.dealerName }}</span> 194 + <span>{{ deliveryDetail.dealerName }}</span>
191 </div> 195 </div>
192 <div class="detail-item"> 196 <div class="detail-item">
193 - <label>订单日期:</label> 197 + <label>出库日期:</label>
194 - <span>{{ formatDate(orderDetail.orderDate) }}</span> 198 + <span>{{ formatDate(deliveryDetail.deliveryDate) }}</span>
195 </div> 199 </div>
196 <div class="detail-item"> 200 <div class="detail-item">
197 - <label>订单总金额:</label> 201 + <label>出库总金额:</label>
198 - <span>{{ formatCurrency(orderDetail.totalAmount) }}</span> 202 + <span>{{ formatCurrency(deliveryDetail.totalAmount) }}</span>
199 </div> 203 </div>
200 <div class="detail-item"> 204 <div class="detail-item">
201 <label>出库状态:</label> 205 <label>出库状态:</label>
202 - <span :class="getDeliveryStatusClass(orderDetail.deliveryStatus)"> 206 + <span :class="getDeliveryStatusClass(deliveryDetail.deliveryStatus)">
203 - {{ getDeliveryStatusText(orderDetail.deliveryStatus) }} 207 + {{ getDeliveryStatusText(deliveryDetail.deliveryStatus) }}
204 </span> 208 </span>
205 </div> 209 </div>
206 <div class="detail-item"> 210 <div class="detail-item">
207 - <label>出库时间:</label> 211 + <label>创建时间:</label>
208 - <span>{{ formatTime(orderDetail.uploadTime || '') }}</span> 212 + <span>{{ formatTime(deliveryDetail.createTime || '') }}</span>
209 </div> 213 </div>
210 </div> 214 </div>
211 </div> 215 </div>
212 216
213 - <div class="detail-section" v-if="orderDetail.orderItems && orderDetail.orderItems.length > 0"> 217 + <div class="detail-section" v-if="deliveryDetail.deliveryItems && deliveryDetail.deliveryItems.length > 0">
214 <h4>出库明细</h4> 218 <h4>出库明细</h4>
215 <table class="detail-table"> 219 <table class="detail-table">
216 <thead> 220 <thead>
...@@ -218,17 +222,17 @@ ...@@ -218,17 +222,17 @@
218 <th>产品编码</th> 222 <th>产品编码</th>
219 <th>产品名称</th> 223 <th>产品名称</th>
220 <th>产品型号</th> 224 <th>产品型号</th>
221 - <th>数量</th> 225 + <th>出库数量</th>
222 - <th>单价</th> 226 + <th>出库单价</th>
223 - <th>总价</th> 227 + <th>出库总价</th>
224 </tr> 228 </tr>
225 </thead> 229 </thead>
226 <tbody> 230 <tbody>
227 - <tr v-for="item in orderDetail.orderItems" :key="item.itemId"> 231 + <tr v-for="item in deliveryDetail.deliveryItems" :key="item.itemId">
228 <td>{{ item.productCode }}</td> 232 <td>{{ item.productCode }}</td>
229 <td>{{ item.productName }}</td> 233 <td>{{ item.productName }}</td>
230 <td>{{ item.productModel }}</td> 234 <td>{{ item.productModel }}</td>
231 - <td>{{ item.quantity }}</td> 235 + <td>{{ item.productQty }}</td>
232 <td>{{ formatCurrency(item.unitPrice) }}</td> 236 <td>{{ formatCurrency(item.unitPrice) }}</td>
233 <td>{{ formatCurrency(item.totalPrice) }}</td> 237 <td>{{ formatCurrency(item.totalPrice) }}</td>
234 </tr> 238 </tr>
...@@ -435,6 +439,7 @@ const addFormData = reactive({ ...@@ -435,6 +439,7 @@ const addFormData = reactive({
435 439
436 // 搜索参数 440 // 搜索参数
437 const searchParams = reactive({ 441 const searchParams = reactive({
442 + orderNo: '',
438 deliveryNo: '', 443 deliveryNo: '',
439 dealerCode: '', 444 dealerCode: '',
440 dealerName: '', 445 dealerName: '',
...@@ -443,6 +448,8 @@ const searchParams = reactive({ ...@@ -443,6 +448,8 @@ const searchParams = reactive({
443 dataSource: '', 448 dataSource: '',
444 deliveryStartDate: '', 449 deliveryStartDate: '',
445 deliveryEndDate: '', 450 deliveryEndDate: '',
451 + startDate: '',
452 + endDate: '',
446 pageNum: 1, 453 pageNum: 1,
447 pageSize: 10 454 pageSize: 10
448 }) 455 })
...@@ -555,9 +562,9 @@ const handleReset = () => { ...@@ -555,9 +562,9 @@ const handleReset = () => {
555 fetchDeliveries() 562 fetchDeliveries()
556 } 563 }
557 564
558 -const handleView = async (order: DeliveryInfo) => { 565 +const handleView = async (delivery: DeliveryInfo) => {
559 try { 566 try {
560 - const response = await deliveryApi.getDeliveryDetail(order.deliveryId) as any 567 + const response = await deliveryApi.getDeliveryDetail(delivery.deliveryId) as any
561 console.log('出库查询详情API响应:', response) 568 console.log('出库查询详情API响应:', response)
562 569
563 // 由于request.ts的响应拦截器已经处理了code=200的情况,直接返回data 570 // 由于request.ts的响应拦截器已经处理了code=200的情况,直接返回data
...@@ -573,12 +580,12 @@ const handleView = async (order: DeliveryInfo) => { ...@@ -573,12 +580,12 @@ const handleView = async (order: DeliveryInfo) => {
573 } 580 }
574 } 581 }
575 582
576 -const handleDelete = async (order: DeliveryInfo) => { 583 +const handleDelete = async (delivery: DeliveryInfo) => {
577 - if (confirm(`确定要删除出库单"${order.deliveryNo}"吗?`)) { 584 + if (confirm(`确定要删除出库单"${delivery.deliveryNo}"吗?`)) {
578 try { 585 try {
579 - await deliveryApi.deleteDelivery(order.deliveryId) 586 + await deliveryApi.deleteDelivery(delivery.deliveryId)
580 showMessage('删除出库单成功', 'success') 587 showMessage('删除出库单成功', 'success')
581 - fetchOrders() // 刷新列表 588 + fetchDeliveries() // 刷新列表
582 } catch (error) { 589 } catch (error) {
583 console.error('删除出库单失败:', error) 590 console.error('删除出库单失败:', error)
584 showMessage('删除出库单失败, 请重试', 'error') 591 showMessage('删除出库单失败, 请重试', 'error')
...@@ -652,19 +659,19 @@ const handleSubmitAdd = async () => { ...@@ -652,19 +659,19 @@ const handleSubmitAdd = async () => {
652 deliveryStatus: 1, // 默认已出库 659 deliveryStatus: 1, // 默认已出库
653 warehouseCode: addFormData.warehouseCode, 660 warehouseCode: addFormData.warehouseCode,
654 dataSource: addFormData.dataSource || '系统录入', 661 dataSource: addFormData.dataSource || '系统录入',
655 - deliveryItems: addFormData.deliveryItems.map(item => ({ 662 + deliveryItems: addFormData.deliveryItems.map(item => ({
656 - productCode: item.productCode, 663 + productCode: item.productCode,
657 - productName: item.productName, 664 + productName: item.productName,
658 - deliveryQty: item.deliveryQty, 665 + productQty: item.deliveryQty,
659 - deliveryPrice: item.deliveryPrice, 666 + unitPrice: item.deliveryPrice,
660 - deliveryAmount: item.deliveryAmount 667 + totalPrice: item.deliveryAmount
661 - })) 668 + }))
662 } 669 }
663 670
664 await deliveryApi.addDelivery(deliveryData) 671 await deliveryApi.addDelivery(deliveryData)
665 showMessage('新增出库成功', 'success') 672 showMessage('新增出库成功', 'success')
666 closeAddDialog() 673 closeAddDialog()
667 - fetchOrders() // 刷新列表 674 + fetchDeliveries() // 刷新列表
668 } catch (error) { 675 } catch (error) {
669 console.error('新增出库失败:', error) 676 console.error('新增出库失败:', error)
670 showMessage('新增出库失败, 请重试', 'error') 677 showMessage('新增出库失败, 请重试', 'error')
...@@ -703,7 +710,7 @@ const handleTableViewToggle = () => { ...@@ -703,7 +710,7 @@ const handleTableViewToggle = () => {
703 710
704 const closeDetailDialog = () => { 711 const closeDetailDialog = () => {
705 showDetailDialog.value = false 712 showDetailDialog.value = false
706 - orderDetail.value = null 713 + deliveryDetail.value = null
707 } 714 }
708 715
709 // 生命周期 716 // 生命周期
......