Skip to content

Commit 00a386d

Browse files
committed
✨ ERP:增加 ERP 销售出库的编辑界面
1 parent c0db4df commit 00a386d

File tree

7 files changed

+149
-63
lines changed

7 files changed

+149
-63
lines changed

src/api/erp/sale/order/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export interface SaleOrderVO {
1010
totalPrice: number // 合计金额,单位:元
1111
status: number // 状态
1212
remark: string // 备注
13-
inCount: number // 销售入库数量
13+
outCount: number // 销售出库数量
1414
returnCount: number // 销售退货数量
1515
}
1616

src/views/erp/sale/order/SaleOrderForm.vue

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,24 @@
4343
</el-select>
4444
</el-form-item>
4545
</el-col>
46+
<el-col :span="8">
47+
<el-form-item label="销售人员" prop="saleUserId">
48+
<el-select
49+
v-model="formData.saleUserId"
50+
clearable
51+
filterable
52+
placeholder="请选择销售人员"
53+
class="!w-1/1"
54+
>
55+
<el-option
56+
v-for="item in userList"
57+
:key="item.id"
58+
:label="item.nickname"
59+
:value="item.id"
60+
/>
61+
</el-select>
62+
</el-form-item>
63+
</el-col>
4664
<el-col :span="16">
4765
<el-form-item label="备注" prop="remark">
4866
<el-input
@@ -140,6 +158,7 @@ import SaleOrderItemForm from './components/SaleOrderItemForm.vue'
140158
import { CustomerApi, CustomerVO } from '@/api/erp/sale/customer'
141159
import { AccountApi, AccountVO } from '@/api/erp/finance/account'
142160
import { erpPriceInputFormatter, erpPriceMultiply } from '@/utils'
161+
import * as UserApi from '@/api/system/user'
143162
144163
/** ERP 销售订单表单 */
145164
defineOptions({ name: 'SaleOrderForm' })
@@ -155,6 +174,7 @@ const formData = ref({
155174
id: undefined,
156175
customerId: undefined,
157176
accountId: undefined,
177+
saleUserId: undefined,
158178
orderTime: undefined,
159179
remark: undefined,
160180
fileUrl: '',
@@ -173,6 +193,7 @@ const disabled = computed(() => formType.value === 'detail')
173193
const formRef = ref() // 表单 Ref
174194
const customerList = ref<CustomerVO[]>([]) // 客户列表
175195
const accountList = ref<AccountVO[]>([]) // 账户列表
196+
const userList = ref<UserApi.UserVO[]>([]) // 用户列表
176197
177198
/** 子表的表单 */
178199
const subTabsName = ref('item')
@@ -211,6 +232,8 @@ const open = async (type: string, id?: number) => {
211232
}
212233
// 加载客户列表
213234
customerList.value = await CustomerApi.getCustomerSimpleList()
235+
// 加载用户列表
236+
userList.value = await UserApi.getSimpleUserList()
214237
// 加载账户列表
215238
accountList.value = await AccountApi.getAccountSimpleList()
216239
const defaultAccount = accountList.value.find((item) => item.defaultStatus)
@@ -251,6 +274,7 @@ const resetForm = () => {
251274
id: undefined,
252275
customerId: undefined,
253276
accountId: undefined,
277+
saleUserId: undefined,
254278
orderTime: undefined,
255279
remark: undefined,
256280
fileUrl: undefined,

src/views/erp/sale/order/components/SaleOrderItemForm.vue

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,6 @@ const formLoading = ref(false) // 表单的加载中
153153
const formData = ref([])
154154
const formRules = reactive({
155155
inId: [{ required: true, message: '出库编号不能为空', trigger: 'blur' }],
156-
warehouseId: [{ required: true, message: '仓库不能为空', trigger: 'blur' }],
157156
productId: [{ required: true, message: '产品不能为空', trigger: 'blur' }],
158157
count: [{ required: true, message: '产品数量不能为空', trigger: 'blur' }]
159158
})

src/views/erp/sale/order/components/SaleOrderOutEnableList.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@
9292
<el-table-column
9393
label="出库数量"
9494
align="center"
95-
prop="inCount"
95+
prop="outCount"
9696
:formatter="erpCountTableColumnFormatter"
9797
/>
9898
<el-table-column

src/views/erp/sale/order/index.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@
182182
<el-table-column
183183
label="出库数量"
184184
align="center"
185-
prop="inCount"
185+
prop="outCount"
186186
:formatter="erpCountTableColumnFormatter"
187187
/>
188188
<el-table-column

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

Lines changed: 71 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<template>
2-
<Dialog :title="dialogTitle" v-model="dialogVisible" width="1080">
2+
<Dialog :title="dialogTitle" v-model="dialogVisible" width="1440">
33
<el-form
44
ref="formRef"
55
:model="formData"
@@ -25,6 +25,17 @@
2525
/>
2626
</el-form-item>
2727
</el-col>
28+
<el-col :span="8">
29+
<el-form-item label="关联订单" prop="orderNo">
30+
<el-input v-model="formData.orderNo" readonly>
31+
<template #append>
32+
<el-button @click="openSaleOrderOutEnableList">
33+
<Icon icon="ep:search" /> 选择
34+
</el-button>
35+
</template>
36+
</el-input>
37+
</el-form-item>
38+
</el-col>
2839
<el-col :span="8">
2940
<el-form-item label="客户" prop="customerId">
3041
<el-select
@@ -44,17 +55,24 @@
4455
</el-form-item>
4556
</el-col>
4657
<el-col :span="8">
47-
<el-form-item label="关联订单" prop="orderNo">
48-
<el-input v-model="formData.orderNo" readonly>
49-
<template #append>
50-
<el-button @click="openSaleOrderOutEnableList">
51-
<Icon icon="ep:search" /> 选择
52-
</el-button>
53-
</template>
54-
</el-input>
58+
<el-form-item label="销售人员" prop="saleUserId">
59+
<el-select
60+
v-model="formData.saleUserId"
61+
clearable
62+
filterable
63+
placeholder="请选择销售人员"
64+
class="!w-1/1"
65+
>
66+
<el-option
67+
v-for="item in userList"
68+
:key="item.id"
69+
:label="item.nickname"
70+
:value="item.id"
71+
/>
72+
</el-select>
5573
</el-form-item>
5674
</el-col>
57-
<el-col :span="8">
75+
<el-col :span="16">
5876
<el-form-item label="备注" prop="remark">
5977
<el-input
6078
type="textarea"
@@ -105,6 +123,18 @@
105123
<el-input disabled v-model="formData.totalPrice" :formatter="erpPriceInputFormatter" />
106124
</el-form-item>
107125
</el-col>
126+
<el-col :span="8">
127+
<el-form-item label="其它费用" prop="otherPrice">
128+
<el-input-number
129+
v-model="formData.otherPrice"
130+
controls-position="right"
131+
:min="0"
132+
:precision="2"
133+
placeholder="请输入其它费用"
134+
class="!w-1/1"
135+
/>
136+
</el-form-item>
137+
</el-col>
108138
<el-col :span="8">
109139
<el-form-item label="结算账户" prop="accountId">
110140
<el-select
@@ -124,13 +154,13 @@
124154
</el-form-item>
125155
</el-col>
126156
<el-col :span="8">
127-
<el-form-item label="收取订金" prop="depositPrice">
157+
<el-form-item label="本次收款" prop="payPrice">
128158
<el-input-number
129-
v-model="formData.depositPrice"
159+
v-model="formData.payPrice"
130160
controls-position="right"
131161
:min="0"
132162
:precision="2"
133-
placeholder="请输入收取订金"
163+
placeholder="请输入本次收款"
134164
class="!w-1/1"
135165
/>
136166
</el-form-item>
@@ -156,6 +186,7 @@ import { AccountApi, AccountVO } from '@/api/erp/finance/account'
156186
import { erpPriceInputFormatter, erpPriceMultiply } from '@/utils'
157187
import SaleOrderOutEnableList from '@/views/erp/sale/order/components/SaleOrderOutEnableList.vue'
158188
import { SaleOrderVO } from '@/api/erp/sale/order'
189+
import * as UserApi from '@/api/system/user'
159190
160191
/** ERP 销售出库表单 */
161192
defineOptions({ name: 'SaleOutForm' })
@@ -171,25 +202,29 @@ const formData = ref({
171202
id: undefined,
172203
customerId: undefined,
173204
accountId: undefined,
205+
saleUserId: undefined,
174206
outTime: undefined,
175207
remark: undefined,
176208
fileUrl: '',
177209
discountPercent: 0,
178210
discountPrice: 0,
179211
totalPrice: 0,
180-
depositPrice: 0,
212+
otherPrice: 0,
213+
payPrice: 0,
181214
orderNo: undefined,
182215
items: [],
183216
no: undefined // 出库单号,后端返回
184217
})
185218
const formRules = reactive({
186219
customerId: [{ required: true, message: '客户不能为空', trigger: 'blur' }],
187-
outTime: [{ required: true, message: '出库时间不能为空', trigger: 'blur' }]
220+
outTime: [{ required: true, message: '出库时间不能为空', trigger: 'blur' }],
221+
payPrice: [{ required: true, message: '本次收款不能为空', trigger: 'blur' }]
188222
})
189223
const disabled = computed(() => formType.value === 'detail')
190224
const formRef = ref() // 表单 Ref
191225
const customerList = ref<CustomerVO[]>([]) // 客户列表
192226
const accountList = ref<AccountVO[]>([]) // 账户列表
227+
const userList = ref<UserApi.UserVO[]>([]) // 用户列表
193228
194229
/** 子表的表单 */
195230
const subTabsName = ref('item')
@@ -202,11 +237,17 @@ watch(
202237
if (!val) {
203238
return
204239
}
240+
// 计算
205241
const totalPrice = val.items.reduce((prev, curr) => prev + curr.totalPrice, 0)
206242
const discountPrice =
207243
val.discountPercent != null ? erpPriceMultiply(totalPrice, val.discountPercent / 100.0) : 0
244+
// debugger
245+
// TODO 芋艿:这里有问题
246+
const payPrice = totalPrice - discountPrice + val.otherPrice
247+
// 赋值
208248
formData.value.discountPrice = discountPrice
209249
formData.value.totalPrice = totalPrice - discountPrice
250+
formData.value.payPrice = payPrice
210251
},
211252
{ deep: true }
212253
)
@@ -228,15 +269,14 @@ const open = async (type: string, id?: number) => {
228269
}
229270
// 加载客户列表
230271
customerList.value = await CustomerApi.getCustomerSimpleList()
272+
// 加载用户列表
273+
userList.value = await UserApi.getSimpleUserList()
231274
// 加载账户列表
232275
accountList.value = await AccountApi.getAccountSimpleList()
233276
const defaultAccount = accountList.value.find((item) => item.defaultStatus)
234277
if (defaultAccount) {
235278
formData.value.accountId = defaultAccount.id
236279
}
237-
238-
// TODO 芋艿:单独搞
239-
// saleOrderOutEnableListRef.value.open()
240280
}
241281
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
242282
@@ -247,18 +287,17 @@ const openSaleOrderOutEnableList = () => {
247287
}
248288
249289
const handleSaleOrderChange = (order: SaleOrderVO) => {
250-
debugger
290+
// 将订单设置到出库单
291+
formData.value.orderId = order.id
251292
formData.value.orderNo = order.no
252-
// formData.value.customerId = order.customerId
253-
// formData.value.accountId = order.accountId
254-
// formData.value.items = order.items.map((item) => {
255-
// return {
256-
// productId: item.productId,
257-
// count: item.count,
258-
// productPrice: item.productPrice,
259-
// taxPercent: item.taxPercent
260-
// }
261-
// })
293+
formData.value.customerId = order.customerId
294+
formData.value.accountId = order.accountId
295+
formData.value.saleUserId = order.saleUserId
296+
formData.value.discountPercent = order.discountPercent
297+
formData.value.remark = order.remark
298+
formData.value.fileUrl = order.fileUrl
299+
// 将订单项设置到出库单项
300+
formData.value.items = order.items.filter((item) => item.count > item.outCount)
262301
}
263302
264303
/** 提交表单 */
@@ -292,13 +331,15 @@ const resetForm = () => {
292331
id: undefined,
293332
customerId: undefined,
294333
accountId: undefined,
334+
saleUserId: undefined,
295335
outTime: undefined,
296336
remark: undefined,
297337
fileUrl: undefined,
298338
discountPercent: 0,
299339
discountPrice: 0,
300340
totalPrice: 0,
301-
depositPrice: 0,
341+
otherPrice: 0,
342+
payPrice: 0,
302343
items: []
303344
}
304345
formRef.value?.resetFields()

0 commit comments

Comments
 (0)