Commit f7899557 by qinjianhui

feat: 代码优化

parent d70f0b3f
......@@ -33,7 +33,7 @@ export interface SearchForm {
size?: string
logisticsCompanyCode?: string
blocking?: boolean
standardDesignImage?: boolean
standardDesignImage?: number
}
export interface FactoryOrderNewListData {
......@@ -91,15 +91,29 @@ export interface LogListData {
export interface BatchManageData {
id: number
batchNo?: string
downloadStatus?: string
orderCount?: number
totalCount?: number
creator?: string
factoryId?: number
batchArrangeNum?: string
billType?: string
url?: string
tiffUrl?: string
syntheticStatus?: boolean
downloadStatus?: boolean
productNum?: number
materialNum?: number
craftType?: string
timesRange?: string
employeeAccount?: string
employeeId?: number
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 {
......
......@@ -35,12 +35,12 @@
clearable
style="width: 120px"
>
<ElOption label="烫画" value="TH" />
<ElOption label="直喷" value="ZP" />
<ElOption label="刺绣" value="CX" />
<ElOption label="雕刻" value="DK" />
<ElOption label="白胚" value="BP" />
<ElOption label="其他" value="QT" />
<ElOption
v-for="(item, index) in processType"
:key="index"
:value="item.value"
:label="item.label"
></ElOption>
</ElSelect>
</ElFormItem>
<ElFormItem label="下载状态">
......@@ -95,6 +95,7 @@
<div class="batch-manage-table">
<TableView
v-loading="loading"
:paginated-data="tableData"
:columns="columns"
selectionable
......@@ -109,12 +110,7 @@
</el-tag>
</template>
<template #operation="{ row }">
<ElButton
type="primary"
link
size="small"
@click="handleDownload()"
>
<ElButton type="primary" link size="small" @click="handleDownload()">
下载
</ElButton>
<ElButton type="primary" link size="small" @click="handlePrintPick()">
......@@ -128,7 +124,12 @@
>
生产单
</ElButton>
<ElButton type="warning" link size="small" @click="handleReArrange(row)">
<ElButton
type="warning"
link
size="small"
@click="handleReArrange(row)"
>
重排
</ElButton>
<ElButton type="danger" link size="small" @click="handleDelete()">
......@@ -138,7 +139,7 @@
</TableView>
</div>
<ArrangeDialog ref="arrangeDialogRef" @success="loadData" />
<ArrangeDialog ref="arrangeDialogRef" @success="refresh" />
<ElPagination
v-model:current-page="currentPage"
......@@ -148,87 +149,208 @@
layout="total, sizes, prev, pager, next, jumper"
:total="total"
style="margin: 10px auto 0"
@size-change="handlePageSizeChange"
@current-change="handleCurrentPageChange"
@size-change="onPageSizeChange"
@current-change="onCurrentPageChange"
/>
</div>
</template>
<script setup lang="ts">
<script setup lang="tsx">
import { ref, reactive, onMounted } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { getBatchManageListApi, batchDeleteApi } from '@/api/factoryOrderNew'
import type { BatchManageData } from '@/types/api/factoryOrderNew'
import type { PaginationData } from '@/types/api'
import type { CustomColumn } from '@/types/table'
import TableView from '@/components/TableView.vue'
import ArrangeDialog from './ArrangeDialog.vue'
import { getEmployeeListApi } from '@/api/common'
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 currentPage = ref(1)
const pageSize = ref(50)
const total = ref(0)
const employeeList = ref<userData[]>([])
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>[] = [
{ key: 'batchNo', prop: 'batchNo', label: '批次号', minWidth: 120 },
[
{
key: 'downloadStatus',
prop: 'downloadStatus',
label: '下载状态',
minWidth: 90,
label: '批次号',
prop: 'batchArrangeNum',
width: 120,
align: 'center',
},
{
label: '下载状态',
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: '订单数量',
minWidth: 90,
prop: 'productNum',
width: 85,
align: 'center',
},
{
key: 'totalCount',
prop: 'totalCount',
label: '全部数量',
minWidth: 90,
label: '素材数量',
width: 85,
prop: 'materialNum',
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',
prop: 'createTime',
label: '创建时间',
minWidth: 160,
sortable: true,
label: '创建人',
width: 85,
prop: 'employeeAccount',
align: 'center',
},
{
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',
label: '创建时间排序',
minWidth: 110,
sortable: true,
align: 'center',
},
{
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',
prop: 'extractTimes',
label: '提取次数排序',
minWidth: 110,
sortable: true,
label: '排版参数',
width: 140,
prop: 'composingParam',
align: 'center',
render: (item: BatchManageData) => {
return (
<div>
<span>{item.composingParam?.split(';').join('\n')}</span>
</div>
)
},
},
{
key: 'operation',
label: '操作',
minWidth: 120,
slot: 'operate',
width: 260,
align: 'center',
fixed: 'right',
slot: 'operation',
prop: 'operate',
},
],
]
const filterForm = reactive({
......@@ -244,23 +366,27 @@ const filterForm = reactive({
batchNo: '',
})
const loadData = async () => {
loading.value = true
try {
const res = await getBatchManageListApi(
{ ...filterForm },
currentPage.value,
pageSize.value,
)
const page = res.data
tableData.value = page?.records || []
total.value = page?.total || 0
} catch (_e) {
tableData.value = []
} finally {
loading.value = false
}
}
const {
loading,
currentPage,
pageSize,
total,
data: tableData,
onCurrentPageChange,
onPageSizeChange,
refresh,
} = usePageList<BatchManageData>({
initPageSize: 50,
query: async (current, size) => {
const res = await getBatchManageListApi({ ...filterForm }, current, size)
return (res.data || {
total: 0,
size,
current,
records: [],
}) as PaginationData<BatchManageData>
},
})
const loadEmployeeList = async () => {
try {
......@@ -287,14 +413,13 @@ const handleBatchDelete = async () => {
try {
await batchDeleteApi(selectedRows.value.map((r) => r.id))
ElMessage.success('删除成功')
loadData()
refresh()
} catch (e) {
const err = e as Error & { message?: string }
ElMessage.error(err?.message || '删除失败')
}
}
const handleDownload = () => {
ElMessage.info('接口待提供')
}
......@@ -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(() => {
loadEmployeeList()
loadData()
})
defineExpose({ refresh })
......
......@@ -28,7 +28,7 @@
<div class="restock-table">
<TableView
v-loading="loading"
:paginated-data="pageData"
:paginated-data="data"
:columns="columns"
serial-numberable
>
......@@ -66,29 +66,52 @@
layout="total, sizes, prev, pager, next, jumper"
:total="total"
style="margin: 10px auto 0;"
@size-change="handlePageSizeChange"
@current-change="handleCurrentPageChange"
@size-change="onPageSizeChange"
@current-change="onCurrentPageChange"
/>
</div>
</template>
<script setup lang="ts">
import { computed, ref, reactive, onMounted } from 'vue'
import { reactive } from 'vue'
import { ElMessage } from 'element-plus'
import { getRestockListApi, restockCheckApi } from '@/api/factoryOrderNew'
import type { RestockData } from '@/types/api/factoryOrderNew'
import type { PaginationData } from '@/types/api'
import type { CustomColumn } from '@/types/table'
import TableView from '@/components/TableView.vue'
import usePageList from '@/utils/hooks/usePageList'
const loading = ref(false)
const allData = ref<RestockData[]>([])
const currentPage = ref(1)
const pageSize = ref(50)
const total = ref(0)
const filterForm = reactive({
stockSku: '',
styleNo: '',
})
const pageData = computed(() => {
const start = (currentPage.value - 1) * pageSize.value
return allData.value.slice(start, start + pageSize.value)
const {
loading,
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>[] = [
......@@ -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 = () => {
currentPage.value = 1
loadData()
refresh()
}
const handleReset = () => {
filterForm.stockSku = ''
filterForm.styleNo = ''
currentPage.value = 1
loadData()
}
const handlePageSizeChange = (size: number) => {
pageSize.value = size
currentPage.value = 1
}
const handleCurrentPageChange = (page: number) => {
currentPage.value = page
refresh()
}
const handleRestockCheck = async (row: RestockData) => {
try {
await restockCheckApi(row.id)
ElMessage.success('补货校验成功')
loadData()
refresh()
} catch (e) {
const err = e as Error & { message?: string }
ElMessage.error(err?.message || '补货校验失败')
}
}
const refresh = () => {
currentPage.value = 1
loadData()
}
onMounted(() => {
loadData()
})
defineExpose({ refresh })
</script>
......
......@@ -1310,10 +1310,9 @@ const handleStatusNodeClick = (node: StatusTreeNode) => {
currentRow.value = null
productList.value = []
logList.value = []
// if (!isSpecialLayout.value) {
// onCurrentPageChange(1)
// refresh()
// }
if (!isSpecialLayout.value) {
refresh()
}
}
const toggleExpand = (node: { expanded?: boolean }) => {
node.expanded = !node.expanded
......
# 左侧状态树每个状态的页面说明:
## 待接单状态
### 页面布局
-- 分为上下两个表格,如图片1所示
### 主表格上面操作按钮栏,分别有如下按钮:
#### 确认接单
# 每个状态调用接口及字段说明:
- 当主表格选中的数据大于 0 时,可以点击该按钮,否则提示请先选择订单
- 点击确认接单按钮后,弹出 “确认接单弹框”
- 确认接单弹框打开后,需要让用户选择发货仓库,使用下拉选择,数据源是仓库列表,仓库列表接口可调用 `src/api/common.ts` 中的 `loadWarehouseListApi` 接口
- 点击确认后,调用后端的接口(后端接口暂未提供,可预留占位)
- 加全局 loading 以防重复调用接口
- 调用成功后,弹出"接单成功",并刷新主表格数据
- 调用失败后,弹出"接单失败"弹框(使用 `ElMessageBox.prompt` 显示),并显示失败原因(这里是后端返回的错误信息)
#### 取消订单
## 待接单、待创建物流、配货中、待发货、已完成、已取消、已归档
- 当主表格选中的数据大于 0 时,可以点击该按钮,否则提示请先选择订单
- 点击取消订单按钮后,弹出 “取消订单弹框”
- 取消订单弹框打开后,需要让用户选择取消原因,使用下拉选择,数据源是分别是 `协商取消``客户取消``其他`
- 点击确认后,调用后端的接口(后端接口暂未提供,可预留占位)
- 加全局 loading 以防重复调用接口
- 调用成功后,弹出"取消订单成功",并刷新主表格数据
- 调用失败后,弹出"取消订单失败"弹框(使用 `ElMessageBox.prompt` 显示),并显示失败原因(这里是后端返回的错误信息)
#### 刷新商品信息
- 主表格分页查询接口: `factory/podOrder/list_page` post 请求
- 请求参数:
- 平台: `platform`,筛选时传平台 type
- 状态: `status`
- 工艺:`craftCode`
- 库存 SKU:`thirdSkuCode`
- 款号:`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` 中的 `播种墙配货` 功能拷贝过来
## 待排单、待补胚、生产中、待配货
## 待发货
### 页面布局
-- 表格布局,页面样式如图片1所示
### 该状态中的操作栏,分别有如下按钮:
#### 称重分拣
-- 此为原有逻辑,可把 `src/views/order/podCN/index.vue` 中的 `称重分拣` 功能拷贝过来
#### 下载素材
-- 此为原有逻辑,可把 `src/views/order/podCN/index.vue` 中的 `下载素材` 功能拷贝过来
## 已完成状态
### 页面布局
-- 表格布局,页面样式如图片1所示
### 该状态中的操作栏,分别有如下按钮:
#### 下载素材
#### 订单归档
-- 当主表格选中的数据大于 0 时,可以点击该按钮,否则提示请先选择订单
-- 点击订单归档按钮后,调用后端接口(后端接口暂未提供,可预留占位)
-- 加全局 loading 以防重复调用接口
-- 调用成功后,弹出"订单归档成功",并刷新主表格数据
-- 调用失败后,弹出"订单归档失败"弹框(使用 `ElMessageBox.prompt` 显示),并显示失败原因(这里是后端返回的错误信息)
## 挂起状态
### 页面布局
-- 表格布局,页面样式如图片1所示
-- 根据挂起原因,分多Tab展示
- 放再操作栏的上面,数据源分别是`客户拦截``地址异常``其他`
- 点击Tab后,表格数据会根据Tab切换,并刷新表格数据
- 具体样式可以参考现在已有“待派单状态”Tab的样式
### 该状态中的操作栏,分别有如下按钮:
#### 取消挂起
-- 当主表格选中的数据大于 0 时,可以点击该按钮,否则提示请先选择订单
-- 点击取消挂起按钮后,调用后端接口(后端接口暂未提供,可预留占位)
-- 加全局 loading 以防重复调用接口
-- 调用成功后,弹出"取消挂起成功",并刷新主表格数据
#### 同步收货地址
-- 此为原有逻辑,可把 `src/views/order/podCN/index.vue` 中的 `同步收货地址` 功能拷贝过来
\ No newline at end of file
- 接口: `factory/podOrderBatchDownload/list_page` post 请求
- 请求参数:
- 页码: `currentPage`
- 每页条数: `pageSize`
## 批次管理
- 接口: `factory/podOrderBatchDownload/list_page` post 请求
- 请求参数:
- 页码: `currentPage`
- 每页条数: `pageSize`
- 开始时间: `startTime`
- 结束时间: `endTime`
- 创建人: `employeeId` 筛选时创建人 id
- 列表创建人: `employeeAccount`
- 工艺类型: `craftType` 传工艺类型 value
- 下载状态: `downloadStatus` 传 0 和 1,0:未下载,1:已下载
- 排版状态: `syntheticStatus` 传 0 和 1,0:否,1:是
- 自动排版: `automaticComposing` 传 0 和 1,0:否,1:是
- 批次号: `batchArrangeNumber`
- 字段:
- 开始时间: `startTime`
- 结束时间: `endTime`
- 创建人: `employeeId`
- 列表创建人: `employeeAccount`
- 工艺类型: `craftType`
- 下载状态: `downloadStatus`
- 排版状态: `syntheticStatus`
- 自动排版: `automaticComposing`
- 批次号: `batchArrangeNumber`
- 订单数量: `productNum`
- 素材数量: `materialNum`
- 规范素材: `standardDesignImage`
- 失败原因: `failReason`
- 创建时间: `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`
- 字段: 暂时还不清楚,只需空出位置,以便后续开发
- 注意:挂起状态和待接单、待接单、待创建物流、配货中、待发货、已完成、已取消、已归档页面一致,只是接口不一样,返回的返回的数据结构暂时还不清楚是否一样,所以先按照不一样处理,到挂起状态时,调用不一样的接口
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