Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
factory_front
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
qinjianhui
factory_front
Commits
e212c47d
Commit
e212c47d
authored
Jan 21, 2026
by
qinjianhui
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 审核功能开发
parent
6dbe6fd5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
158 additions
and
42 deletions
+158
-42
src/api/stockingOrder.ts
+11
-3
src/views/supply/stockingOrder/AddStockingOrderDialog.vue
+45
-8
src/views/supply/stockingOrder/StockingOrderDetailTabs.vue
+1
-14
src/views/supply/stockingOrder/SupplierDispatchOrder.vue
+27
-0
src/views/supply/stockingOrder/index.vue
+74
-17
No files found.
src/api/stockingOrder.ts
View file @
e212c47d
...
...
@@ -8,7 +8,7 @@ import {
StockingOrderProduct
,
InternalMemoList
,
RelatedDocumentList
,
LogListData
LogListData
,
}
from
'@/types/api/supply/stockingOrder'
export
function
getStockingOrderListApi
(
...
...
@@ -71,4 +71,13 @@ export function getStockingOrderLogListByIdApi(id: number) {
return
axios
.
get
<
never
,
BaseRespData
<
LogListData
[]
>>
(
`factory/supply/stockingUpManageLog/getStockingUpManageLog?manageId=
${
id
}
`
,
)
}
\ No newline at end of file
}
export
function
submitStockingOrderAuditApi
(
ids
:
string
)
{
return
axios
.
get
<
never
,
BaseRespData
<
void
>>
(
'factory/supply/stockingUpManage/submission'
,
{
params
:
{
ids
},
},
)
}
src/views/supply/stockingOrder/AddStockingOrderDialog.vue
View file @
e212c47d
<
template
>
<ElDialog
v-model=
"visible"
:title=
"!editId ? '新增备货单' : '编辑备货单'"
:title=
"
editOrderType === 'add'
? '新增备货单'
: editOrderType === 'edit'
? '编辑备货单'
: '审核备货单'
"
width=
"1400px"
top=
"15vh"
:close-on-click-modal=
"false"
destroy-on-close
>
<div
class=
"
n
"
>
<div
class=
"
add-stocking-order
"
>
<div
class=
"form-section"
>
<ElForm
ref=
"formRef"
...
...
@@ -31,6 +37,7 @@
placeholder=
"请选择"
filterable
clearable
:disabled=
"editOrderType === 'audit'"
style=
"width: 100%"
@
change=
"handleSupplierChange"
>
...
...
@@ -51,6 +58,7 @@
v-model=
"formData.stockingUpUserId"
placeholder=
"请选择"
filterable
:disabled=
"editOrderType === 'audit'"
clearable
style=
"width: 100%"
>
...
...
@@ -67,6 +75,7 @@
v-model=
"formData.warehouseId"
placeholder=
"请选择"
filterable
:disabled=
"editOrderType === 'audit'"
clearable
style=
"width: 100%"
>
...
...
@@ -138,6 +147,7 @@
<ElInput
v-model=
"row.buyAmount"
clearable
:disabled=
"editOrderType === 'audit'"
size=
"small"
style=
"width: 80px"
@
blur=
"validateField(row, 'buyAmount')"
...
...
@@ -150,6 +160,7 @@
<ElInput
v-model=
"row.price"
clearable
:disabled=
"editOrderType === 'audit'"
size=
"small"
style=
"width: 80px"
:class=
"
{ 'is-error': row._priceError }"
...
...
@@ -162,7 +173,10 @@
</TableView>
</div>
<div
class=
"add-sku-section"
>
<div
v-if=
"editOrderType === 'add' || editOrderType === 'edit'"
class=
"add-sku-section"
>
<span
class=
"label"
>
添加SKU
</span>
<ElInput
v-model=
"productSku"
...
...
@@ -210,12 +224,31 @@
<
template
#
footer
>
<div
class=
"dialog-footer"
>
<ElButton
size=
"large"
@
click=
"handleCancel"
>
取消
</ElButton>
<ElButton
size=
"large"
type=
"primary"
@
click=
"handleSave"
<ElButton
v-if=
"editOrderType === 'add' || editOrderType === 'edit'"
size=
"large"
type=
"primary"
@
click=
"handleSave"
>
保存
</ElButton
>
<ElButton
size=
"large"
type=
"success"
@
click=
"handleSaveAndSubmit"
>
<ElButton
v-if=
"editOrderType === 'add' || editOrderType === 'edit'"
size=
"large"
type=
"success"
@
click=
"handleSaveAndSubmit"
>
保存并提交审核
</ElButton>
<ElButton
v-if=
"editOrderType === 'audit'"
size=
"large"
type=
"success"
@
click=
"handleSave"
>
审核通过
</ElButton
>
<ElButton
v-if=
"editOrderType === 'audit'"
size=
"large"
type=
"danger"
>
审核驳回
</ElButton
>
</div>
</
template
>
</ElDialog>
...
...
@@ -254,6 +287,7 @@ const props = defineProps<{
warehouseList
:
WarehouseListData
[]
currencyList
:
CurrencyCodeData
[]
editId
:
number
|
undefined
editOrderType
:
string
}
>
()
const
emit
=
defineEmits
<
{
...
...
@@ -520,9 +554,12 @@ const handleSave = async () => {
const
stockingUpUserName
=
props
.
stockKeeperList
.
find
(
(
item
)
=>
item
.
id
===
stockingUpUserId
,
)?.
account
const
url
=
!
props
.
editId
?
'factory/supply/stockingUpManage/add'
:
`factory/supply/stockingUpManage/update`
const
url
=
props
.
editOrderType
===
'add'
?
'factory/supply/stockingUpManage/add'
:
props
.
editOrderType
===
'edit'
?
`factory/supply/stockingUpManage/update`
:
`factory/supply/stockingUpManage/examine`
const
loading
=
ElLoading
.
service
({
lock
:
true
,
text
:
'加载中...'
,
...
...
src/views/supply/stockingOrder/StockingOrderDetailTabs.vue
View file @
e212c47d
...
...
@@ -47,7 +47,6 @@ import {
TableData
,
}
from
'@/types/api/supply/stockingOrder'
import
ImageView
from
'@/components/ImageView.vue'
import
{
BigNumber
}
from
'bignumber.js'
import
{
getStockingOrderDetailListByIdApi
,
getStockingOrderInternalMemoListByIdApi
,
...
...
@@ -68,6 +67,7 @@ const relatedDocumentsColumns = computed(() => {
{
label
:
'制单人'
,
width
:
120
,
prop
:
"createUserName"
,
},
{
label
:
'制单时间'
,
...
...
@@ -148,19 +148,6 @@ const stockProductsColumns = computed(() => {
align
:
'right'
,
},
{
label
:
'未发货数量'
,
prop
:
'unshippedQuantity'
,
width
:
120
,
align
:
'right'
,
render
:
(
item
:
StockingOrderProduct
)
=>
(
<
span
>
{
new
BigNumber
(
item
.
buyAmount
??
0
)
.
minus
(
item
.
shipmentQuantity
??
0
)
.
toString
()}
<
/span
>
),
},
{
label
:
'已发货数量'
,
prop
:
'shipmentQuantity'
,
width
:
120
,
...
...
src/views/supply/stockingOrder/SupplierDispatchOrder.vue
0 → 100644
View file @
e212c47d
<
template
>
<ElDialog
v-model=
"visible"
title=
"供应商发货"
width=
"1400px"
top=
"15vh"
:close-on-click-modal=
"false"
destroy-on-close
>
<div
class=
"supplier-dispatch-order-page card h-100 flex overflow-hidden"
></div>
</ElDialog>
</
template
>
<
script
setup
lang=
"tsx"
>
const
props
=
defineProps
<
{
visible
:
boolean
}
>
()
const
emit
=
defineEmits
<
{
(
e
:
'update:visible'
,
value
:
boolean
):
void
(
e
:
'refresh'
):
void
}
>
()
const
visible
=
computed
({
get
:
()
=>
props
.
visible
,
set
:
(
val
)
=>
emit
(
'update:visible'
,
val
),
})
</
script
>
src/views/supply/stockingOrder/index.vue
View file @
e212c47d
...
...
@@ -161,12 +161,6 @@
>
提交审核
<
/ElButto
n
>
<
/span
>
<
span
v
-
if
=
"status === 'PENDING_AUDIT'"
class
=
"item"
>
<
ElButton
type
=
"primary"
>
审核
<
/ElButton
>
<
/span
>
<
span
v
-
if
=
"status === 'STOCKING_UP'"
class
=
"item"
>
<
ElButton
type
=
"primary"
>
供应商发货
<
/ElButton
>
<
/span
>
<
span
v
-
if
=
"status === 'STOCKING_UP'"
class
=
"item"
>
<
ElButton
type
=
"warning"
>
备货完成
<
/ElButton
>
<
/span
>
...
...
@@ -223,17 +217,27 @@
:
stock
-
keeper
-
list
=
"stockKeeperList"
:
warehouse
-
list
=
"warehouseList"
:
currency
-
list
=
"currencyList"
:
edit
-
id
=
"editId"
@
refresh
=
"search"
:
edit
-
order
-
type
=
"editOrderType"
:
edit
-
id
=
"selectedRow?.id"
@
refresh
=
"onRefresh"
/>
<
SupplierDispatchOrder
v
-
model
:
visible
=
"supplierDispatchOrderVisible"
:
selected
-
row
=
"selectedRow"
@
refresh
=
"onRefresh"
/>
<
/div
>
<
/template
>
<
script
setup
lang
=
"tsx"
>
import
{
computed
,
ref
}
from
'vue'
import
{
getStockingOrderListApi
}
from
'@/api/stockingOrder'
import
{
getStockingOrderListApi
,
submitStockingOrderAuditApi
,
}
from
'@/api/stockingOrder'
import
TableView
from
'@/components/TableView.vue'
import
StockingOrderDetailTabs
from
'./StockingOrderDetailTabs.vue'
import
AddStockingOrderDialog
from
'./AddStockingOrderDialog.vue'
import
SupplierDispatchOrder
from
'./SupplierDispatchOrder.vue'
import
{
TreeData
,
SearchForm
,
...
...
@@ -390,17 +394,39 @@ const tableColumns = computed(() => {
{
label
:
'操作'
,
prop
:
'operation'
,
width
:
1
0
0
,
width
:
1
4
0
,
align
:
'center'
,
fixed
:
'right'
,
render
:
(
row
:
TableData
)
=>
{
return
(
<
span
>
{
row
.
status
===
'PENDING_SUBMIT'
&&
(
<
ElButton
link
type
=
"warning"
onClick
=
{()
=>
handleEdit
(
row
)
}
>
<
ElButton
link
type
=
"warning"
onClick
=
{()
=>
handleOrder
(
row
,
'edit'
)
}
>
编辑
<
/ElButton
>
)
}
{
row
.
status
===
'PENDING_AUDIT'
&&
(
<
ElButton
link
type
=
"success"
onClick
=
{()
=>
handleOrder
(
row
,
'audit'
)
}
>
审核
<
/ElButton
>
)
}
{
row
.
status
===
'STOCKING_UP'
&&
(
<
ElButton
link
type
=
"primary"
onClick
=
{()
=>
handleSupplierDispatchOrder
(
row
)
}
>
供应商发货
<
/ElButton
>
)
}
<
/span
>
)
}
,
...
...
@@ -421,12 +447,13 @@ const deliveryStatusList = ref([
{
label
:
'部分发货'
,
value
:
'partial'
}
,
{
label
:
'全部发货'
,
value
:
'completed'
}
,
])
const
edit
Id
=
ref
<
number
|
undefined
>
(
undefined
)
const
edit
OrderType
=
ref
<
string
>
(
'add'
)
const
selection
=
ref
<
TableData
[]
>
([])
const
rangeTime
=
ref
<
string
[]
>
([])
const
[
searchForm
,
resetSearchForm
]
=
useValue
<
SearchForm
>
({
}
as
SearchForm
)
const
treeRef
=
ref
()
const
tableRef
=
ref
()
const
supplierDispatchOrderVisible
=
ref
(
false
)
const
loadWarehouseList
=
async
()
=>
{
try
{
const
res
=
await
loadWarehouseListApi
()
...
...
@@ -526,22 +553,52 @@ const handleRowClick = (row: TableData) => {
}
}
const
handleEdit
=
(
row
:
TableData
)
=>
{
editId
.
value
=
row
.
id
as
number
const
handleOrder
=
(
row
:
TableData
,
type
:
string
)
=>
{
selectedRow
.
value
=
row
editOrderType
.
value
=
type
addDialogVisible
.
value
=
true
}
const
handleSupplierDispatchOrder
=
(
row
:
TableData
)
=>
{
selectedRow
.
value
=
row
supplierDispatchOrderVisible
.
value
=
true
}
// 新增备货单弹窗
const
addDialogVisible
=
ref
(
false
)
const
handleAddOrder
=
()
=>
{
editId
.
value
=
undefined
selectedRow
.
value
=
null
editOrderType
.
value
=
'add'
addDialogVisible
.
value
=
true
}
const
handleSubmitAudit
=
()
=>
{
const
handleSubmitAudit
=
async
()
=>
{
if
(
selection
.
value
.
length
===
0
)
{
return
ElMessage
.
warning
(
'请选择要操作的数据'
)
}
try
{
await
ElMessageBox
.
confirm
(
'确定要提交审核吗?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
,
}
)
}
catch
{
return
}
try
{
const
res
=
await
submitStockingOrderAuditApi
(
selection
.
value
.
map
((
el
)
=>
el
.
id
).
join
(
','
),
)
if
(
res
.
code
!==
200
)
return
ElMessage
.
success
(
'提交审核成功'
)
search
()
loadTreeData
()
}
catch
(
e
)
{
console
.
error
(
e
)
}
}
const
onRefresh
=
()
=>
{
search
()
loadTreeData
()
}
onMounted
(()
=>
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment