Commit e7884577 by sunyang

排单

parent 6855c54a
......@@ -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>>(
`factory/podBatchDownload/cn/list_page`,
{
...params,
currentPage,
pageSize,
},
......
......@@ -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>>(
`factory/podBatchDownload/us/list_page`,
{
...params,
currentPage,
pageSize,
},
......
......@@ -47,6 +47,10 @@ export interface SearchForm {
source?: string
size?: string
tagsIdArr?: (number | null)[]
craftType?: string
downloadStatus?: number
syntheticStatus?: number
automaticComposing?: number
}
export interface PodCnOrderListData {
id: number
......@@ -113,6 +117,7 @@ export interface ProductList {
variantImage?: string
craftPrice?: number
craftCode?: string
craftType?: string
previewImgs?: []
platform?: string
imageAry?: string
......
......@@ -44,6 +44,10 @@ export interface SearchForm {
size?: string
tagsIdArr?: (number | null)[]
replaceShipment?: number | null
craftType?: string
downloadStatus?: number
syntheticStatus?: number
automaticComposing?: number
}
export interface PodUsOrderListData {
id: number
......@@ -113,6 +117,7 @@ export interface ProductList {
variantImage?: string
craftPrice?: number
craftCode?: string
craftType?: string
platform?: string
imageAry?: string
previewImgs?: []
......
......@@ -10,7 +10,105 @@
label-position="right"
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
v-model="searchForm.warehouseId"
clearable
......@@ -26,7 +124,9 @@
></el-option>
</ElSelect>
</ElFormItem>
<ElFormItem label="平台">
<ElFormItem label="平台" v-if="
status !== 'BATCH_DOWNLOAD'
">
<ElSelect
v-model="searchForm.platform"
value-key=""
......@@ -52,7 +152,9 @@
</ElSelect>
</ElFormItem>
<ElFormItem label="工艺">
<ElFormItem label="工艺" v-if="
status !== 'BATCH_DOWNLOAD'
">
<LogisticsWaySelect
v-model="searchForm.craftCode"
:company-list="craftList"
......@@ -61,7 +163,9 @@
start-placeholder="请选择工艺名称"
></LogisticsWaySelect>
</ElFormItem>
<ElFormItem label="库存SKU">
<ElFormItem label="库存SKU" v-if="
status !== 'BATCH_DOWNLOAD'
">
<ElInput
v-model.trim="searchForm.thirdSkuCode"
placeholder="库存SKU"
......@@ -69,7 +173,9 @@
style="width: 150px"
></ElInput>
</ElFormItem>
<ElFormItem label="款号">
<ElFormItem label="款号" v-if="
status !== 'BATCH_DOWNLOAD'
">
<ElInput
v-model.trim="searchForm.supplierProductNo"
placeholder="款号"
......@@ -85,7 +191,9 @@
style="width: 150px"
/>
</ElFormItem>
<ElFormItem label="生产单号">
<ElFormItem label="生产单号" v-if="
status !== 'BATCH_DOWNLOAD'
">
<ElInput
v-model.trim="searchForm.factorySubOrderNumber"
placeholder="生产单号"
......@@ -93,7 +201,9 @@
style="width: 150px"
/>
</ElFormItem>
<ElFormItem label="店铺单号">
<ElFormItem label="店铺单号" v-if="
status !== 'BATCH_DOWNLOAD'
">
<ElInput
v-model.trim="searchForm.shopNumber"
placeholder="店铺单号"
......@@ -101,7 +211,9 @@
style="width: 150px"
/>
</ElFormItem>
<ElFormItem label="尺码类型">
<ElFormItem label="尺码类型" v-if="
status !== 'BATCH_DOWNLOAD'
">
<ElSelect
v-model="searchForm.sizeType"
clearable
......@@ -117,7 +229,9 @@
></el-option>
</ElSelect>
</ElFormItem>
<ElFormItem label="排序">
<ElFormItem label="排序" v-if="
status !== 'BATCH_DOWNLOAD'
">
<el-select
v-model="searchForm.order"
clearable
......@@ -128,7 +242,9 @@
<el-option value="desc" label="倒序"></el-option>
</el-select>
</ElFormItem>
<ElFormItem label="类型">
<ElFormItem label="类型" v-if="
status !== 'BATCH_DOWNLOAD'
">
<el-radio-group
v-model="searchForm.customizedQuantity"
@click.stop="(e: Event) => handleRadioGroupClick(e)"
......@@ -137,7 +253,9 @@
<el-radio-button value="multiple">多面</el-radio-button>
</el-radio-group>
</ElFormItem>
<ElFormItem label="数量">
<ElFormItem label="数量" v-if="
status !== 'BATCH_DOWNLOAD'
">
<el-radio-group
v-model="searchForm.multi"
@click.stop="(e: Event) => handleMultiRadioGroupClick(e)"
......@@ -146,7 +264,9 @@
<el-radio-button :value="true">多件</el-radio-button>
</el-radio-group>
</ElFormItem>
<ElFormItem>
<ElFormItem v-if="
status !== 'BATCH_DOWNLOAD'
">
<ElPopover placement="bottom" width="600" trigger="click">
<ElForm
ref="searchFormPopoverRef"
......@@ -662,7 +782,7 @@
<ElButton type="success" @click="toBePicking"> 转至生产 </ElButton>
</span>
<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
v-if="status !== 'BATCH_DOWNLOAD' && status !== 'WAIT_SHIPMENT'"
......@@ -3486,6 +3606,12 @@ const tableColumns = computed(() => {
align: 'center',
},
{
label: '工艺类型',
width: 150,
prop: 'craftType',
align: 'center',
},
{
label: '失败原因',
minWidth: 250,
prop: 'failReason',
......@@ -3730,7 +3856,9 @@ const {
baseparams.tagsIdArr && delete baseparams.tagsIdArr
// 批量下载
if (status.value === 'BATCH_DOWNLOAD') {
return batchDownloadApi(page, pageSize).then((res) => {
return batchDownloadApi({
...baseparams
},page, pageSize).then((res) => {
return res.data
}) as never
} else if (
......@@ -4491,7 +4619,7 @@ const showArrange = async (type: number, data?: PodCnOrderListData) => {
if (bool) {
try {
await ElMessageBox.confirm(
'选中排单的生产单存在多个工艺, 是否继续排单?',
'选中排单的生产单存在多个工艺类型, 是否继续排单?',
'提示',
{
confirmButtonText: '确定',
......@@ -4515,10 +4643,10 @@ function hasDifferentCraftCodeWithSet(items: ProductList[]) {
const seen = new Set()
for (const item of items) {
if (seen.has(item.craftCode)) {
if (seen.has(item.craftType)) {
if (seen.size > 1) return true
} else {
seen.add(item.craftCode)
seen.add(item.craftType)
if (seen.size > 1) return true
}
}
......
......@@ -10,8 +10,105 @@
size="default"
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> -->
<ElFormItem label="仓库">
<ElFormItem label="仓库" v-if="
status !== 'BATCH_DOWNLOAD'
">
<ElSelect
v-model="searchForm.warehouseId"
clearable
......@@ -28,7 +125,9 @@
</ElSelect>
</ElFormItem>
<ElFormItem label="工艺">
<ElFormItem label="工艺" v-if="
status !== 'BATCH_DOWNLOAD'
">
<LogisticsWaySelect
v-model="searchForm.craftCode"
:company-list="craftList"
......@@ -37,7 +136,9 @@
start-placeholder="请选择工艺名称"
></LogisticsWaySelect>
</ElFormItem>
<ElFormItem label="库存SKU">
<ElFormItem label="库存SKU" v-if="
status !== 'BATCH_DOWNLOAD'
">
<ElInput
v-model.trim="searchForm.thirdSkuCode"
placeholder="库存SKU"
......@@ -45,7 +146,9 @@
style="width: 150px"
></ElInput>
</ElFormItem>
<ElFormItem label="款号">
<ElFormItem label="款号" v-if="
status !== 'BATCH_DOWNLOAD'
">
<ElInput
v-model="searchForm.supplierProductNo"
placeholder="款号"
......@@ -61,7 +164,9 @@
style="width: 150px"
/>
</ElFormItem>
<ElFormItem label="生产单号">
<ElFormItem label="生产单号" v-if="
status !== 'BATCH_DOWNLOAD'
">
<ElInput
v-model="searchForm.factorySubOrderNumber"
placeholder="生产单号"
......@@ -69,7 +174,9 @@
style="width: 150px"
/>
</ElFormItem>
<ElFormItem label="店铺单号">
<ElFormItem label="店铺单号" v-if="
status !== 'BATCH_DOWNLOAD'
">
<ElInput
v-model="searchForm.shopNumber"
placeholder="店铺单号"
......@@ -77,7 +184,9 @@
style="width: 150px"
/>
</ElFormItem>
<ElFormItem label="尺码类型">
<ElFormItem label="尺码类型" v-if="
status !== 'BATCH_DOWNLOAD'
">
<ElSelect
v-model="searchForm.sizeType"
clearable
......@@ -93,7 +202,9 @@
></el-option>
</ElSelect>
</ElFormItem>
<ElFormItem label="平台">
<ElFormItem label="平台" v-if="
status !== 'BATCH_DOWNLOAD'
">
<ElSelect
v-model="searchForm.platform"
value-key=""
......@@ -119,7 +230,9 @@
</ElSelect>
</ElFormItem>
<!-- </div> -->
<ElFormItem label="类型">
<ElFormItem label="类型" v-if="
status !== 'BATCH_DOWNLOAD'
">
<el-radio-group
v-model="searchForm.customizedQuantity"
@click.stop="(e: Event) => handleRadioGroupClick(e)"
......@@ -129,7 +242,9 @@
<el-radio-button label="normal">普品</el-radio-button>
</el-radio-group>
</ElFormItem>
<ElFormItem label="数量">
<ElFormItem label="数量" v-if="
status !== 'BATCH_DOWNLOAD'
">
<el-radio-group
v-model="searchForm.multi"
@click.stop="(e: Event) => handleMultiRadioGroupClick(e)"
......@@ -139,7 +254,9 @@
</el-radio-group>
</ElFormItem>
<ElFormItem>
<ElPopover placement="bottom" width="600" trigger="click">
<ElPopover placement="bottom" width="600" trigger="click" v-if="
status !== 'BATCH_DOWNLOAD'
">
<ElForm
ref="searchFormPopoverRef"
:model="searchForm"
......@@ -684,7 +801,7 @@
</ElFormItem>
<ElFormItem v-if="status === 'TO_BE_ARRANGE'">
<span class="item">
<ElButton type="warning" @click="showArrange(2)">排单完成</ElButton>
<ElButton type="warning" @click="showArrange(2)">排单</ElButton>
</span>
</ElFormItem>
<ElFormItem
......@@ -3087,6 +3204,9 @@ const printWarehouseSkuDialogRef = ref()
const isAuto = ref(true)
const countryList = ref([])
const logisticsWayList = ref<{ name: string; id: number }[]>([])
const craftTypeList = ref<{ name: string; code: string }[]>([
{ name: '烫画', code: 'TH' }
])
const currentRow = ref<AddressInfo>({
receiverName: '',
receiverPhone: '',
......@@ -3570,6 +3690,12 @@ const tableColumns = computed(() => {
prop: 'employeeAccount',
align: 'center',
},
{
label: '工艺类型',
width: 150,
prop: 'craftType',
align: 'center',
},
{
label: '创建时间',
......@@ -3594,7 +3720,7 @@ const tableColumns = computed(() => {
},
{
label: '失败原因',
minWidth: 250,
minWidth: 200,
prop: 'failReason',
slot: 'failReason',
align: 'left',
......@@ -3918,7 +4044,11 @@ const {
baseparams.tagsIdArr && delete baseparams.tagsIdArr
// 批量下载
if (status.value === 'BATCH_DOWNLOAD') {
return batchDownloadApi(page, pageSize).then((res) => {
const params = {
...baseparams
}
return batchDownloadApi(params,
page, pageSize).then((res) => {
return res.data
}) as never
} else if (
......@@ -5023,7 +5153,7 @@ const showArrange = async (type: number, data?: PodUsOrderListData) => {
if (bool) {
try {
await ElMessageBox.confirm(
'选中排单的生产单存在多个工艺, 是否继续排单?',
'选中排单的生产单存在多个工艺类型, 是否继续排单?',
'提示',
{
confirmButtonText: '确定',
......@@ -5047,10 +5177,10 @@ function hasDifferentCraftCodeWithSet(items: ProductList[]) {
const seen = new Set()
for (const item of items) {
if (seen.has(item.craftCode)) {
if (seen.has(item.craftType)) {
if (seen.size > 1) return true
} else {
seen.add(item.craftCode)
seen.add(item.craftType)
if (seen.size > 1) return true
}
}
......
......@@ -14,7 +14,8 @@
<div class="box">
所有生产单按{{ getLabels(item.groupField) }}进行自动排单
</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>
<div class="action">
......@@ -154,31 +155,6 @@
<div
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="color: #606266; margin-right: 10px">
烫画工艺自动排版:
......@@ -195,9 +171,8 @@
--el-switch-off-color: #f56c6c;
"
/>
</div>
<div style="display: flex; align-items: center">
<div style="color: #606266; margin-right: 10px">状态:</div>
<div style="color: #606266; margin-left: 155px; margin-right: 10px">状态:</div>
<el-switch
v-model="editForm.status"
active-value="ACTIVE"
......@@ -212,20 +187,93 @@
"
/>
</div>
<div v-if="editForm.isAuto">
<div label="排版类型:">
<el-radio-group v-model="editForm.type">
<el-radio label="tiff">tiff排版</el-radio>
<el-radio label="png">png排版</el-radio>
</el-radio-group>
</div>
<div label="排版宽度:">
<el-radio-group v-model="editForm.templateWidth">
<el-radio :value="42">40+2cm</el-radio>
<el-radio :value="60">60cm</el-radio>
</el-radio-group>
<el-row :gutter="40">
<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="png">png排版</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<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="60">60cm</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<div style="color: #f56c6c; margin: 5px 0">
<!-- 注:系统限制烫画工艺一个批次不超过50个生产单! -->
注:系统限制烫画工艺排TIFF类型一个批次生产单件数不超过40,排PNG类型一个批次生产单件数不超过100!
</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>
<el-form-item>
......@@ -289,10 +337,10 @@ const editFormRef = ref<InstanceType<typeof CustomizeForm> | null>(null)
const paramsList = ref(['craft_type'])
const rulesList = ref([
{ label: '工艺', value: 'craft_type', disabled: false },
{ label: '款号', value: 'supplier_product_no', disabled: false },
{ label: '尺码', value: 'size', disabled: false },
{ label: '类型', value: 'customized_quantity', disabled: false },
{ label: '工艺类型', value: 'craft_type', disabled: false },
{ label: '库存款号', value: 'supplier_product_no', disabled: false },
{ label: '产品尺码', value: 'size', disabled: false },
{ label: '定制类型', value: 'customized_quantity', disabled: false },
])
/**
......@@ -335,6 +383,7 @@ interface rowData extends BaseForm {
interface BaseForm {
id?: number
time?: string
thArrangeMax?: number
arrangeMax?: number
isAuto?: boolean
factoryNo?: number
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment