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
2b2c4549
Commit
2b2c4549
authored
Apr 13, 2026
by
qinjianhui
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 添加转至待排单,修改地址,刷新地址功能
parent
619d8046
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
321 additions
and
28 deletions
+321
-28
src/api/factoryOrderNew.ts
+15
-0
src/types/api/order/factoryOrderNew.ts
+2
-0
src/views/order/factoryOrderNew/component/UpdateReceiverAddressDialog.vue
+159
-0
src/views/order/factoryOrderNew/index.vue
+145
-28
No files found.
src/api/factoryOrderNew.ts
View file @
2b2c4549
...
...
@@ -361,6 +361,14 @@ export function cancelLogisticsOrderApi(orderIds: (string | number)[]) {
orderIds
,
)
}
/** 待创建物流 → 待排单 */
export
function
updateLogisticsToArrangeApi
(
params
:
{
ids
:
string
})
{
return
axios
.
get
<
never
,
BaseRespData
<
unknown
>>
(
'factory/podOrder/updateLogisticsToArrange'
,
{
params
},
)
}
export
function
arrangeFinishApi
(
params
:
{
productIdList
:
number
[]
templateWidth
?:
number
...
...
@@ -456,6 +464,13 @@ export function syncReceiverAddress(data: number[]) {
)
}
export
function
updateReceiverAddressApi
(
data
:
Record
<
string
,
unknown
>
)
{
return
axios
.
post
<
never
,
BaseRespData
<
never
>>
(
'factory/podOrder/updateReceiverAddress'
,
data
,
)
}
export
function
updateRemarkApi
(
id
:
number
|
string
,
remark
:
string
)
{
return
axios
.
post
<
never
,
BaseRespData
<
void
>>
(
'factory/podOrderProduct/addRemark'
,
...
...
src/types/api/order/factoryOrderNew.ts
View file @
2b2c4549
...
...
@@ -59,6 +59,7 @@ export interface FactoryOrderNewListData {
totalAmount
?:
number
productNum
?:
number
shipmentType
?:
number
replaceShipment
?:
number
expressSheet
?:
string
trackingNumber
?:
string
processNumber
?:
string
...
...
@@ -72,6 +73,7 @@ export interface FactoryOrderNewListData {
receiverAddress1
?:
string
receiverAddress2
?:
string
receiverPostCode
?:
string
rfcNumber
?:
string
trackStatus
?:
number
prepaidAmount
?:
number
pause
?:
boolean
...
...
src/views/order/factoryOrderNew/component/UpdateReceiverAddressDialog.vue
0 → 100644
View file @
2b2c4549
<
script
setup
lang=
"ts"
>
import
{
updateReceiverAddressApi
}
from
'@/api/factoryOrderNew'
const
emits
=
defineEmits
([
'success'
])
defineProps
<
{
countryList
:
{
countryCode
:
string
;
nameCn
?:
string
}[]
}
>
()
const
visible
=
defineModel
<
boolean
>
(
'visible'
)
const
form
=
defineModel
<
Record
<
string
,
unknown
>>
(
'form'
,
{
default
:
()
=>
({
id
:
undefined
,
receiverName
:
''
,
rfcNumber
:
''
,
receiverPhone
:
''
,
receiverCountry
:
''
,
receiverProvince
:
''
,
receiverCity
:
''
,
receiverDistrict
:
''
,
receiverAddress1
:
''
,
receiverAddress2
:
''
,
receiverPostCode
:
''
,
}),
})
const
formRef
=
ref
()
const
rules
=
{
receiverName
:
[{
required
:
true
,
message
:
'请输入姓名'
,
trigger
:
'blur'
}],
receiverPhone
:
[{
required
:
true
,
message
:
'请输入电话'
,
trigger
:
'blur'
}],
receiverCountry
:
[{
required
:
true
,
message
:
'请输入国家'
,
trigger
:
'blur'
}],
receiverProvince
:
[
{
required
:
true
,
message
:
'请输入省/州'
,
trigger
:
'blur'
},
],
receiverCity
:
[{
required
:
true
,
message
:
'请输入市'
,
trigger
:
'blur'
}],
receiverAddress1
:
[
{
required
:
true
,
message
:
'请输入地址1'
,
trigger
:
'blur'
},
],
receiverPostCode
:
[
{
required
:
true
,
message
:
'请输入邮政编码'
,
trigger
:
'blur'
},
],
}
const
submitForm
=
async
()
=>
{
formRef
?.
value
.
validate
(
async
(
valid
:
boolean
)
=>
{
if
(
valid
)
{
await
updateReceiverAddressApi
(
form
.
value
)
visible
.
value
=
false
emits
(
'success'
)
await
ElMessageBox
.
alert
(
'请修改/刷新地址后取消物流或者更换物流在重新创建物流订单、获取跟踪号、获取打印面单'
,
'提示'
,
{
type
:
'warning'
,
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
showCancelButton
:
true
,
},
)
}
})
}
</
script
>
<
template
>
<el-dialog
v-model=
"visible"
:close-on-click-modal=
"false"
title=
"修改揽收信息"
width=
"50%"
>
<el-form
ref=
"formRef"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
>
<el-form-item
label=
"姓名"
prop=
"receiverName"
>
<el-input
v-model=
"form.receiverName"
clearable
placeholder=
"请输入姓名"
/>
</el-form-item>
<el-form-item
label=
"电话"
prop=
"receiverPhone"
>
<el-input
v-model=
"form.receiverPhone"
clearable
placeholder=
"请输入电话"
/>
</el-form-item>
<el-form-item
label=
"国家"
prop=
"receiverCountry"
>
<el-select
v-model=
"form.receiverCountry"
clearable
filterable
>
<el-option
v-for=
"it in countryList"
:key=
"it.countryCode"
:label=
"it.nameCn || it.countryCode"
:value=
"it.countryCode"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"省/州"
prop=
"receiverProvince"
>
<el-input
v-model=
"form.receiverProvince"
clearable
placeholder=
"请输入省/州"
/>
</el-form-item>
<el-form-item
label=
"市"
prop=
"receiverCity"
>
<el-input
v-model=
"form.receiverCity"
clearable
placeholder=
"请输入市"
/>
</el-form-item>
<el-form-item
label=
"区/县"
prop=
"receiverDistrict"
>
<el-input
v-model=
"form.receiverDistrict"
clearable
placeholder=
"请输入区/县"
/>
</el-form-item>
<el-form-item
label=
"地址1"
prop=
"receiverAddress1"
>
<el-input
v-model=
"form.receiverAddress1"
clearable
placeholder=
"请输入地址1"
/>
</el-form-item>
<el-form-item
label=
"地址2"
prop=
"receiverAddress2"
>
<el-input
v-model=
"form.receiverAddress2"
clearable
placeholder=
"请输入地址2"
/>
</el-form-item>
<el-form-item
label=
"邮政编码"
prop=
"receiverPostCode"
>
<el-input
v-model=
"form.receiverPostCode"
clearable
placeholder=
"请输入邮政编码"
/>
</el-form-item>
<el-form-item
label=
"RFC税号"
prop=
"rfcNumber"
>
<el-input
v-model=
"form.rfcNumber"
clearable
placeholder=
"请输入RFC税号"
/>
</el-form-item>
</el-form>
<template
#
footer
>
<div
class=
"dialog-footer-center"
>
<el-button
@
click=
"visible = false"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"submitForm"
>
提交
</el-button>
</div>
</
template
>
</el-dialog>
</template>
<
style
scoped
lang=
"scss"
>
.dialog-footer-center
{
width
:
100%
;
text-align
:
center
;
}
</
style
>
src/views/order/factoryOrderNew/index.vue
View file @
2b2c4549
...
...
@@ -440,6 +440,11 @@
>
更新报关信息
<
/ElButto
n
>
<
/span
>
<
span
v
-
if
=
"status === 'PENDING_CREATE_LOGISTICS'"
class
=
"item"
>
<
ElButton
type
=
"primary"
@
click
=
"handleTransferToArrange"
>
转至待排单
<
/ElButton
>
<
/span
>
<!--
<
span
v
-
if
=
"status === 'PENDING_RECEIVE'"
class
=
"item"
>
<
ElButton
type
=
"warning"
@
click
=
"handleTransferOldFlow"
>
转旧流程
<
/ElButto
n
...
...
@@ -691,19 +696,39 @@
@
row
-
click
=
"handleRowClick"
>
<
template
#
operation
=
"{ row
}
"
>
<
ElButton
v
-
if
=
"status === 'PENDING_RECEIVE'"
type
=
"primary"
link
size
=
"small"
@
click
.
stop
=
"handleSingleConfirmOrder(row)"
>
{{
pendingAcceptSubTab
===
'ACCEPT_FAIL_OUT_OF_STOCK'
?
'重新接单'
:
'接单'
}}
<
/ElButton
>
<
div
class
=
"main-table-operation"
>
<
ElButton
v
-
if
=
"status === 'PENDING_RECEIVE'"
type
=
"primary"
link
size
=
"small"
@
click
.
stop
=
"handleSingleConfirmOrder(row)"
>
{{
pendingAcceptSubTab
===
'ACCEPT_FAIL_OUT_OF_STOCK'
?
'重新接单'
:
'接单'
}}
<
/ElButton
>
<
ElButton
v
-
if
=
"showPendingLogisticsUpdateAddress(row)"
type
=
"primary"
link
size
=
"small"
@
click
.
stop
=
"openUpdateReceiverAddress(row)"
>
修改地址
<
/ElButton
>
<
ElButton
v
-
if
=
"showPendingLogisticsRefreshAddress(row)"
type
=
"primary"
link
size
=
"small"
@
click
.
stop
=
"handleRefreshReceiverAddress(row)"
>
刷新地址
<
/ElButton
>
<
/div
>
<
/template
>
<
/TableView
>
<
/div
>
...
...
@@ -771,7 +796,7 @@
<
CreateLogisticDialog
ref
=
"createLogisticDialogRef"
:
new
-
order
-
selection
=
"selectedRows"
@
refresh
-
table
=
"() => refreshCurrentView({ isRefreshTree: true
}
)
"
@
show
-
result
=
"handleFastProductionSuccess
"
/>
<
UpdateCustomDeclarationInfoDialog
v
-
model
=
"updateCustomsDialogVisible"
...
...
@@ -850,6 +875,13 @@
:
list
=
"resultInfo"
@
confirm
=
"() => refreshCurrentView({ isRefreshTree: true
}
)"
><
/ResultInfo
>
<
UpdateReceiverAddressDialog
v
-
if
=
"updateReceiverAddressVisible"
v
-
model
:
form
=
"receiverAddressForm"
v
-
model
:
visible
=
"updateReceiverAddressVisible"
:
country
-
list
=
"receiverCountryList"
@
success
=
"() => refreshCurrentView({ isRefreshTree: true
}
)"
/>
<
/div
>
<
/template
>
...
...
@@ -882,6 +914,7 @@ import {
getTrackingNumberApi
,
getfaceSimplexFileApi
,
cancelLogisticsOrderApi
,
updateLogisticsToArrangeApi
,
downloadMaterialApi
,
downloadOperationMaterialApi
,
composingNewPodOrderDesignImages
,
...
...
@@ -922,6 +955,7 @@ import FastProduction from '@/views/order/components/FastProduction.vue'
import
PodMakeOrder
from
'@/views/order/podUs/PodMakeOrder.vue'
import
PodDistributionOrder
from
'@/views/order/podCN/PodDistributionOrder.vue'
import
PrintWarehouseSkuTag
from
'@/views/order/components/printWarehouseSkuTag.vue'
import
UpdateReceiverAddressDialog
from
'./component/UpdateReceiverAddressDialog.vue'
import
{
ResultInfoDataItem
}
from
'@/types/api/order/common'
import
{
useOrderDictionaries
}
from
'./hooks/useOrderDictionaries'
import
{
useOrderSearchForm
}
from
'./hooks/useOrderSearchForm'
...
...
@@ -1046,6 +1080,60 @@ const refreshCurrentView = (options?: { isRefreshTree?: boolean }) => {
}
refreshCurrentViewProxy
.
value
=
()
=>
refreshCurrentView
()
const
updateReceiverAddressVisible
=
ref
(
false
)
const
receiverAddressForm
=
ref
<
Record
<
string
,
unknown
>>
({
}
)
const
showPendingLogisticsUpdateAddress
=
(
row
:
FactoryOrderNewListData
)
=>
status
.
value
===
'PENDING_CREATE_LOGISTICS'
&&
row
.
shipmentType
===
1
const
showPendingLogisticsRefreshAddress
=
(
row
:
FactoryOrderNewListData
)
=>
{
if
(
status
.
value
!==
'PENDING_CREATE_LOGISTICS'
)
return
false
if
(
row
.
replaceShipment
===
1
)
return
true
if
(
row
.
replaceShipment
===
0
&&
row
.
shipmentType
===
1
)
return
true
return
false
}
const
openUpdateReceiverAddress
=
(
row
:
FactoryOrderNewListData
)
=>
{
receiverAddressForm
.
value
=
{
rfcNumber
:
''
,
receiverName
:
''
,
receiverPhone
:
''
,
receiverCountry
:
''
,
receiverProvince
:
''
,
receiverCity
:
''
,
receiverDistrict
:
''
,
receiverAddress1
:
''
,
receiverAddress2
:
''
,
receiverPostCode
:
''
,
...
JSON
.
parse
(
JSON
.
stringify
(
row
)),
}
updateReceiverAddressVisible
.
value
=
true
}
const
handleRefreshReceiverAddress
=
async
(
row
:
FactoryOrderNewListData
)
=>
{
try
{
await
ElMessageBox
.
confirm
(
'确定刷新地址吗?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
,
}
)
}
catch
{
return
}
await
syncReceiverAddress
([
row
.
id
])
await
ElMessageBox
.
alert
(
'请修改/刷新地址后取消物流或者更换物流再重新创建物流订单、获取跟踪号、获取打印面单'
,
'提示'
,
{
type
:
'warning'
,
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
showCancelButton
:
true
,
}
,
)
refreshCurrentView
({
isRefreshTree
:
true
}
)
}
const
handleStatusNodeClick
=
(
node
:
{
status
:
string
}
)
=>
{
status
.
value
=
node
.
status
if
(
node
.
status
!==
'PENDING_RECEIVE'
)
{
...
...
@@ -1178,7 +1266,7 @@ const mainColumns = [
{
prop
:
'operation'
,
label
:
'操作'
,
minWidth
:
12
0
,
minWidth
:
20
0
,
align
:
'center'
,
slot
:
'operation'
,
fixed
:
'right'
,
...
...
@@ -1503,19 +1591,6 @@ const handleRefreshProductInfo = async () => {
loading
.
close
()
}
}
// const handleTransferOldFlow = async () =>
{
// try
{
// await executeBatchAction(
{
// getIds: getSelectedIds,
// api: transferOldFlowApi,
// confirmText: '确定转旧流程吗?',
// successText: '转旧流程成功',
// refreshTree: true,
//
}
)
//
}
catch
(
e
:
unknown
)
{
// ElMessage.error((e as Error)?.message || '转旧流程失败')
//
}
//
}
const
handleLogisticsCommand
=
async
(
command
:
string
)
=>
{
if
(
!
ensureSelection
())
return
const
ids
=
getSelectedIds
()
...
...
@@ -1582,6 +1657,48 @@ const handleUpdateCustomsInfo = () => {
if
(
!
ensureSelection
())
return
updateCustomsDialogVisible
.
value
=
true
}
const
handleTransferToArrange
=
async
()
=>
{
if
(
!
ensureSelection
(
'请选择订单'
))
return
try
{
await
ElMessageBox
.
confirm
(
'确定转至待排单吗?'
,
'提示'
,
{
type
:
'warning'
,
}
)
}
catch
{
return
}
const
loading
=
ElLoading
.
service
({
fullscreen
:
true
,
text
:
'操作中...'
,
background
:
'rgba(0, 0, 0, 0.3)'
,
}
)
try
{
const
ids
=
getSelectedIds
().
join
(
','
)
const
res
=
await
updateLogisticsToArrangeApi
({
ids
}
)
if
(
res
.
code
!==
200
)
return
if
(
Array
.
isArray
(
res
.
data
))
{
const
isSuccess
=
res
.
data
.
every
(
(
item
:
{
status
?:
boolean
}
)
=>
item
.
status
,
)
if
(
!
isSuccess
)
{
resultInfo
.
value
=
res
.
data
.
filter
(
(
item
:
{
status
?:
boolean
}
)
=>
!
item
.
status
,
)
resultRefs
.
value
?.
showDialog
()
return
}
refreshCurrentView
({
isRefreshTree
:
true
}
)
}
else
{
refreshCurrentView
({
isRefreshTree
:
true
}
)
}
ElMessage
.
success
(
'操作成功'
)
}
catch
(
e
:
unknown
)
{
resultInfo
.
value
=
[]
console
.
error
(
e
)
}
finally
{
loading
.
close
()
}
}
const
handleArrange
=
async
()
=>
{
if
(
!
ensureSelection
())
return
const
productIdList
=
getSelectedIds
()
...
...
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