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
129eef49
Commit
129eef49
authored
Dec 02, 2025
by
sunyang
Committed by
wusiyi
Dec 18, 2025
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
排单
parent
23bb2ce0
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
393 additions
and
74 deletions
+393
-74
src/api/podCnOrder.ts
+2
-1
src/api/podUsOrder.ts
+2
-1
src/types/api/podCnOrder.ts
+5
-0
src/types/api/podUsOrder.ts
+5
-0
src/views/order/podCN/index.vue
+145
-17
src/views/order/podUs/index.vue
+147
-17
src/views/order/podUsSchedulingRules/index.vue
+87
-38
No files found.
src/api/podCnOrder.ts
View file @
129eef49
...
@@ -565,10 +565,11 @@ export function getListCraftApi() {
...
@@ -565,10 +565,11 @@ export function getListCraftApi() {
}
}
// 批量下载 列表
// 批量下载 列表
export
function
batchDownloadApi
(
currentPage
:
number
,
pageSize
:
number
)
{
export
function
batchDownloadApi
(
params
:
SearchForm
,
currentPage
:
number
,
pageSize
:
number
)
{
return
axios
.
post
<
never
,
BaseRespData
<
never
>>
(
return
axios
.
post
<
never
,
BaseRespData
<
never
>>
(
`factory/podBatchDownload/cn/list_page`
,
`factory/podBatchDownload/cn/list_page`
,
{
{
...
params
,
currentPage
,
currentPage
,
pageSize
,
pageSize
,
},
},
...
...
src/api/podUsOrder.ts
View file @
129eef49
...
@@ -477,10 +477,11 @@ export function getListCraftApi() {
...
@@ -477,10 +477,11 @@ export function getListCraftApi() {
}
}
// 批量下载 列表
// 批量下载 列表
export
function
batchDownloadApi
(
currentPage
:
number
,
pageSize
:
number
)
{
export
function
batchDownloadApi
(
params
:
SearchForm
,
currentPage
:
number
,
pageSize
:
number
)
{
return
axios
.
post
<
never
,
BaseRespData
<
never
>>
(
return
axios
.
post
<
never
,
BaseRespData
<
never
>>
(
`factory/podBatchDownload/us/list_page`
,
`factory/podBatchDownload/us/list_page`
,
{
{
...
params
,
currentPage
,
currentPage
,
pageSize
,
pageSize
,
},
},
...
...
src/types/api/podCnOrder.ts
View file @
129eef49
...
@@ -47,6 +47,10 @@ export interface SearchForm {
...
@@ -47,6 +47,10 @@ export interface SearchForm {
source
?:
string
source
?:
string
size
?:
string
size
?:
string
tagsIdArr
?:
(
number
|
null
)[]
tagsIdArr
?:
(
number
|
null
)[]
craftType
?:
string
downloadStatus
?:
number
syntheticStatus
?:
number
automaticComposing
?:
number
}
}
export
interface
PodCnOrderListData
{
export
interface
PodCnOrderListData
{
id
:
number
id
:
number
...
@@ -113,6 +117,7 @@ export interface ProductList {
...
@@ -113,6 +117,7 @@ export interface ProductList {
variantImage
?:
string
variantImage
?:
string
craftPrice
?:
number
craftPrice
?:
number
craftCode
?:
string
craftCode
?:
string
craftType
?:
string
previewImgs
?:
[]
previewImgs
?:
[]
platform
?:
string
platform
?:
string
imageAry
?:
string
imageAry
?:
string
...
...
src/types/api/podUsOrder.ts
View file @
129eef49
...
@@ -44,6 +44,10 @@ export interface SearchForm {
...
@@ -44,6 +44,10 @@ export interface SearchForm {
size
?:
string
size
?:
string
tagsIdArr
?:
(
number
|
null
)[]
tagsIdArr
?:
(
number
|
null
)[]
replaceShipment
?:
number
|
null
replaceShipment
?:
number
|
null
craftType
?:
string
downloadStatus
?:
number
syntheticStatus
?:
number
automaticComposing
?:
number
}
}
export
interface
PodUsOrderListData
{
export
interface
PodUsOrderListData
{
id
:
number
id
:
number
...
@@ -113,6 +117,7 @@ export interface ProductList {
...
@@ -113,6 +117,7 @@ export interface ProductList {
variantImage
?:
string
variantImage
?:
string
craftPrice
?:
number
craftPrice
?:
number
craftCode
?:
string
craftCode
?:
string
craftType
?:
string
platform
?:
string
platform
?:
string
imageAry
?:
string
imageAry
?:
string
previewImgs
?:
[]
previewImgs
?:
[]
...
...
src/views/order/podCN/index.vue
View file @
129eef49
...
@@ -10,7 +10,105 @@
...
@@ -10,7 +10,105 @@
label-position=
"right"
label-position=
"right"
label-width=
"70px"
label-width=
"70px"
>
>
<ElFormItem
label=
"仓库"
>
<!-- 批量下载 -->
<ElFormItem
label=
"创建时间"
v-if=
"
status === 'BATCH_DOWNLOAD'
"
>
<el-date-picker
v-model=
"timeRange"
:teleported=
"false"
:default-time=
"[
new Date(0, 0, 0, 0, 0, 0),
new Date(0, 0, 0, 23, 59, 59),
]"
value-format=
"YYYY-MM-DD HH:mm:ss"
type=
"datetimerange"
style=
"width: 280px"
:shortcuts=
"pickerOptions.shortcuts"
start-placeholder=
"开始时间"
end-placeholder=
"结束时间"
clearable
>
</el-date-picker>
</ElFormItem>
<ElFormItem
label=
"工艺类型"
v-if=
"
status === 'BATCH_DOWNLOAD'
"
>
<ElSelect
v-model=
"searchForm.craftType"
placeholder=
"请选择"
clearable
filterable
:teleported=
"false"
style=
"width: 150px"
>
<ElOption
v-for=
"(item, index) in processType"
:key=
"index"
:value=
"item.value"
:label=
"item.label"
></ElOption>
</ElSelect>
</ElFormItem>
<ElFormItem
label=
"下载状态"
v-if=
"
status === 'BATCH_DOWNLOAD'
"
>
<ElSelect
v-model=
"searchForm.downloadStatus"
placeholder=
"下载状态"
clearable
:teleported=
"false"
style=
"width: 150px"
>
<ElOption
v-for=
"(item, index) in ['未下载', '已下载']"
:key=
"index"
:value=
"index"
:label=
"item"
></ElOption>
</ElSelect>
</ElFormItem>
<ElFormItem
label=
"排版状态"
v-if=
"
status === 'BATCH_DOWNLOAD'
"
>
<ElSelect
v-model=
"searchForm.syntheticStatus"
placeholder=
"排版状态"
clearable
:teleported=
"false"
style=
"width: 150px"
>
<ElOption
v-for=
"(item, index) in ['失败', '成功']"
:key=
"index"
:value=
"index"
:label=
"item"
></ElOption>
</ElSelect>
</ElFormItem>
<ElFormItem
label=
"自动排版"
v-if=
"
status === 'BATCH_DOWNLOAD'
"
>
<ElSelect
v-model=
"searchForm.automaticComposing"
placeholder=
"自动排版"
clearable
:teleported=
"false"
style=
"width: 150px"
>
<ElOption
v-for=
"(item, index) in ['否', '是']"
:key=
"index"
:value=
"index"
:label=
"item"
></ElOption>
</ElSelect>
</ElFormItem>
<ElFormItem
label=
"仓库"
v-if=
"
status !== 'BATCH_DOWNLOAD'
"
>
<ElSelect
<ElSelect
v-model=
"searchForm.warehouseId"
v-model=
"searchForm.warehouseId"
clearable
clearable
...
@@ -26,7 +124,9 @@
...
@@ -26,7 +124,9 @@
></el-option>
></el-option>
</ElSelect>
</ElSelect>
</ElFormItem>
</ElFormItem>
<ElFormItem
label=
"平台"
>
<ElFormItem
label=
"平台"
v-if=
"
status !== 'BATCH_DOWNLOAD'
"
>
<ElSelect
<ElSelect
v-model=
"searchForm.platform"
v-model=
"searchForm.platform"
value-key=
""
value-key=
""
...
@@ -52,7 +152,9 @@
...
@@ -52,7 +152,9 @@
</ElSelect>
</ElSelect>
</ElFormItem>
</ElFormItem>
<ElFormItem
label=
"工艺"
>
<ElFormItem
label=
"工艺"
v-if=
"
status !== 'BATCH_DOWNLOAD'
"
>
<LogisticsWaySelect
<LogisticsWaySelect
v-model=
"searchForm.craftCode"
v-model=
"searchForm.craftCode"
:company-list=
"craftList"
:company-list=
"craftList"
...
@@ -61,7 +163,9 @@
...
@@ -61,7 +163,9 @@
start-placeholder=
"请选择工艺名称"
start-placeholder=
"请选择工艺名称"
></LogisticsWaySelect>
></LogisticsWaySelect>
</ElFormItem>
</ElFormItem>
<ElFormItem
label=
"库存SKU"
>
<ElFormItem
label=
"库存SKU"
v-if=
"
status !== 'BATCH_DOWNLOAD'
"
>
<ElInput
<ElInput
v-model
.
trim=
"searchForm.thirdSkuCode"
v-model
.
trim=
"searchForm.thirdSkuCode"
placeholder=
"库存SKU"
placeholder=
"库存SKU"
...
@@ -69,7 +173,9 @@
...
@@ -69,7 +173,9 @@
style=
"width: 150px"
style=
"width: 150px"
></ElInput>
></ElInput>
</ElFormItem>
</ElFormItem>
<ElFormItem
label=
"款号"
>
<ElFormItem
label=
"款号"
v-if=
"
status !== 'BATCH_DOWNLOAD'
"
>
<ElInput
<ElInput
v-model
.
trim=
"searchForm.supplierProductNo"
v-model
.
trim=
"searchForm.supplierProductNo"
placeholder=
"款号"
placeholder=
"款号"
...
@@ -85,7 +191,9 @@
...
@@ -85,7 +191,9 @@
style=
"width: 150px"
style=
"width: 150px"
/>
/>
</ElFormItem>
</ElFormItem>
<ElFormItem
label=
"生产单号"
>
<ElFormItem
label=
"生产单号"
v-if=
"
status !== 'BATCH_DOWNLOAD'
"
>
<ElInput
<ElInput
v-model
.
trim=
"searchForm.factorySubOrderNumber"
v-model
.
trim=
"searchForm.factorySubOrderNumber"
placeholder=
"生产单号"
placeholder=
"生产单号"
...
@@ -93,7 +201,9 @@
...
@@ -93,7 +201,9 @@
style=
"width: 150px"
style=
"width: 150px"
/>
/>
</ElFormItem>
</ElFormItem>
<ElFormItem
label=
"店铺单号"
>
<ElFormItem
label=
"店铺单号"
v-if=
"
status !== 'BATCH_DOWNLOAD'
"
>
<ElInput
<ElInput
v-model
.
trim=
"searchForm.shopNumber"
v-model
.
trim=
"searchForm.shopNumber"
placeholder=
"店铺单号"
placeholder=
"店铺单号"
...
@@ -101,7 +211,9 @@
...
@@ -101,7 +211,9 @@
style=
"width: 150px"
style=
"width: 150px"
/>
/>
</ElFormItem>
</ElFormItem>
<ElFormItem
label=
"尺码类型"
>
<ElFormItem
label=
"尺码类型"
v-if=
"
status !== 'BATCH_DOWNLOAD'
"
>
<ElSelect
<ElSelect
v-model=
"searchForm.sizeType"
v-model=
"searchForm.sizeType"
clearable
clearable
...
@@ -117,7 +229,9 @@
...
@@ -117,7 +229,9 @@
></el-option>
></el-option>
</ElSelect>
</ElSelect>
</ElFormItem>
</ElFormItem>
<ElFormItem
label=
"排序"
>
<ElFormItem
label=
"排序"
v-if=
"
status !== 'BATCH_DOWNLOAD'
"
>
<el-select
<el-select
v-model=
"searchForm.order"
v-model=
"searchForm.order"
clearable
clearable
...
@@ -128,7 +242,9 @@
...
@@ -128,7 +242,9 @@
<el-option
value=
"desc"
label=
"倒序"
></el-option>
<el-option
value=
"desc"
label=
"倒序"
></el-option>
</el-select>
</el-select>
</ElFormItem>
</ElFormItem>
<ElFormItem
label=
"类型"
>
<ElFormItem
label=
"类型"
v-if=
"
status !== 'BATCH_DOWNLOAD'
"
>
<el-radio-group
<el-radio-group
v-model=
"searchForm.customizedQuantity"
v-model=
"searchForm.customizedQuantity"
@
click
.
stop=
"(e: Event) => handleRadioGroupClick(e)"
@
click
.
stop=
"(e: Event) => handleRadioGroupClick(e)"
...
@@ -137,7 +253,9 @@
...
@@ -137,7 +253,9 @@
<el-radio-button
value=
"multiple"
>
多面
</el-radio-button>
<el-radio-button
value=
"multiple"
>
多面
</el-radio-button>
</el-radio-group>
</el-radio-group>
</ElFormItem>
</ElFormItem>
<ElFormItem
label=
"数量"
>
<ElFormItem
label=
"数量"
v-if=
"
status !== 'BATCH_DOWNLOAD'
"
>
<el-radio-group
<el-radio-group
v-model=
"searchForm.multi"
v-model=
"searchForm.multi"
@
click
.
stop=
"(e: Event) => handleMultiRadioGroupClick(e)"
@
click
.
stop=
"(e: Event) => handleMultiRadioGroupClick(e)"
...
@@ -146,7 +264,9 @@
...
@@ -146,7 +264,9 @@
<el-radio-button
:value=
"true"
>
多件
</el-radio-button>
<el-radio-button
:value=
"true"
>
多件
</el-radio-button>
</el-radio-group>
</el-radio-group>
</ElFormItem>
</ElFormItem>
<ElFormItem>
<ElFormItem
v-if=
"
status !== 'BATCH_DOWNLOAD'
"
>
<ElPopover
placement=
"bottom"
width=
"600"
trigger=
"click"
>
<ElPopover
placement=
"bottom"
width=
"600"
trigger=
"click"
>
<ElForm
<ElForm
ref=
"searchFormPopoverRef"
ref=
"searchFormPopoverRef"
...
@@ -662,7 +782,7 @@
...
@@ -662,7 +782,7 @@
<ElButton
type=
"success"
@
click=
"toBePicking"
>
转至生产
</ElButton>
<ElButton
type=
"success"
@
click=
"toBePicking"
>
转至生产
</ElButton>
</span>
</span>
<span
v-if=
"status === 'TO_BE_ARRANGE'"
class=
"item"
>
<span
v-if=
"status === 'TO_BE_ARRANGE'"
class=
"item"
>
<ElButton
type=
"warning"
@
click=
"showArrange(2)"
>
排单
完成
</ElButton>
<ElButton
type=
"warning"
@
click=
"showArrange(2)"
>
排单
</ElButton>
</span>
</span>
<span
<span
v-if=
"status !== 'BATCH_DOWNLOAD' && status !== 'WAIT_SHIPMENT'"
v-if=
"status !== 'BATCH_DOWNLOAD' && status !== 'WAIT_SHIPMENT'"
...
@@ -3486,6 +3606,12 @@ const tableColumns = computed(() => {
...
@@ -3486,6 +3606,12 @@ const tableColumns = computed(() => {
align
:
'center'
,
align
:
'center'
,
}
,
}
,
{
{
label
:
'工艺类型'
,
width
:
150
,
prop
:
'craftType'
,
align
:
'center'
,
}
,
{
label
:
'失败原因'
,
label
:
'失败原因'
,
minWidth
:
250
,
minWidth
:
250
,
prop
:
'failReason'
,
prop
:
'failReason'
,
...
@@ -3730,7 +3856,9 @@ const {
...
@@ -3730,7 +3856,9 @@ const {
baseparams
.
tagsIdArr
&&
delete
baseparams
.
tagsIdArr
baseparams
.
tagsIdArr
&&
delete
baseparams
.
tagsIdArr
// 批量下载
// 批量下载
if
(
status
.
value
===
'BATCH_DOWNLOAD'
)
{
if
(
status
.
value
===
'BATCH_DOWNLOAD'
)
{
return
batchDownloadApi
(
page
,
pageSize
).
then
((
res
)
=>
{
return
batchDownloadApi
({
...
baseparams
}
,
page
,
pageSize
).
then
((
res
)
=>
{
return
res
.
data
return
res
.
data
}
)
as
never
}
)
as
never
}
else
if
(
}
else
if
(
...
@@ -4491,7 +4619,7 @@ const showArrange = async (type: number, data?: PodCnOrderListData) => {
...
@@ -4491,7 +4619,7 @@ const showArrange = async (type: number, data?: PodCnOrderListData) => {
if
(
bool
)
{
if
(
bool
)
{
try
{
try
{
await
ElMessageBox
.
confirm
(
await
ElMessageBox
.
confirm
(
'选中排单的生产单存在多个工艺, 是否继续排单?'
,
'选中排单的生产单存在多个工艺
类型
, 是否继续排单?'
,
'提示'
,
'提示'
,
{
{
confirmButtonText
:
'确定'
,
confirmButtonText
:
'确定'
,
...
@@ -4515,10 +4643,10 @@ function hasDifferentCraftCodeWithSet(items: ProductList[]) {
...
@@ -4515,10 +4643,10 @@ function hasDifferentCraftCodeWithSet(items: ProductList[]) {
const
seen
=
new
Set
()
const
seen
=
new
Set
()
for
(
const
item
of
items
)
{
for
(
const
item
of
items
)
{
if
(
seen
.
has
(
item
.
craft
Cod
e
))
{
if
(
seen
.
has
(
item
.
craft
Typ
e
))
{
if
(
seen
.
size
>
1
)
return
true
if
(
seen
.
size
>
1
)
return
true
}
else
{
}
else
{
seen
.
add
(
item
.
craft
Cod
e
)
seen
.
add
(
item
.
craft
Typ
e
)
if
(
seen
.
size
>
1
)
return
true
if
(
seen
.
size
>
1
)
return
true
}
}
}
}
...
...
src/views/order/podUs/index.vue
View file @
129eef49
...
@@ -10,8 +10,105 @@
...
@@ -10,8 +10,105 @@
size=
"default"
size=
"default"
inline
inline
>
>
<!-- 批量下载 -->
<ElFormItem
label=
"创建时间"
v-if=
"
status === 'BATCH_DOWNLOAD'
"
>
<el-date-picker
v-model=
"timeRange"
:teleported=
"false"
:default-time=
"[
new Date(0, 0, 0, 0, 0, 0),
new Date(0, 0, 0, 23, 59, 59),
]"
value-format=
"YYYY-MM-DD HH:mm:ss"
type=
"datetimerange"
style=
"width: 280px"
:shortcuts=
"pickerOptions.shortcuts"
start-placeholder=
"开始时间"
end-placeholder=
"结束时间"
clearable
>
</el-date-picker>
</ElFormItem>
<ElFormItem
label=
"工艺类型"
v-if=
"
status === 'BATCH_DOWNLOAD'
"
>
<ElSelect
v-model=
"searchForm.craftType"
placeholder=
"请选择"
clearable
filterable
:teleported=
"false"
style=
"width: 150px"
>
<ElOption
v-for=
"(item, index) in processType"
:key=
"index"
:value=
"item.value"
:label=
"item.label"
></ElOption>
</ElSelect>
</ElFormItem>
<ElFormItem
label=
"下载状态"
v-if=
"
status === 'BATCH_DOWNLOAD'
"
>
<ElSelect
v-model=
"searchForm.downloadStatus"
placeholder=
"下载状态"
clearable
:teleported=
"false"
style=
"width: 150px"
>
<ElOption
v-for=
"(item, index) in ['未下载', '已下载']"
:key=
"index"
:value=
"index"
:label=
"item"
></ElOption>
</ElSelect>
</ElFormItem>
<ElFormItem
label=
"排版状态"
v-if=
"
status === 'BATCH_DOWNLOAD'
"
>
<ElSelect
v-model=
"searchForm.syntheticStatus"
placeholder=
"排版状态"
clearable
:teleported=
"false"
style=
"width: 150px"
>
<ElOption
v-for=
"(item, index) in ['失败', '成功']"
:key=
"index"
:value=
"index"
:label=
"item"
></ElOption>
</ElSelect>
</ElFormItem>
<ElFormItem
label=
"自动排版"
v-if=
"
status === 'BATCH_DOWNLOAD'
"
>
<ElSelect
v-model=
"searchForm.automaticComposing"
placeholder=
"自动排版"
clearable
:teleported=
"false"
style=
"width: 150px"
>
<ElOption
v-for=
"(item, index) in ['否', '是']"
:key=
"index"
:value=
"index"
:label=
"item"
></ElOption>
</ElSelect>
</ElFormItem>
<!--
<div>
-->
<!--
<div>
-->
<ElFormItem
label=
"仓库"
>
<ElFormItem
label=
"仓库"
v-if=
"
status !== 'BATCH_DOWNLOAD'
"
>
<ElSelect
<ElSelect
v-model=
"searchForm.warehouseId"
v-model=
"searchForm.warehouseId"
clearable
clearable
...
@@ -28,7 +125,9 @@
...
@@ -28,7 +125,9 @@
</ElSelect>
</ElSelect>
</ElFormItem>
</ElFormItem>
<ElFormItem
label=
"工艺"
>
<ElFormItem
label=
"工艺"
v-if=
"
status !== 'BATCH_DOWNLOAD'
"
>
<LogisticsWaySelect
<LogisticsWaySelect
v-model=
"searchForm.craftCode"
v-model=
"searchForm.craftCode"
:company-list=
"craftList"
:company-list=
"craftList"
...
@@ -37,7 +136,9 @@
...
@@ -37,7 +136,9 @@
start-placeholder=
"请选择工艺名称"
start-placeholder=
"请选择工艺名称"
></LogisticsWaySelect>
></LogisticsWaySelect>
</ElFormItem>
</ElFormItem>
<ElFormItem
label=
"库存SKU"
>
<ElFormItem
label=
"库存SKU"
v-if=
"
status !== 'BATCH_DOWNLOAD'
"
>
<ElInput
<ElInput
v-model
.
trim=
"searchForm.thirdSkuCode"
v-model
.
trim=
"searchForm.thirdSkuCode"
placeholder=
"库存SKU"
placeholder=
"库存SKU"
...
@@ -45,7 +146,9 @@
...
@@ -45,7 +146,9 @@
style=
"width: 150px"
style=
"width: 150px"
></ElInput>
></ElInput>
</ElFormItem>
</ElFormItem>
<ElFormItem
label=
"款号"
>
<ElFormItem
label=
"款号"
v-if=
"
status !== 'BATCH_DOWNLOAD'
"
>
<ElInput
<ElInput
v-model=
"searchForm.supplierProductNo"
v-model=
"searchForm.supplierProductNo"
placeholder=
"款号"
placeholder=
"款号"
...
@@ -61,7 +164,9 @@
...
@@ -61,7 +164,9 @@
style=
"width: 150px"
style=
"width: 150px"
/>
/>
</ElFormItem>
</ElFormItem>
<ElFormItem
label=
"生产单号"
>
<ElFormItem
label=
"生产单号"
v-if=
"
status !== 'BATCH_DOWNLOAD'
"
>
<ElInput
<ElInput
v-model=
"searchForm.factorySubOrderNumber"
v-model=
"searchForm.factorySubOrderNumber"
placeholder=
"生产单号"
placeholder=
"生产单号"
...
@@ -69,7 +174,9 @@
...
@@ -69,7 +174,9 @@
style=
"width: 150px"
style=
"width: 150px"
/>
/>
</ElFormItem>
</ElFormItem>
<ElFormItem
label=
"店铺单号"
>
<ElFormItem
label=
"店铺单号"
v-if=
"
status !== 'BATCH_DOWNLOAD'
"
>
<ElInput
<ElInput
v-model=
"searchForm.shopNumber"
v-model=
"searchForm.shopNumber"
placeholder=
"店铺单号"
placeholder=
"店铺单号"
...
@@ -77,7 +184,9 @@
...
@@ -77,7 +184,9 @@
style=
"width: 150px"
style=
"width: 150px"
/>
/>
</ElFormItem>
</ElFormItem>
<ElFormItem
label=
"尺码类型"
>
<ElFormItem
label=
"尺码类型"
v-if=
"
status !== 'BATCH_DOWNLOAD'
"
>
<ElSelect
<ElSelect
v-model=
"searchForm.sizeType"
v-model=
"searchForm.sizeType"
clearable
clearable
...
@@ -93,7 +202,9 @@
...
@@ -93,7 +202,9 @@
></el-option>
></el-option>
</ElSelect>
</ElSelect>
</ElFormItem>
</ElFormItem>
<ElFormItem
label=
"平台"
>
<ElFormItem
label=
"平台"
v-if=
"
status !== 'BATCH_DOWNLOAD'
"
>
<ElSelect
<ElSelect
v-model=
"searchForm.platform"
v-model=
"searchForm.platform"
value-key=
""
value-key=
""
...
@@ -119,7 +230,9 @@
...
@@ -119,7 +230,9 @@
</ElSelect>
</ElSelect>
</ElFormItem>
</ElFormItem>
<!--
</div>
-->
<!--
</div>
-->
<ElFormItem
label=
"类型"
>
<ElFormItem
label=
"类型"
v-if=
"
status !== 'BATCH_DOWNLOAD'
"
>
<el-radio-group
<el-radio-group
v-model=
"searchForm.customizedQuantity"
v-model=
"searchForm.customizedQuantity"
@
click
.
stop=
"(e: Event) => handleRadioGroupClick(e)"
@
click
.
stop=
"(e: Event) => handleRadioGroupClick(e)"
...
@@ -129,7 +242,9 @@
...
@@ -129,7 +242,9 @@
<el-radio-button
label=
"normal"
>
普品
</el-radio-button>
<el-radio-button
label=
"normal"
>
普品
</el-radio-button>
</el-radio-group>
</el-radio-group>
</ElFormItem>
</ElFormItem>
<ElFormItem
label=
"数量"
>
<ElFormItem
label=
"数量"
v-if=
"
status !== 'BATCH_DOWNLOAD'
"
>
<el-radio-group
<el-radio-group
v-model=
"searchForm.multi"
v-model=
"searchForm.multi"
@
click
.
stop=
"(e: Event) => handleMultiRadioGroupClick(e)"
@
click
.
stop=
"(e: Event) => handleMultiRadioGroupClick(e)"
...
@@ -139,7 +254,9 @@
...
@@ -139,7 +254,9 @@
</el-radio-group>
</el-radio-group>
</ElFormItem>
</ElFormItem>
<ElFormItem>
<ElFormItem>
<ElPopover
placement=
"bottom"
width=
"600"
trigger=
"click"
>
<ElPopover
placement=
"bottom"
width=
"600"
trigger=
"click"
v-if=
"
status !== 'BATCH_DOWNLOAD'
"
>
<ElForm
<ElForm
ref=
"searchFormPopoverRef"
ref=
"searchFormPopoverRef"
:model=
"searchForm"
:model=
"searchForm"
...
@@ -684,7 +801,7 @@
...
@@ -684,7 +801,7 @@
</ElFormItem>
</ElFormItem>
<ElFormItem
v-if=
"status === 'TO_BE_ARRANGE'"
>
<ElFormItem
v-if=
"status === 'TO_BE_ARRANGE'"
>
<span
class=
"item"
>
<span
class=
"item"
>
<ElButton
type=
"warning"
@
click=
"showArrange(2)"
>
排单
完成
</ElButton>
<ElButton
type=
"warning"
@
click=
"showArrange(2)"
>
排单
</ElButton>
</span>
</span>
</ElFormItem>
</ElFormItem>
<ElFormItem
<ElFormItem
...
@@ -3087,6 +3204,9 @@ const printWarehouseSkuDialogRef = ref()
...
@@ -3087,6 +3204,9 @@ const printWarehouseSkuDialogRef = ref()
const
isAuto
=
ref
(
true
)
const
isAuto
=
ref
(
true
)
const
countryList
=
ref
([])
const
countryList
=
ref
([])
const
logisticsWayList
=
ref
<
{
name
:
string
;
id
:
number
}
[]
>
([])
const
logisticsWayList
=
ref
<
{
name
:
string
;
id
:
number
}
[]
>
([])
const
craftTypeList
=
ref
<
{
name
:
string
;
code
:
string
}
[]
>
([
{
name
:
'烫画'
,
code
:
'TH'
}
])
const
currentRow
=
ref
<
AddressInfo
>
({
const
currentRow
=
ref
<
AddressInfo
>
({
receiverName
:
''
,
receiverName
:
''
,
receiverPhone
:
''
,
receiverPhone
:
''
,
...
@@ -3570,6 +3690,12 @@ const tableColumns = computed(() => {
...
@@ -3570,6 +3690,12 @@ const tableColumns = computed(() => {
prop
:
'employeeAccount'
,
prop
:
'employeeAccount'
,
align
:
'center'
,
align
:
'center'
,
}
,
}
,
{
label
:
'工艺类型'
,
width
:
150
,
prop
:
'craftType'
,
align
:
'center'
,
}
,
{
{
label
:
'创建时间'
,
label
:
'创建时间'
,
...
@@ -3594,7 +3720,7 @@ const tableColumns = computed(() => {
...
@@ -3594,7 +3720,7 @@ const tableColumns = computed(() => {
}
,
}
,
{
{
label
:
'失败原因'
,
label
:
'失败原因'
,
minWidth
:
2
5
0
,
minWidth
:
2
0
0
,
prop
:
'failReason'
,
prop
:
'failReason'
,
slot
:
'failReason'
,
slot
:
'failReason'
,
align
:
'left'
,
align
:
'left'
,
...
@@ -3918,7 +4044,11 @@ const {
...
@@ -3918,7 +4044,11 @@ const {
baseparams
.
tagsIdArr
&&
delete
baseparams
.
tagsIdArr
baseparams
.
tagsIdArr
&&
delete
baseparams
.
tagsIdArr
// 批量下载
// 批量下载
if
(
status
.
value
===
'BATCH_DOWNLOAD'
)
{
if
(
status
.
value
===
'BATCH_DOWNLOAD'
)
{
return
batchDownloadApi
(
page
,
pageSize
).
then
((
res
)
=>
{
const
params
=
{
...
baseparams
}
return
batchDownloadApi
(
params
,
page
,
pageSize
).
then
((
res
)
=>
{
return
res
.
data
return
res
.
data
}
)
as
never
}
)
as
never
}
else
if
(
}
else
if
(
...
@@ -5023,7 +5153,7 @@ const showArrange = async (type: number, data?: PodUsOrderListData) => {
...
@@ -5023,7 +5153,7 @@ const showArrange = async (type: number, data?: PodUsOrderListData) => {
if
(
bool
)
{
if
(
bool
)
{
try
{
try
{
await
ElMessageBox
.
confirm
(
await
ElMessageBox
.
confirm
(
'选中排单的生产单存在多个工艺, 是否继续排单?'
,
'选中排单的生产单存在多个工艺
类型
, 是否继续排单?'
,
'提示'
,
'提示'
,
{
{
confirmButtonText
:
'确定'
,
confirmButtonText
:
'确定'
,
...
@@ -5047,10 +5177,10 @@ function hasDifferentCraftCodeWithSet(items: ProductList[]) {
...
@@ -5047,10 +5177,10 @@ function hasDifferentCraftCodeWithSet(items: ProductList[]) {
const
seen
=
new
Set
()
const
seen
=
new
Set
()
for
(
const
item
of
items
)
{
for
(
const
item
of
items
)
{
if
(
seen
.
has
(
item
.
craft
Cod
e
))
{
if
(
seen
.
has
(
item
.
craft
Typ
e
))
{
if
(
seen
.
size
>
1
)
return
true
if
(
seen
.
size
>
1
)
return
true
}
else
{
}
else
{
seen
.
add
(
item
.
craft
Cod
e
)
seen
.
add
(
item
.
craft
Typ
e
)
if
(
seen
.
size
>
1
)
return
true
if
(
seen
.
size
>
1
)
return
true
}
}
}
}
...
...
src/views/order/podUsSchedulingRules/index.vue
View file @
129eef49
...
@@ -14,7 +14,8 @@
...
@@ -14,7 +14,8 @@
<div
class=
"box"
>
<div
class=
"box"
>
所有生产单按
{{
getLabels
(
item
.
groupField
)
}}
进行自动排单
所有生产单按
{{
getLabels
(
item
.
groupField
)
}}
进行自动排单
</div>
</div>
<div
class=
"box"
>
批次数量:
{{
item
.
arrangeMax
}}
</div>
<div
class=
"box"
>
烫画批次数量:
{{
item
.
thArrangeMax
}}
</div>
<div
class=
"box"
>
非烫画批次数量:
{{
item
.
arrangeMax
}}
</div>
<div
class=
"box"
>
每天
{{
getTime
(
item
)
}}
开始自动排单
</div>
<div
class=
"box"
>
每天
{{
getTime
(
item
)
}}
开始自动排单
</div>
</div>
</div>
<div
class=
"action"
>
<div
class=
"action"
>
...
@@ -154,31 +155,6 @@
...
@@ -154,31 +155,6 @@
<div
<div
style=
"border-top: 1px solid; color: #dcdfe6; padding-top: 10px"
style=
"border-top: 1px solid; color: #dcdfe6; padding-top: 10px"
>
>
<el-form-item
label=
"自动排单一个批次里生产单的最大值为:"
prop=
"arrangeMax"
:rules=
"[
{
required: true,
message: '请输入数量',
trigger: ['blur'],
},
{
pattern: /^\d+$/,
message: '请输入整数',
trigger: ['blur', 'change'],
},
]"
>
<el-input
v-model=
"editForm.arrangeMax"
style=
"width: 200px"
placeholder=
"请输入数量"
></el-input>
</el-form-item>
<div
style=
"color: #f56c6c; margin: 10px 0"
>
注:系统限制烫画工艺一个批次不超过50个生产单!
</div>
<div
style=
"display: flex; align-items: center"
>
<div
style=
"display: flex; align-items: center"
>
<div
style=
"color: #606266; margin-right: 10px"
>
<div
style=
"color: #606266; margin-right: 10px"
>
烫画工艺自动排版:
烫画工艺自动排版:
...
@@ -195,9 +171,8 @@
...
@@ -195,9 +171,8 @@
--el-switch-off-color: #f56c6c;
--el-switch-off-color: #f56c6c;
"
"
/>
/>
</div>
<div
style=
"display: flex; align-items: center"
>
<div
style=
"color: #606266; margin-left: 155px; margin-right: 10px"
>
状态:
</div>
<div
style=
"color: #606266; margin-right: 10px"
>
状态:
</div>
<el-switch
<el-switch
v-model=
"editForm.status"
v-model=
"editForm.status"
active-value=
"ACTIVE"
active-value=
"ACTIVE"
...
@@ -212,20 +187,93 @@
...
@@ -212,20 +187,93 @@
"
"
/>
/>
</div>
</div>
<div
v-if=
"editForm.isAuto"
>
<div
v-if=
"editForm.isAuto"
>
<div
label=
"排版类型:"
>
<el-row
:gutter=
"40"
>
<el-radio-group
v-model=
"editForm.type"
>
<el-col
:span=
"380"
>
<el-form-item
label=
"排版类型:"
prop=
"type"
label-width=
"100"
:rules=
"editForm.isAuto ? [
{ required: true, message: '请选择排版类型', trigger: 'change' }
] : []"
>
<el-radio-group
v-model=
"editForm.type"
:required=
"editForm.isAuto"
>
<el-radio
label=
"tiff"
>
tiff排版
</el-radio>
<el-radio
label=
"tiff"
>
tiff排版
</el-radio>
<el-radio
label=
"png"
>
png排版
</el-radio>
<el-radio
label=
"png"
>
png排版
</el-radio>
</el-radio-group>
</el-radio-group>
</div>
</el-form-item>
<div
label=
"排版宽度:"
>
</el-col>
<el-radio-group
v-model=
"editForm.templateWidth"
>
<el-col
:span=
"12"
>
<el-form-item
label=
"排版宽度:"
prop=
"templateWidth"
label-width=
"100"
:rules=
"editForm.isAuto ? [
{ required: true, message: '请选择排版宽度', trigger: 'change' }
] : []"
>
<el-radio-group
v-model=
"editForm.templateWidth"
:required=
"editForm.isAuto"
>
<el-radio
:value=
"42"
>
40+2cm
</el-radio>
<el-radio
:value=
"42"
>
40+2cm
</el-radio>
<el-radio
:value=
"60"
>
60cm
</el-radio>
<el-radio
:value=
"60"
>
60cm
</el-radio>
</el-radio-group>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<div
style=
"color: #f56c6c; margin: 5px 0"
>
<!-- 注:系统限制烫画工艺一个批次不超过50个生产单! -->
注:系统限制烫画工艺排TIFF类型一个批次生产单件数不超过40,排PNG类型一个批次生产单件数不超过100!
</div>
</div>
</div>
</div>
<el-form-item
label=
"烫画类工艺自动排单一个批次里生产单件数的最大值为:"
prop=
"thArrangeMax"
label-width=
"380"
:rules=
"[
{
required: true,
message: '请输入数量',
trigger: ['blur'],
},
{
pattern: /^\d+$/,
message: '请输入整数',
trigger: ['blur', 'change'],
},
]"
>
<el-input
v-model=
"editForm.thArrangeMax"
style=
"width: 200px"
placeholder=
"请输入数量"
></el-input>
</el-form-item>
<el-form-item
label=
"非烫画类工艺自动排单一个批次里生产单件数的最大值为:"
prop=
"arrangeMax"
label-width=
"380"
:rules=
"[
{
required: true,
message: '请输入数量',
trigger: ['blur'],
},
{
pattern: /^\d+$/,
message: '请输入整数',
trigger: ['blur', 'change'],
},
]"
>
<el-input
v-model=
"editForm.arrangeMax"
style=
"width: 200px"
placeholder=
"请输入数量"
></el-input>
</el-form-item>
</div>
</div>
<el-form-item>
<el-form-item>
...
@@ -289,10 +337,10 @@ const editFormRef = ref<InstanceType<typeof CustomizeForm> | null>(null)
...
@@ -289,10 +337,10 @@ const editFormRef = ref<InstanceType<typeof CustomizeForm> | null>(null)
const
paramsList
=
ref
([
'craft_type'
])
const
paramsList
=
ref
([
'craft_type'
])
const
rulesList
=
ref
([
const
rulesList
=
ref
([
{
label
:
'工艺'
,
value
:
'craft_type'
,
disabled
:
false
},
{
label
:
'工艺
类型
'
,
value
:
'craft_type'
,
disabled
:
false
},
{
label
:
'款号'
,
value
:
'supplier_product_no'
,
disabled
:
false
},
{
label
:
'
库存
款号'
,
value
:
'supplier_product_no'
,
disabled
:
false
},
{
label
:
'尺码'
,
value
:
'size'
,
disabled
:
false
},
{
label
:
'
产品
尺码'
,
value
:
'size'
,
disabled
:
false
},
{
label
:
'类型'
,
value
:
'customized_quantity'
,
disabled
:
false
},
{
label
:
'
定制
类型'
,
value
:
'customized_quantity'
,
disabled
:
false
},
])
])
/**
/**
...
@@ -335,6 +383,7 @@ interface rowData extends BaseForm {
...
@@ -335,6 +383,7 @@ interface rowData extends BaseForm {
interface
BaseForm
{
interface
BaseForm
{
id
?:
number
id
?:
number
time
?:
string
time
?:
string
thArrangeMax
?:
number
arrangeMax
?:
number
arrangeMax
?:
number
isAuto
?:
boolean
isAuto
?:
boolean
factoryNo
?:
number
factoryNo
?:
number
...
...
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