Skip to content

Commit eae2ea0

Browse files
committed
✨ ERP:初始化销售退货逻辑 100%
1 parent 3860aae commit eae2ea0

File tree

4 files changed

+224
-11
lines changed

4 files changed

+224
-11
lines changed
Lines changed: 212 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,212 @@
1+
<!-- 可退货的订单列表 -->
2+
<template>
3+
<Dialog
4+
title="选择销售订单(仅展示可退货)"
5+
v-model="dialogVisible"
6+
:appendToBody="true"
7+
:scroll="true"
8+
width="1080"
9+
>
10+
<ContentWrap>
11+
<!-- 搜索工作栏 -->
12+
<el-form
13+
class="-mb-15px"
14+
:model="queryParams"
15+
ref="queryFormRef"
16+
:inline="true"
17+
label-width="68px"
18+
>
19+
<el-form-item label="订单单号" prop="no">
20+
<el-input
21+
v-model="queryParams.no"
22+
placeholder="请输入订单单号"
23+
clearable
24+
@keyup.enter="handleQuery"
25+
class="!w-160px"
26+
/>
27+
</el-form-item>
28+
<el-form-item label="产品" prop="productId">
29+
<el-select
30+
v-model="queryParams.productId"
31+
clearable
32+
filterable
33+
placeholder="请选择产品"
34+
class="!w-160px"
35+
>
36+
<el-option
37+
v-for="item in productList"
38+
:key="item.id"
39+
:label="item.name"
40+
:value="item.id"
41+
/>
42+
</el-select>
43+
</el-form-item>
44+
<el-form-item label="订单时间" prop="orderTime">
45+
<el-date-picker
46+
v-model="queryParams.orderTime"
47+
value-format="YYYY-MM-DD HH:mm:ss"
48+
type="daterange"
49+
start-placeholder="开始日期"
50+
end-placeholder="结束日期"
51+
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
52+
class="!w-160px"
53+
/>
54+
</el-form-item>
55+
<el-form-item>
56+
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
57+
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
58+
</el-form-item>
59+
</el-form>
60+
</ContentWrap>
61+
62+
<ContentWrap>
63+
<el-table v-loading="loading" :data="list" :show-overflow-tooltip="true" :stripe="true">
64+
<el-table-column align="center" width="65">
65+
<template #default="scope">
66+
<el-radio
67+
:label="scope.row.id"
68+
v-model="currentRowValue"
69+
@change="handleCurrentChange(scope.row)"
70+
>
71+
&nbsp;
72+
</el-radio>
73+
</template>
74+
</el-table-column>
75+
<el-table-column min-width="180" label="订单单号" align="center" prop="no" />
76+
<el-table-column label="客户" align="center" prop="customerName" />
77+
<el-table-column label="产品信息" align="center" prop="productNames" min-width="200" />
78+
<el-table-column
79+
label="订单时间"
80+
align="center"
81+
prop="orderTime"
82+
:formatter="dateFormatter2"
83+
width="120px"
84+
/>
85+
<el-table-column label="创建人" align="center" prop="creatorName" />
86+
<el-table-column
87+
label="总数量"
88+
align="center"
89+
prop="totalCount"
90+
:formatter="erpCountTableColumnFormatter"
91+
/>
92+
<el-table-column
93+
label="出库数量"
94+
align="center"
95+
prop="outCount"
96+
:formatter="erpCountTableColumnFormatter"
97+
/>
98+
<el-table-column
99+
label="退货数量"
100+
align="center"
101+
prop="returnCount"
102+
:formatter="erpCountTableColumnFormatter"
103+
/>
104+
<el-table-column
105+
label="金额合计"
106+
align="center"
107+
prop="totalProductPrice"
108+
:formatter="erpPriceTableColumnFormatter"
109+
/>
110+
<el-table-column
111+
label="含税金额"
112+
align="center"
113+
prop="totalPrice"
114+
:formatter="erpPriceTableColumnFormatter"
115+
/>
116+
</el-table>
117+
<!-- 分页 -->
118+
<Pagination
119+
v-model:limit="queryParams.pageSize"
120+
v-model:page="queryParams.pageNo"
121+
:total="total"
122+
@pagination="getList"
123+
/>
124+
</ContentWrap>
125+
<template #footer>
126+
<el-button :disabled="!currentRow" type="primary" @click="submitForm">确 定</el-button>
127+
<el-button @click="dialogVisible = false">取 消</el-button>
128+
</template>
129+
</Dialog>
130+
</template>
131+
132+
<script lang="ts" setup>
133+
import { ElTable } from 'element-plus'
134+
import { SaleOrderApi, SaleOrderVO } from '@/api/erp/sale/order'
135+
import { dateFormatter2 } from '@/utils/formatTime'
136+
import { erpCountTableColumnFormatter, erpPriceTableColumnFormatter } from '@/utils'
137+
import { ProductApi, ProductVO } from '@/api/erp/product/product'
138+
139+
defineOptions({ name: 'SaleOrderReturnEnableList' })
140+
141+
const list = ref<SaleOrderVO[]>([]) // 列表的数据
142+
const total = ref(0) // 列表的总页数
143+
const loading = ref(false) // 列表的加载中
144+
const dialogVisible = ref(false) // 弹窗的是否展示
145+
const queryParams = reactive({
146+
pageNo: 1,
147+
pageSize: 10,
148+
no: undefined,
149+
productId: undefined,
150+
orderTime: [],
151+
returnEnable: true
152+
})
153+
const queryFormRef = ref() // 搜索的表单
154+
const productList = ref<ProductVO[]>([]) // 产品列表
155+
156+
/** 选中行 */
157+
const currentRowValue = ref(undefined) // 选中行的 value
158+
const currentRow = ref(undefined) // 选中行
159+
const handleCurrentChange = (row) => {
160+
currentRow.value = row
161+
}
162+
163+
/** 打开弹窗 */
164+
const open = async () => {
165+
dialogVisible.value = true
166+
await nextTick() // 等待,避免 queryFormRef 为空
167+
// 加载可退货的订单列表
168+
await resetQuery()
169+
// 加载产品列表
170+
productList.value = await ProductApi.getProductSimpleList()
171+
}
172+
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
173+
174+
/** 提交选择 */
175+
const emits = defineEmits<{
176+
(e: 'success', value: SaleOrderVO): void
177+
}>()
178+
const submitForm = () => {
179+
try {
180+
emits('success', currentRow.value)
181+
} finally {
182+
// 关闭弹窗
183+
dialogVisible.value = false
184+
}
185+
}
186+
187+
/** 加载列表 */
188+
const getList = async () => {
189+
loading.value = true
190+
try {
191+
const data = await SaleOrderApi.getSaleOrderPage(queryParams)
192+
list.value = data.list
193+
total.value = data.total
194+
} finally {
195+
loading.value = false
196+
}
197+
}
198+
199+
/** 重置按钮操作 */
200+
const resetQuery = () => {
201+
queryFormRef.value.resetFields()
202+
handleQuery()
203+
}
204+
205+
/** 搜索按钮操作 */
206+
const handleQuery = () => {
207+
queryParams.pageNo = 1
208+
currentRowValue.value = undefined
209+
currentRow.value = undefined
210+
getList()
211+
}
212+
</script>

