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
f7899557
Commit
f7899557
authored
Mar 19, 2026
by
qinjianhui
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 代码优化
parent
d70f0b3f
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
396 additions
and
315 deletions
+396
-315
src/types/api/factoryOrderNew.ts
+22
-8
src/views/order/factoryOrderNew/component/BatchManageTable.vue
+199
-91
src/views/order/factoryOrderNew/component/WaitingRestockTable.vue
+38
-57
src/views/order/factoryOrderNew/index.vue
+3
-4
src/views/order/factoryOrderNew/newOrder.md
+134
-155
No files found.
src/types/api/factoryOrderNew.ts
View file @
f7899557
...
@@ -33,7 +33,7 @@ export interface SearchForm {
...
@@ -33,7 +33,7 @@ export interface SearchForm {
size
?:
string
size
?:
string
logisticsCompanyCode
?:
string
logisticsCompanyCode
?:
string
blocking
?:
boolean
blocking
?:
boolean
standardDesignImage
?:
boolean
standardDesignImage
?:
number
}
}
export
interface
FactoryOrderNewListData
{
export
interface
FactoryOrderNewListData
{
...
@@ -91,15 +91,29 @@ export interface LogListData {
...
@@ -91,15 +91,29 @@ export interface LogListData {
export
interface
BatchManageData
{
export
interface
BatchManageData
{
id
:
number
id
:
number
batchNo
?:
string
factoryId
?:
number
downloadStatus
?:
string
batchArrangeNum
?:
string
orderCount
?:
number
billType
?:
string
totalCount
?:
number
url
?:
string
creator
?:
string
tiffUrl
?:
string
syntheticStatus
?:
boolean
downloadStatus
?:
boolean
productNum
?:
number
materialNum
?:
number
craftType
?:
string
craftType
?:
string
timesRange
?:
string
employeeAccount
?:
string
employeeId
?:
number
createTime
?:
string
createTime
?:
string
extractTimes
?:
number
failReason
?:
string
failTime
?:
string
automaticComposing
?:
boolean
composingParam
?:
string
printProductOrder
?:
boolean
printPickOrder
?:
boolean
prnUrl
?:
string
prnDownloadStatus
?:
string
enableArrange
?:
boolean
standardDesignImage
?:
number
}
}
export
interface
RestockData
{
export
interface
RestockData
{
...
...
src/views/order/factoryOrderNew/component/BatchManageTable.vue
View file @
f7899557
...
@@ -35,12 +35,12 @@
...
@@ -35,12 +35,12 @@
clearable
clearable
style=
"width: 120px"
style=
"width: 120px"
>
>
<ElOption
label=
"烫画"
value=
"TH"
/>
<ElOption
<ElOption
label=
"直喷"
value=
"ZP"
/>
v-for=
"(item, index) in processType"
<ElOption
label=
"刺绣"
value=
"CX"
/>
:key=
"index"
<ElOption
label=
"雕刻"
value=
"DK"
/>
:value=
"item.value"
<ElOption
label=
"白胚"
value=
"BP"
/>
:label=
"item.label"
<ElOption
label=
"其他"
value=
"QT"
/
>
></ElOption
>
</ElSelect>
</ElSelect>
</ElFormItem>
</ElFormItem>
<ElFormItem
label=
"下载状态"
>
<ElFormItem
label=
"下载状态"
>
...
@@ -95,6 +95,7 @@
...
@@ -95,6 +95,7 @@
<div
class=
"batch-manage-table"
>
<div
class=
"batch-manage-table"
>
<TableView
<TableView
v-loading=
"loading"
:paginated-data=
"tableData"
:paginated-data=
"tableData"
:columns=
"columns"
:columns=
"columns"
selectionable
selectionable
...
@@ -109,12 +110,7 @@
...
@@ -109,12 +110,7 @@
</el-tag>
</el-tag>
</
template
>
</
template
>
<
template
#
operation=
"{ row }"
>
<
template
#
operation=
"{ row }"
>
<ElButton
<ElButton
type=
"primary"
link
size=
"small"
@
click=
"handleDownload()"
>
type=
"primary"
link
size=
"small"
@
click=
"handleDownload()"
>
下载
下载
</ElButton>
</ElButton>
<ElButton
type=
"primary"
link
size=
"small"
@
click=
"handlePrintPick()"
>
<ElButton
type=
"primary"
link
size=
"small"
@
click=
"handlePrintPick()"
>
...
@@ -128,7 +124,12 @@
...
@@ -128,7 +124,12 @@
>
>
生产单
生产单
</ElButton>
</ElButton>
<ElButton
type=
"warning"
link
size=
"small"
@
click=
"handleReArrange(row)"
>
<ElButton
type=
"warning"
link
size=
"small"
@
click=
"handleReArrange(row)"
>
重排
重排
</ElButton>
</ElButton>
<ElButton
type=
"danger"
link
size=
"small"
@
click=
"handleDelete()"
>
<ElButton
type=
"danger"
link
size=
"small"
@
click=
"handleDelete()"
>
...
@@ -138,7 +139,7 @@
...
@@ -138,7 +139,7 @@
</TableView>
</TableView>
</div>
</div>
<ArrangeDialog
ref=
"arrangeDialogRef"
@
success=
"
loadData
"
/>
<ArrangeDialog
ref=
"arrangeDialogRef"
@
success=
"
refresh
"
/>
<ElPagination
<ElPagination
v-model:current-page=
"currentPage"
v-model:current-page=
"currentPage"
...
@@ -148,87 +149,208 @@
...
@@ -148,87 +149,208 @@
layout=
"total, sizes, prev, pager, next, jumper"
layout=
"total, sizes, prev, pager, next, jumper"
:total=
"total"
:total=
"total"
style=
"margin: 10px auto 0"
style=
"margin: 10px auto 0"
@
size-change=
"
handle
PageSizeChange"
@
size-change=
"
on
PageSizeChange"
@
current-change=
"
handle
CurrentPageChange"
@
current-change=
"
on
CurrentPageChange"
/>
/>
</div>
</div>
</template>
</template>
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts
x
"
>
import
{
ref
,
reactive
,
onMounted
}
from
'vue'
import
{
ref
,
reactive
,
onMounted
}
from
'vue'
import
{
ElMessage
,
ElMessageBox
}
from
'element-plus'
import
{
ElMessage
,
ElMessageBox
}
from
'element-plus'
import
{
getBatchManageListApi
,
batchDeleteApi
}
from
'@/api/factoryOrderNew'
import
{
getBatchManageListApi
,
batchDeleteApi
}
from
'@/api/factoryOrderNew'
import
type
{
BatchManageData
}
from
'@/types/api/factoryOrderNew'
import
type
{
BatchManageData
}
from
'@/types/api/factoryOrderNew'
import
type
{
PaginationData
}
from
'@/types/api'
import
type
{
CustomColumn
}
from
'@/types/table'
import
type
{
CustomColumn
}
from
'@/types/table'
import
TableView
from
'@/components/TableView.vue'
import
TableView
from
'@/components/TableView.vue'
import
ArrangeDialog
from
'./ArrangeDialog.vue'
import
ArrangeDialog
from
'./ArrangeDialog.vue'
import
{
getEmployeeListApi
}
from
'@/api/common'
import
{
getEmployeeListApi
}
from
'@/api/common'
import
type
{
userData
}
from
'@/types/api/user'
import
type
{
userData
}
from
'@/types/api/user'
import
usePageList
from
'@/utils/hooks/usePageList'
const
loading
=
ref
(
false
)
const
tableData
=
ref
<
BatchManageData
[]
>
([])
const
selectedRows
=
ref
<
BatchManageData
[]
>
([])
const
selectedRows
=
ref
<
BatchManageData
[]
>
([])
const
currentPage
=
ref
(
1
)
const
pageSize
=
ref
(
50
)
const
total
=
ref
(
0
)
const
employeeList
=
ref
<
userData
[]
>
([])
const
employeeList
=
ref
<
userData
[]
>
([])
const
arrangeDialogRef
=
ref
<
InstanceType
<
typeof
ArrangeDialog
>>
()
const
arrangeDialogRef
=
ref
<
InstanceType
<
typeof
ArrangeDialog
>>
()
interface
ProcessTypeData
{
label
:
string
value
:
string
}
const
processType
=
ref
<
ProcessTypeData
[]
>
([
{
label
:
'烫画'
,
value
:
'TH'
,
},
{
label
:
'直喷'
,
value
:
'ZP'
,
},
{
label
:
'刺绣'
,
value
:
'CX'
,
},
{
label
:
'雕刻'
,
value
:
'DK'
,
},
{
label
:
'白胚'
,
value
:
'BP'
,
},
{
label
:
'其他'
,
value
:
'QT'
,
},
])
const
getStandardDesignImageText
=
(
value
:
number
):
string
=>
{
const
map
:
Record
<
number
,
string
>
=
{
0
:
'否'
,
1
:
'是'
,
2
:
'混合'
}
return
map
[
value
]
??
'-'
}
const
columns
:
CustomColumn
<
BatchManageData
>
[]
=
[
const
columns
:
CustomColumn
<
BatchManageData
>
[]
=
[
{
key
:
'batchNo'
,
prop
:
'batchNo'
,
label
:
'批次号'
,
minWidth
:
120
},
[
{
{
key
:
'downloadStatus'
,
label
:
'批次号'
,
prop
:
'downloadStatus'
,
prop
:
'batchArrangeNum'
,
label
:
'下载状态'
,
width
:
120
,
minWidth
:
90
,
align
:
'center'
,
align
:
'center'
,
},
{
label
:
'下载状态'
,
slot
:
'downloadStatus'
,
slot
:
'downloadStatus'
,
width
:
90
,
align
:
'center'
,
render
:
(
item
:
BatchManageData
)
=>
{
return
(
<
div
>
<
el
-
tag
type
=
{
item
.
downloadStatus
?
'success'
:
'danger'
}
>
{
item
.
downloadStatus
?
'已下载'
:
'未下载'
}
<
/el-tag
>
<
/div
>
)
},
},
},
{
{
key
:
'orderCount'
,
prop
:
'orderCount'
,
label
:
'订单数量'
,
label
:
'订单数量'
,
minWidth
:
90
,
prop
:
'productNum'
,
width
:
85
,
align
:
'center'
,
align
:
'center'
,
},
},
{
{
key
:
'totalCount'
,
label
:
'素材数量'
,
prop
:
'totalCount'
,
width
:
85
,
label
:
'全部数量'
,
prop
:
'materialNum'
,
minWidth
:
90
,
align
:
'center'
,
align
:
'center'
,
},
},
{
key
:
'creator'
,
prop
:
'creator'
,
label
:
'创建人'
,
minWidth
:
80
},
{
key
:
'craftType'
,
prop
:
'craftType'
,
label
:
'工艺类型'
,
minWidth
:
90
},
{
key
:
'timesRange'
,
prop
:
'timesRange'
,
label
:
'次数范围'
,
minWidth
:
90
},
{
{
key
:
'createTime'
,
label
:
'创建人'
,
prop
:
'createTime'
,
width
:
85
,
label
:
'创建时间'
,
prop
:
'employeeAccount'
,
minWidth
:
160
,
align
:
'center'
,
sortable
:
true
,
},
},
{
{
key
:
'createTimeSort'
,
label
:
'工艺类型'
,
width
:
150
,
prop
:
'craftType'
,
align
:
'center'
,
render
:
(
item
:
BatchManageData
)
=>
{
if
(
!
item
.
craftType
)
{
return
(
<
div
>
<
span
>-<
/span
>
<
/div
>
)
}
const
labels
=
item
.
craftType
.
split
(
','
)
.
map
((
type
)
=>
type
.
trim
())
.
map
(
(
type
)
=>
processType
.
value
.
find
((
e
:
ProcessTypeData
)
=>
e
.
value
===
type
)
?.
label
||
type
,
)
.
filter
(
Boolean
)
return
(
<
div
>
<
span
>
{
labels
.
join
(
','
)}
<
/span
>
<
/div
>
)
},
},
{
label
:
'规范素材'
,
minWidth
:
180
,
prop
:
'standardDesignImage'
,
align
:
'center'
,
render
:
(
item
:
BatchManageData
)
=>
{
return
(
<
div
>
<
span
>
{
getStandardDesignImageText
(
item
.
standardDesignImage
??
0
)}
<
/span
>
<
/div
>
)
},
},
{
label
:
'失败原因'
,
minWidth
:
250
,
prop
:
'failReason'
,
align
:
'left'
,
render
:
(
item
:
BatchManageData
)
=>
{
return
(
<
div
>
<
span
v
-
html
=
{
item
.
failReason
}
><
/span
>
<
/div
>
)
},
},
{
label
:
'创建时间'
,
width
:
180
,
prop
:
'createTime'
,
prop
:
'createTime'
,
label
:
'创建时间排序'
,
align
:
'center'
,
minWidth
:
110
,
},
sortable
:
true
,
{
label
:
'完成时间'
,
width
:
180
,
prop
:
'finishTime'
,
align
:
'center'
,
},
{
label
:
'自动排版'
,
width
:
85
,
prop
:
'automaticComposing'
,
align
:
'center'
,
render
:
(
item
:
BatchManageData
)
=>
{
return
(
<
div
>
<
span
>
{
item
.
automaticComposing
?
'是'
:
'否'
}
<
/span
>
<
/div
>
)
},
},
},
{
{
key
:
'extractTimes'
,
label
:
'排版参数'
,
prop
:
'extractTimes'
,
width
:
140
,
label
:
'提取次数排序'
,
prop
:
'composingParam'
,
minWidth
:
110
,
align
:
'center'
,
sortable
:
true
,
render
:
(
item
:
BatchManageData
)
=>
{
return
(
<
div
>
<
span
>
{
item
.
composingParam
?.
split
(
';'
).
join
(
'
\
n'
)}
<
/span
>
<
/div
>
)
},
},
},
{
{
key
:
'operation'
,
label
:
'操作'
,
label
:
'操作'
,
minWidth
:
120
,
slot
:
'operate'
,
width
:
260
,
align
:
'center'
,
fixed
:
'right'
,
fixed
:
'right'
,
slot
:
'operation
'
,
prop
:
'operate
'
,
},
},
],
]
]
const
filterForm
=
reactive
({
const
filterForm
=
reactive
({
...
@@ -244,23 +366,27 @@ const filterForm = reactive({
...
@@ -244,23 +366,27 @@ const filterForm = reactive({
batchNo
:
''
,
batchNo
:
''
,
})
})
const
loadData
=
async
()
=>
{
const
{
loading
.
value
=
true
loading
,
try
{
currentPage
,
const
res
=
await
getBatchManageListApi
(
pageSize
,
{
...
filterForm
},
total
,
currentPage
.
value
,
data
:
tableData
,
pageSize
.
value
,
onCurrentPageChange
,
)
onPageSizeChange
,
const
page
=
res
.
data
refresh
,
tableData
.
value
=
page
?.
records
||
[]
}
=
usePageList
<
BatchManageData
>
({
total
.
value
=
page
?.
total
||
0
initPageSize
:
50
,
}
catch
(
_e
)
{
query
:
async
(
current
,
size
)
=>
{
tableData
.
value
=
[]
const
res
=
await
getBatchManageListApi
({
...
filterForm
},
current
,
size
)
}
finally
{
return
(
res
.
data
||
{
loading
.
value
=
false
total
:
0
,
}
size
,
}
current
,
records
:
[],
})
as
PaginationData
<
BatchManageData
>
},
})
const
loadEmployeeList
=
async
()
=>
{
const
loadEmployeeList
=
async
()
=>
{
try
{
try
{
...
@@ -287,14 +413,13 @@ const handleBatchDelete = async () => {
...
@@ -287,14 +413,13 @@ const handleBatchDelete = async () => {
try
{
try
{
await
batchDeleteApi
(
selectedRows
.
value
.
map
((
r
)
=>
r
.
id
))
await
batchDeleteApi
(
selectedRows
.
value
.
map
((
r
)
=>
r
.
id
))
ElMessage
.
success
(
'删除成功'
)
ElMessage
.
success
(
'删除成功'
)
loadData
()
refresh
()
}
catch
(
e
)
{
}
catch
(
e
)
{
const
err
=
e
as
Error
&
{
message
?:
string
}
const
err
=
e
as
Error
&
{
message
?:
string
}
ElMessage
.
error
(
err
?.
message
||
'删除失败'
)
ElMessage
.
error
(
err
?.
message
||
'删除失败'
)
}
}
}
}
const
handleDownload
=
()
=>
{
const
handleDownload
=
()
=>
{
ElMessage
.
info
(
'接口待提供'
)
ElMessage
.
info
(
'接口待提供'
)
}
}
...
@@ -319,25 +444,8 @@ const handleReArrange = (row: BatchManageData) => {
...
@@ -319,25 +444,8 @@ const handleReArrange = (row: BatchManageData) => {
})
})
}
}
const
handlePageSizeChange
=
(
size
:
number
)
=>
{
pageSize
.
value
=
size
currentPage
.
value
=
1
loadData
()
}
const
handleCurrentPageChange
=
(
page
:
number
)
=>
{
currentPage
.
value
=
page
loadData
()
}
const
refresh
=
()
=>
{
currentPage
.
value
=
1
loadData
()
}
onMounted
(()
=>
{
onMounted
(()
=>
{
loadEmployeeList
()
loadEmployeeList
()
loadData
()
})
})
defineExpose
({
refresh
})
defineExpose
({
refresh
})
...
...
src/views/order/factoryOrderNew/component/WaitingRestockTable.vue
View file @
f7899557
...
@@ -28,7 +28,7 @@
...
@@ -28,7 +28,7 @@
<div
class=
"restock-table"
>
<div
class=
"restock-table"
>
<TableView
<TableView
v-loading=
"loading"
v-loading=
"loading"
:paginated-data=
"
pageD
ata"
:paginated-data=
"
d
ata"
:columns=
"columns"
:columns=
"columns"
serial-numberable
serial-numberable
>
>
...
@@ -66,29 +66,52 @@
...
@@ -66,29 +66,52 @@
layout=
"total, sizes, prev, pager, next, jumper"
layout=
"total, sizes, prev, pager, next, jumper"
:total=
"total"
:total=
"total"
style=
"margin: 10px auto 0;"
style=
"margin: 10px auto 0;"
@
size-change=
"
handle
PageSizeChange"
@
size-change=
"
on
PageSizeChange"
@
current-change=
"
handle
CurrentPageChange"
@
current-change=
"
on
CurrentPageChange"
/>
/>
</div>
</div>
</template>
</template>
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
{
computed
,
ref
,
reactive
,
onMounted
}
from
'vue'
import
{
reactive
}
from
'vue'
import
{
ElMessage
}
from
'element-plus'
import
{
ElMessage
}
from
'element-plus'
import
{
getRestockListApi
,
restockCheckApi
}
from
'@/api/factoryOrderNew'
import
{
getRestockListApi
,
restockCheckApi
}
from
'@/api/factoryOrderNew'
import
type
{
RestockData
}
from
'@/types/api/factoryOrderNew'
import
type
{
RestockData
}
from
'@/types/api/factoryOrderNew'
import
type
{
PaginationData
}
from
'@/types/api'
import
type
{
CustomColumn
}
from
'@/types/table'
import
type
{
CustomColumn
}
from
'@/types/table'
import
TableView
from
'@/components/TableView.vue'
import
TableView
from
'@/components/TableView.vue'
import
usePageList
from
'@/utils/hooks/usePageList'
const
loading
=
ref
(
false
)
const
filterForm
=
reactive
({
const
allData
=
ref
<
RestockData
[]
>
([])
stockSku
:
''
,
const
currentPage
=
ref
(
1
)
styleNo
:
''
,
const
pageSize
=
ref
(
50
)
})
const
total
=
ref
(
0
)
const
pageData
=
computed
(()
=>
{
const
{
const
start
=
(
currentPage
.
value
-
1
)
*
pageSize
.
value
loading
,
return
allData
.
value
.
slice
(
start
,
start
+
pageSize
.
value
)
currentPage
,
pageSize
,
total
,
data
,
onCurrentPageChange
,
onPageSizeChange
,
refresh
,
}
=
usePageList
<
RestockData
>
({
initPageSize
:
50
,
query
:
async
(
current
,
size
)
=>
{
const
res
=
await
getRestockListApi
({
stockSku
:
filterForm
.
stockSku
||
undefined
,
styleNo
:
filterForm
.
styleNo
||
undefined
,
})
const
records
=
res
.
data
||
[]
const
start
=
(
current
-
1
)
*
size
return
{
total
:
records
.
length
,
size
,
current
,
records
:
records
.
slice
(
start
,
start
+
size
),
}
as
PaginationData
<
RestockData
>
},
})
})
const
columns
:
CustomColumn
<
RestockData
>
[]
=
[
const
columns
:
CustomColumn
<
RestockData
>
[]
=
[
...
@@ -154,69 +177,27 @@ const columns: CustomColumn<RestockData>[] = [
...
@@ -154,69 +177,27 @@ const columns: CustomColumn<RestockData>[] = [
},
},
]
]
const
filterForm
=
reactive
({
stockSku
:
''
,
styleNo
:
''
,
})
const
loadData
=
async
()
=>
{
loading
.
value
=
true
try
{
const
res
=
await
getRestockListApi
({
stockSku
:
filterForm
.
stockSku
||
undefined
,
styleNo
:
filterForm
.
styleNo
||
undefined
,
})
allData
.
value
=
res
.
data
||
[]
total
.
value
=
allData
.
value
.
length
}
catch
(
_e
)
{
allData
.
value
=
[]
total
.
value
=
0
}
finally
{
loading
.
value
=
false
}
}
const
handleSearch
=
()
=>
{
const
handleSearch
=
()
=>
{
currentPage
.
value
=
1
refresh
()
loadData
()
}
}
const
handleReset
=
()
=>
{
const
handleReset
=
()
=>
{
filterForm
.
stockSku
=
''
filterForm
.
stockSku
=
''
filterForm
.
styleNo
=
''
filterForm
.
styleNo
=
''
currentPage
.
value
=
1
refresh
()
loadData
()
}
const
handlePageSizeChange
=
(
size
:
number
)
=>
{
pageSize
.
value
=
size
currentPage
.
value
=
1
}
const
handleCurrentPageChange
=
(
page
:
number
)
=>
{
currentPage
.
value
=
page
}
}
const
handleRestockCheck
=
async
(
row
:
RestockData
)
=>
{
const
handleRestockCheck
=
async
(
row
:
RestockData
)
=>
{
try
{
try
{
await
restockCheckApi
(
row
.
id
)
await
restockCheckApi
(
row
.
id
)
ElMessage
.
success
(
'补货校验成功'
)
ElMessage
.
success
(
'补货校验成功'
)
loadData
()
refresh
()
}
catch
(
e
)
{
}
catch
(
e
)
{
const
err
=
e
as
Error
&
{
message
?:
string
}
const
err
=
e
as
Error
&
{
message
?:
string
}
ElMessage
.
error
(
err
?.
message
||
'补货校验失败'
)
ElMessage
.
error
(
err
?.
message
||
'补货校验失败'
)
}
}
}
}
const
refresh
=
()
=>
{
currentPage
.
value
=
1
loadData
()
}
onMounted
(()
=>
{
loadData
()
})
defineExpose
({
refresh
})
defineExpose
({
refresh
})
</
script
>
</
script
>
...
...
src/views/order/factoryOrderNew/index.vue
View file @
f7899557
...
@@ -1310,10 +1310,9 @@ const handleStatusNodeClick = (node: StatusTreeNode) => {
...
@@ -1310,10 +1310,9 @@ const handleStatusNodeClick = (node: StatusTreeNode) => {
currentRow
.
value
=
null
currentRow
.
value
=
null
productList
.
value
=
[]
productList
.
value
=
[]
logList
.
value
=
[]
logList
.
value
=
[]
// if (!isSpecialLayout.value)
{
if
(
!
isSpecialLayout
.
value
)
{
// onCurrentPageChange(1)
refresh
()
// refresh()
}
//
}
}
}
const
toggleExpand
=
(
node
:
{
expanded
?:
boolean
}
)
=>
{
const
toggleExpand
=
(
node
:
{
expanded
?:
boolean
}
)
=>
{
node
.
expanded
=
!
node
.
expanded
node
.
expanded
=
!
node
.
expanded
...
...
src/views/order/factoryOrderNew/newOrder.md
View file @
f7899557
# 左侧状态树每个状态的页面说明:
# 每个状态调用接口及字段说明:
## 待接单状态
### 页面布局
-- 分为上下两个表格,如图片1所示
### 主表格上面操作按钮栏,分别有如下按钮:
#### 确认接单
-
当主表格选中的数据大于 0 时,可以点击该按钮,否则提示请先选择订单
## 待接单、待创建物流、配货中、待发货、已完成、已取消、已归档
-
点击确认接单按钮后,弹出 “确认接单弹框”
-
确认接单弹框打开后,需要让用户选择发货仓库,使用下拉选择,数据源是仓库列表,仓库列表接口可调用
`src/api/common.ts`
中的
`loadWarehouseListApi`
接口
-
点击确认后,调用后端的接口(后端接口暂未提供,可预留占位)
-
加全局 loading 以防重复调用接口
-
调用成功后,弹出"接单成功",并刷新主表格数据
-
调用失败后,弹出"接单失败"弹框(使用
`ElMessageBox.prompt`
显示),并显示失败原因(这里是后端返回的错误信息)
#### 取消订单
-
当主表格选中的数据大于 0 时,可以点击该按钮,否则提示请先选择订单
-
主表格分页查询接口:
`factory/podOrder/list_page`
post 请求
-
点击取消订单按钮后,弹出 “取消订单弹框”
-
请求参数:
-
取消订单弹框打开后,需要让用户选择取消原因,使用下拉选择,数据源是分别是
`协商取消`
、
`客户取消`
、
`其他`
-
平台:
`platform`
,筛选时传平台 type
-
点击确认后,调用后端的接口(后端接口暂未提供,可预留占位)
-
状态:
`status`
-
加全局 loading 以防重复调用接口
-
工艺:
`craftCode`
-
调用成功后,弹出"取消订单成功",并刷新主表格数据
-
库存 SKU:
`thirdSkuCode`
-
调用失败后,弹出"取消订单失败"弹框(使用
`ElMessageBox.prompt`
显示),并显示失败原因(这里是后端返回的错误信息)
-
款号:
`supplierProductNo`
#### 刷新商品信息
-
批次号:
`batchArrangeNumber`
-
操作单号:
`orderNumber`
-
商品类型:
`productMark`
-
数量:
`multi`
-
时间类型:
`timeType`
-
开始时间:
`startTime`
-
结束时间:
`endTime`
-
订单号:
`factoryOrderNumber`
-
客户:
`userMark`
-
Variant SKU:
`sku`
-
物流跟踪号:
`trackingNumber`
-
收件国家:
`receiverCountry`
-
是否代发:
`replaceShipment`
筛选时传 0 和 1,0:不代发,1:代发
-
ERP 标签:
`tagsIdArr`
筛选时传数组,数组中传 ERP 标签 id
-
订单来源:
`source`
筛选时传订单来源 id
-
尺码筛选:
`size`
筛选时传尺码
-
自有物流公司:
`logisticsCompanyCode`
筛选时传自有物流公司 id
-
拦截订单:
`interceptStatus`
筛选传拦截订单 id
-
规范素材:
`standardDesignImage`
筛选传 0 和 1,0:不规范,1:规范
-
页码:
`currentPage`
-
每页条数:
`pageSize`
-
点击主表格每行后会加载子表格下数据
-
子表格包含商品Tab接口
`factory/podOrder/get`
get 请求,
-
参数:
`id`
主表格每行 id
-
子表格包含操作日志Tab接口
`factory/podOrder/getLog`
get 请求,
-
参数:
`id`
主表格每行 id
-
字段说明:
-- 平台:
`platform`
-- 状态:
`status`
-- 工艺:
`craftCode`
-- 库存 SKU:
`thirdSkuCode`
-- 款号:
`supplierProductNo`
-- 批次号:
`batchArrangeNumber`
-- 操作单号:
`orderNumber`
-- 商品类型:
`productMark`
-- 数量:
`multi`
-- 时间类型:
`timeType`
-- 开始时间:
`startTime`
-- 结束时间:
`endTime`
-- 订单号:
`factoryOrderNumber`
-- 客户:
`userMark`
-- Variant SKU:
`sku`
-- 物流跟踪号:
`trackingNumber`
-- 收件国家:
`receiverCountry`
-- 是否代发:
`replaceShipment`
-- ERP 标签:
`tagsIdArr`
-- 订单来源:
`source`
-- 尺码筛选:
`size`
-- 自有物流公司:
`logisticsCompanyCode`
-- 拦截订单:
`interceptStatus`
-- 规范素材:
`standardDesignImage`
-- 店铺单号:
`shopNumber`
-- 订单状态:
`statusName`
-- 物流方式:
`logisticsWayName`
-- 总克重:
`weight`
-- 商品总数量:
`productNum`
-- 收货人:
`receiverName`
-- 收货人电话:
`receiverPhone`
-- 收货人邮编:
`receiverCode`
-- 收货地址:
`receiverAddress`
-- 创建时间:
`createTime`
-- 接单时间:
`acceptTime`
-- 完成时间:
`finishTime`
-- 客户标签:
`customerTags`
-
当主表格选中的数据大于 0 时,可以点击该按钮,否则提示请先选择订单
## 待排单、待补胚、生产中、待配货
-
点击刷新商品信息按钮后,调用后端的接口(后端接口暂未提供,可预留占位)
-
成功后,弹出"刷新商品信息成功",并刷新主表格数据
-
失败则展示错误信息
## 待创建物流状态
### 页面布局
-- 分为上下两个表格,如图片1所示
### 主表格上面操作按钮栏,分别有如下按钮:
#### 物流接口
-- 此功能为原有逻辑,可把
`src/views/order/podCN/index.vue`
中的
`物流接口`
功能拷贝过来
#### 挂起
-- 当主表格选中的数据大于 0 时,可以点击该按钮,否则提示请先选择订单
-- 点击挂起按钮后,弹出 “挂起订单”弹框
-
挂起订单弹框打开后,需要让用户选择挂起原因和是否需要客户处理,使用下拉选择,这两个字段都是必填的,其中挂起原因数据源是分别是
`客户拦截`
、
`地址异常`
、
`素材异常`
、
`其他`
,是否需要客户处理数据源是分别是
`需要客户处理`
、
`无需客户处理`
-
点击确认后,调用后端的接口(后端接口暂未提供,可预留占位)
-
加全局 loading 以防重复调用接口
-
调用成功后,弹出"挂起订单成功",并刷新主表格数据
-
调用失败后,弹出"挂起订单失败"弹框(使用
`ElMessageBox.prompt`
显示),并显示失败原因(这里是后端返回的错误信息)
#### 更新报关信息
-- 此功能为原有逻辑,可把
`src/views/order/podCN/index.vue`
中的
`更新报关信息`
功能拷贝过来
## 待派单状态
### 页面布局
-- 卡片布局,页面样式如图片2所示
-- 注意:这里可用
`src/components/CommonCard.vue`
组件,使用时注意传递对应的 props 和插槽
-- 可参考
`src/views/order/podCN/index.vue`
中的卡片实现方法,但是内容需要根据图片2所示进行调整
### 该状态中的操作栏,分别有如下按钮:
#### 排单
-- 此为原有逻辑,可把
`src/views/order/podCN/index.vue`
中的
`排单`
功能拷贝过来
#### 下载素材
-- 此为原有逻辑,可把
`src/views/order/podCN/index.vue`
中的
`下载素材`
功能拷贝过来
## 批量管理状态
### 页面布局
-- 表格布局,页面样式如图片3所示
-- 注意:这里可封装组件,使代码更易维护
## 等待捕获
### 页面布局
-- 表格布局,页面样式如图片4所示
-- 注意:这里可封装组件,使代码更易维护
## 配货中状态
### 页面布局
-- 表格布局,页面样式如图片1所示
### 该状态中的操作栏,分别有如下按钮:
#### 挂起
-- 当主表格选中的数据大于 0 时,可以点击该按钮,否则提示请先选择订单
-- 点击挂起按钮后,弹出 “挂起订单”弹框
-
挂起订单弹框打开后,需要让用户选择挂起原因和是否需要客户处理,使用下拉选择,这两个字段都是必填的,其中挂起原因数据源是分别是
`客户拦截`
、
`地址异常`
、
`素材异常`
、
`其他`
,是否需要客户处理数据源是分别是
`需要客户处理`
、
`无需客户处理`
-
点击确认后,调用后端的接口(后端接口暂未提供,可预留占位)
-
加全局 loading 以防重复调用接口
-
调用成功后,弹出"挂起订单成功",并刷新主表格数据
-
调用失败后,弹出"挂起订单失败"弹框(使用
`ElMessageBox.prompt`
显示),并显示失败原因(这里是后端返回的错误信息)
### 配货中子状态
#### 待拣胚
##### 页面布局
-- 卡片布局,页面样式如图片2所示
-- 注意:这里可用
`src/components/CommonCard.vue`
组件,使用时注意传递对应的 props 和插槽
-- 可参考
`src/views/order/podCN/index.vue`
中的卡片实现方法,但是内容需要根据图片2所示进行调整
##### 该状态中的操作栏,分别有如下按钮:
###### DTF排版
-- 此为原有逻辑,可把
`src/views/order/podCN/index.vue`
中的
`DTF排版`
功能拷贝过来
###### 打印生产单
-- 此为原有逻辑,可把
`src/views/order/podCN/index.vue`
中的
`打印生产单`
功能拷贝过来
###### 打印拣胚单
-- 当选择卡片数量大于0时,可以点击该按钮,否则提示请先选择订单
-- 点击打印拣胚单后,调用后端接口(后端接口暂未提供,可预留占位)
-- 给按钮加loading效果,防止重复点击
-- 调用成功后,弹出"打印拣胚单成功",并刷新主表格数据
-- 调用失败后,弹出"打印拣胚单失败"弹框(使用
`ElMessageBox.prompt`
显示),并显示失败原因(这里是后端返回的错误信息)
###### 拣胚完成
-- 当选择卡片数量大于0时,可以点击该按钮,否则提示请先选择订单
-- 当点击拣胚完成后,弹出“拣配完成”弹框,弹框页面如图片5所示(图片中紫色字体是描述和情况1文案,情况2文案,情况3文案都无需写上)
-- 此功能较难,可先实现页面
###### 拣胚失败
-- 当选择卡片数量大于0时,可以点击该按钮,否则提示请先选择订单
-- 当点击拣胚失败后,弹出“拣胚失败”弹框,弹框页面如图片6所示(图片中紫色字体是描述无需写上)
-- 此功能较难,可先实现页面
#### 待补胚
##### 页面布局
-- 卡片布局,页面样式如图片2所示
-- 注意:这里可用
`src/components/CommonCard.vue`
组件,使用时注意传递对应的 props 和插槽
-- 可参考
`src/views/order/podCN/index.vue`
中的卡片实现方法,但是内容需要根据图片2所示进行调整
##### 该状态中的操作栏和待拣胚一致:DTF排版、打印生产单、打印拣胚单、拣胚完成、拣胚失败
#### 生产中
-- -- 卡片布局,页面样式如图片2所示
-- 注意:这里可用
`src/components/CommonCard.vue`
组件,使用时注意传递对应的 props 和插槽
-- 可参考
`src/views/order/podCN/index.vue`
中的卡片实现方法,但是内容需要根据图片2所示进行调整
##### 该状态中的操作栏,分别有如下按钮:
###### 申请补胚
-- 当选择卡片数量大于0时,可以点击该按钮,否则提示请先选择订单
-- 点击申请补胚后,前端提示“确定申请补胚吗?”
-- 点击确认后,调用后端接口(后端接口暂未提供,可预留占位)
-- 点击取消后,关闭
`messageBox`
,不进行任何操作
-- 加全局 loading 以防重复调用接口
-- 调用成功后,弹出"申请补胚成功",并刷新主表格数据
-- 调用失败后,弹出"申请补胚失败"弹框(使用
`ElMessageBox.prompt`
显示),并显示失败原因(这里是后端返回的错误信息)
###### 生产完成
-- 此为原有逻辑,可把
`src/views/order/podCN/index.vue`
中的
`生产完成`
功能拷贝过来
###### 播种墙配货
-- 此为原有逻辑,可把
`src/views/order/podUs/index.vue`
中的
`播种墙配货`
功能拷贝过来
## 待发货
-
接口:
`factory/podOrderBatchDownload/list_page`
post 请求
### 页面布局
-
请求参数:
-- 表格布局,页面样式如图片1所示
-
页码:
`currentPage`
### 该状态中的操作栏,分别有如下按钮:
-
每页条数:
`pageSize`
#### 称重分拣
-- 此为原有逻辑,可把
`src/views/order/podCN/index.vue`
中的
`称重分拣`
功能拷贝过来
## 批次管理
#### 下载素材
-- 此为原有逻辑,可把
`src/views/order/podCN/index.vue`
中的
`下载素材`
功能拷贝过来
-
接口:
`factory/podOrderBatchDownload/list_page`
post 请求
## 已完成状态
-
请求参数:
### 页面布局
-
页码:
`currentPage`
-- 表格布局,页面样式如图片1所示
-
每页条数:
`pageSize`
### 该状态中的操作栏,分别有如下按钮:
-
开始时间:
`startTime`
#### 下载素材
-
结束时间:
`endTime`
#### 订单归档
-
创建人:
`employeeId`
筛选时创建人 id
-- 当主表格选中的数据大于 0 时,可以点击该按钮,否则提示请先选择订单
-
列表创建人:
`employeeAccount`
-- 点击订单归档按钮后,调用后端接口(后端接口暂未提供,可预留占位)
-
工艺类型:
`craftType`
传工艺类型 value
-- 加全局 loading 以防重复调用接口
-
下载状态:
`downloadStatus`
传 0 和 1,0:未下载,1:已下载
-- 调用成功后,弹出"订单归档成功",并刷新主表格数据
-
排版状态:
`syntheticStatus`
传 0 和 1,0:否,1:是
-- 调用失败后,弹出"订单归档失败"弹框(使用
`ElMessageBox.prompt`
显示),并显示失败原因(这里是后端返回的错误信息)
-
自动排版:
`automaticComposing`
传 0 和 1,0:否,1:是
## 挂起状态
-
批次号:
`batchArrangeNumber`
### 页面布局
-
字段:
-- 表格布局,页面样式如图片1所示
-
开始时间:
`startTime`
-- 根据挂起原因,分多Tab展示
-
结束时间:
`endTime`
-
放再操作栏的上面,数据源分别是
`客户拦截`
、
`地址异常`
、
`其他`
-
创建人:
`employeeId`
-
点击Tab后,表格数据会根据Tab切换,并刷新表格数据
-
列表创建人:
`employeeAccount`
-
具体样式可以参考现在已有“待派单状态”Tab的样式
-
工艺类型:
`craftType`
### 该状态中的操作栏,分别有如下按钮:
-
下载状态:
`downloadStatus`
#### 取消挂起
-
排版状态:
`syntheticStatus`
-- 当主表格选中的数据大于 0 时,可以点击该按钮,否则提示请先选择订单
-
自动排版:
`automaticComposing`
-- 点击取消挂起按钮后,调用后端接口(后端接口暂未提供,可预留占位)
-
批次号:
`batchArrangeNumber`
-- 加全局 loading 以防重复调用接口
-
订单数量:
`productNum`
-- 调用成功后,弹出"取消挂起成功",并刷新主表格数据
-
素材数量:
`materialNum`
#### 同步收货地址
-
规范素材:
`standardDesignImage`
-- 此为原有逻辑,可把
`src/views/order/podCN/index.vue`
中的
`同步收货地址`
功能拷贝过来
-
失败原因:
`failReason`
\ No newline at end of file
-
创建时间:
`createTime`
-
完成时间:
`finishTime`
-
自动排版:
`automaticComposing`
-
排版参数:
`composingParam`
## 等待补货
-
接口:
`factory/podOrderBatchDownload/list_page`
-
请求参数:
-
页码:
`currentPage`
-
每页条数:
`pageSize`
-
字段: 暂时还不清楚,只需空出位置,以便后续开发
## 挂起
-
主表格分页查询接口:
`factory/podOrderPauseControl/list_page`
post 请求
-
点击主表格每行后会加载子表格下数据
-
子表格包含商品Tab接口
`factory/podOrderPauseControl/get`
get 请求,
-
参数:
`id`
主表格每行 id
-
子表格包含操作日志Tab接口
`factory/podOrderPauseControl/getLog`
get 请求,
-
参数:
`id`
主表格每行 id
-
请求参数:
-
页码:
`currentPage`
-
每页条数:
`pageSize`
-
字段: 暂时还不清楚,只需空出位置,以便后续开发
-
注意:挂起状态和待接单、待接单、待创建物流、配货中、待发货、已完成、已取消、已归档页面一致,只是接口不一样,返回的返回的数据结构暂时还不清楚是否一样,所以先按照不一样处理,到挂起状态时,调用不一样的接口
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