src/views/erp/sale/out/SaleOutForm.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
v-model="formData.customerId"
4343
clearable
4444
filterable
45+
disabled
4546
placeholder="请选择客户"
4647
class="!w-1/1"
4748
>

src/views/erp/sale/return/SaleReturnForm.vue

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
</el-form-item>
1616
</el-col>
1717
<el-col :span="8">
18-
<el-form-item label="退货时间" prop="outTime">
18+
<el-form-item label="退货时间" prop="returnTime">
1919
<el-date-picker
2020
v-model="formData.returnTime"
2121
type="date"
@@ -42,6 +42,7 @@
4242
v-model="formData.customerId"
4343
clearable
4444
filterable
45+
disabled
4546
placeholder="请选择客户"
4647
class="!w-1/1"
4748
>
@@ -176,15 +177,15 @@
176177
</Dialog>
177178

178179
<!-- 可退货的订单列表 -->
179-
<!-- <SaleOrderReturnEnableList ref="saleOrderReturnEnableListRef" @success="handleSaleOrderChange" />-->
180+
<SaleOrderReturnEnableList ref="saleOrderReturnEnableListRef" @success="handleSaleOrderChange" />
180181
</template>
181182
<script setup lang="ts">
182183
import { SaleReturnApi, SaleReturnVO } from '@/api/erp/sale/return'
183184
import SaleReturnItemForm from './components/SaleReturnItemForm.vue'
184185
import { CustomerApi, CustomerVO } from '@/api/erp/sale/customer'
185186
import { AccountApi, AccountVO } from '@/api/erp/finance/account'
186187
import { erpPriceInputFormatter, erpPriceMultiply } from '@/utils'
187-
// import SaleOrderReturnEnableList from '@/views/erp/sale/order/components/SaleOrderReturnEnableList.vue'
188+
import SaleOrderReturnEnableList from '@/views/erp/sale/order/components/SaleOrderReturnEnableList.vue'
188189
import { SaleOrderVO } from '@/api/erp/sale/order'
189190
import * as UserApi from '@/api/system/user'
190191
@@ -299,8 +300,7 @@ const handleSaleOrderChange = (order: SaleOrderVO) => {
299300
formData.value.fileUrl = order.fileUrl
300301
// 将订单项设置到退货单项
301302
order.items.forEach((item) => {
302-
item.totalCount = item.count
303-
item.count = item.totalCount - item.returnCount
303+
item.count = item.outCount - item.returnCount
304304
item.orderItemId = item.id
305305
item.id = undefined
306306
})

src/views/erp/sale/return/components/SaleReturnItemForm.vue

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,26 +63,26 @@
6363
</template>
6464
</el-table-column>
6565
<el-table-column
66-
label="原数量"
66+
label="已出库"
6767
fixed="right"
6868
min-width="80"
69-
v-if="formData[0]?.totalCount != null"
69+
v-if="formData[0]?.outCount != null"
7070
>
7171
<template #default="{ row }">
7272
<el-form-item class="mb-0px!">
73-
<el-input disabled v-model="row.totalCount" :formatter="erpCountInputFormatter" />
73+
<el-input disabled v-model="row.outCount" :formatter="erpCountInputFormatter" />
7474
</el-form-item>
7575
</template>
7676
</el-table-column>
7777
<el-table-column
78-
label="已出库"
78+
label="已退货"
7979
fixed="right"
8080
min-width="80"
81-
v-if="formData[0]?.outCount != null"
81+
v-if="formData[0]?.returnCount != null"
8282
>
8383
<template #default="{ row }">
8484
<el-form-item class="mb-0px!">
85-
<el-input disabled v-model="row.outCount" :formatter="erpCountInputFormatter" />
85+
<el-input disabled v-model="row.returnCount" :formatter="erpCountInputFormatter" />
8686
</el-form-item>
8787
</template>
8888
</el-table-column>

0 commit comments

Comments
 (0)