Commit 8edcc9d1 by wuqian

Merge branch 'master' of http://47.99.244.21:9999/qinjianhui/factory_front into wq

parents 51a7f963 c65167f8
......@@ -5,6 +5,7 @@
// Generated by unplugin-auto-import
export {}
declare global {
const ElLoading: typeof import('element-plus/es')['ElLoading']
const ElMessage: typeof import('element-plus/es')['ElMessage']
const ElMessageBox: typeof import('element-plus/es')['ElMessageBox']
}
import { BasePaginationData, BaseRespData } from '@/types/api'
import axios from './axios'
import {
SearchForm,
Tab,
ShipmentOrderRes,
PodDeliveryNoteSearchForm,
DeliveryNoteData,
LogListData,
} from '@/types/api/podOrder'
import { OrderData, ShipmentForm } from '@/types/api/order'
export function getOrderTabData() {
return axios.get<never, BaseRespData<Tab[]>>(
'factory/podJomallOrder/findStateGroupList',
)
}
export function getOrderList(
data: SearchForm,
currentPage: number,
pageSize: number,
) {
return axios.post<never, BasePaginationData<OrderData>>(
'/factory/podJomallOrder/list_page ',
{ ...data, currentPage, pageSize },
)
}
export function getOrderBySubOrderNumber(orderNumber: string) {
return axios.get<never, BaseRespData<OrderData>>(
'factory/podJomallOrder/getOrderBySubOrderNumber',
{
params: {
factorySubOrderNumber: orderNumber,
},
},
)
}
// 发货保存
export function saveOrder(
sumbitSendOutList: ShipmentOrderRes[],
from: ShipmentForm,
) {
return axios.post<never, BaseRespData<never>>(
'factory/podJomallOrder/sendOut',
{ sumbitSendOutList, ...from },
)
}
// 确认生产
export function confirmProductionOrder(ids: number[]) {
return axios.post<never, BaseRespData<never>>(
'factory/podJomallOrder/confirmProduce',
ids,
)
}
// 取消
export function cancelOrderApi(id: number) {
return axios.get<never, BaseRespData<never>>(
'factory/podJomallOrder/cancel',
{ params: { id } },
)
}
// 下载素材
export function downloadMaterialApi(id: Array<number>) {
return axios.post<never, BaseRespData<Array<string>>>(
'factory/podJomallOrder/downloadByProduction',
id,
)
}
// 添加内部便签
export function addInternalTagApi(idList: number[], memo: string) {
return axios.post<never, BaseRespData<never>>(
'factory/podJomallOrder/batchAddInternalMemo',
{ idList, content: memo },
)
}
// 打印生产单
export function printOrder(ids: number[]) {
return axios.post<never, BaseRespData<never>>(
'factory/podJomallOrder/printProducePdf',
ids,
)
}
// 发货单
export function getDeliveryNoteList(
data: PodDeliveryNoteSearchForm,
currentPage: number,
pageSize: number,
) {
return axios.post<never, BasePaginationData<DeliveryNoteData>>(
'factory/podJomallShipment/list_page',
{ ...data, currentPage, pageSize },
)
}
// 操作日志
export function getLogList(id: number) {
return axios.get<never, BaseRespData<LogListData[]>>(
'factory/logPodJomallOrder/getLogByOrderId',
{
params: {
id,
},
},
)
}
export function printDeliveryNote(data: string[], userMark?: string) {
return axios.post<never, BaseRespData<never>>(
'factory/podJomallShipment/printInvoiceStatistics',
{
startTime: data && data[0],
userMark,
endTime: data && data[1],
},
)
}
export function updateRemarkApi(id: number, remark: string) {
return axios.get<never, BaseRespData<never>>(
'factory/podJomallOrder/setRemark',
{
params: {
productId:id,
remark,
},
},
)
}
<template>
<template v-if="col.subs?.length">
<ElTableColumn header-align="center" :label="col.label" :align="col.align" v-bind="col">
<RenderColumn v-for="item in col.children" :col="item" :key="item.prop">
<ElTableColumn
header-align="center"
:label="col.label"
:align="col.align"
v-bind="col"
>
<RenderColumn v-for="item in col.subs" :col="item" :key="item.prop">
<template
v-for="slot in Object.keys($slots)"
#[slot]="scope: Record<string, any>"
v-for="(_, name) of slots"
#[name]="scope: Record<string, any>"
>
<slot :name="slot" v-bind="scope" />
<slot :name="name" v-bind="scope" />
</template>
</RenderColumn>
<template #header="{ column, $index }">
......@@ -66,7 +71,7 @@
</template>
<script lang="ts" setup>
import type { Column } from 'element-plus'
import type { PropType } from 'vue'
import { type Slot, useSlots, type PropType } from 'vue'
defineProps({
col: {
......@@ -74,4 +79,5 @@ defineProps({
required: true,
},
})
const slots = useSlots() as Record<string, Slot>
</script>
......@@ -4,6 +4,7 @@
:data="paginatedData"
border
:stripe="stripe"
v-bind="attrs"
header-align="center"
height="100%"
>
......@@ -18,61 +19,51 @@
header-align="center"
>
<!-- 当type等于expand时, 配置通过h函数渲染、txs语法或者插槽自定义内容 -->
<template #default="{ row, $index }">
<template #default="scope">
<component
:is="column.render"
v-if="column.render"
:row="row"
:index="$index"
:row="scope.row"
:index="scope.$index"
/>
<slot
v-else-if="column.slot"
name="expand"
:row="row"
:index="$index"
:row="scope.row"
:index="scope.$index"
></slot>
</template>
</ElTableColumn>
<RenderColumn v-else :col="column">
<template
v-for="slot in Object.keys($slots)"
#[slot]="scope: Record<string, any>"
>
<slot :name="slot" v-bind="scope" />
<template v-for="(_, name) of slots" #[name]="scope">
<slot :name="name" v-bind="scope" />
</template>
</RenderColumn>
</template>
</ElTable>
</div>
</template>
<script setup lang="tsx">
import type { Column } from 'element-plus/lib/components/index.js'
import type { PropType } from 'vue'
<script setup lang="tsx" generic="T">
import { type Slot, useAttrs, useSlots, type PropType } from 'vue'
import type { CustomColumn } from '@/types/table'
import RenderColumn from './RenderColumn.vue'
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export type DataItemType = Record<string, any>
defineProps({
paginatedData: {
type: Array as PropType<DataItemType[]>,
type: Array,
required: true,
},
columns: {
type: Array as PropType<Column[]>,
type: Array as PropType<CustomColumn<T>>,
required: true,
},
stripe: {
type: Boolean,
default: false,
},
defaultSortProp: {
type: String,
default: '',
},
defaultSortOrder: {
type: String,
default: '',
},
})
const attrs = useAttrs()
const slots = useSlots() as Record<string, Slot>
</script>
<style lang="scss" scoped>
......
......@@ -17,6 +17,8 @@ import UserPage from '@/views/UserPage.vue'
import DeliveryNotePage from '@/views/DeliveryNotePage.vue'
import AccountStatementNote from '@/views/AccountStatementNote.vue'
import TypeseetingManagement from '@/views/typesetting/TypesettingManagement.vue'
import PodOrderList from '@/views/order/pod/index.vue'
import PodDeliveryNoteList from '@/views/order/pod/deliveryOrderList.vue'
const router = createRouter({
history: createWebHistory(),
......@@ -35,6 +37,14 @@ const router = createRouter({
component: OrderList,
},
{
path: '/pod-order/list',
component: PodOrderList,
},
{
path: '/pod-delivery-note/list',
component: PodDeliveryNoteList,
},
{
path: '/production/complete',
component: ProductionComplete,
},
......
export interface MenuItem {
index: string,
id: number,
label: string,
children?: MenuItem[],
index: string
id: number
label: string
children?: MenuItem[]
}
const menu: MenuItem[] = [
......@@ -15,19 +15,31 @@ const menu: MenuItem[] = [
index: '/order/list',
id: 2,
label: '订单',
},{
},
{
index: '/pod-order/list',
id: 7,
label: 'POD订单',
},
{
index: '/account/statement-note',
id: 3,
label: '对账单',
},{
},
{
index: '/system/delivery-note',
id: 4,
label: '发货单',
},
{
index: '/pod-delivery-note/list',
id: 8,
label: 'POD发货单',
},
{
index: '/typesetting-management/list',
id: 5,
label:'打版管理'
label: '打版管理',
},
{
index: '',
......@@ -39,8 +51,7 @@ const menu: MenuItem[] = [
id: 4,
label: '用户管理',
},
]
],
},
// {
// index: '',
......
......@@ -111,3 +111,6 @@ img {
flex: 1;
overflow: hidden;
}
.mt-10 {
margin-top: 10px;
}
......@@ -24,7 +24,6 @@ export interface Tab {
quantity: number
}
export interface OrderData {
id: number
namespace?: string
......@@ -71,6 +70,7 @@ export interface OrderData {
sourceType?: string
moreable?: boolean
manuscriptStatus?: number
factoryOrderNumber?: string | undefined
}
export interface ProductList {
......@@ -99,6 +99,11 @@ export interface ProductList {
version?: string | number
passNum?: number
notPassNum?: number
sendOutQuantity?: number
factoryOrderNumber?: string | undefined
thirdSubOrderNumber?: string
namespace?: string
factorySubOrderNumber?: string
}
export interface MemoList {
......
export interface Tab {
status?: string
statusName?: string
quantity?: number
}
export interface SearchForm {
status?: string | null
factorySubOrderNumber?: string
factoryOrderNumber?: string
shipmentNumber?: string
order?: string
prop?: string
shopNumber?: string
shopNumbers?: string[]
sku?: string
timeType?: number | null
startTime?: string | null
endTime?: string | null
internalMemo?: string
}
export interface OrderData {
id: number
moreable: boolean
thirdOrderNumber: string
factoryOrderNumber: string
factoryOnlineId: number | null
factoryNo: number | null
factoryCode: string | null
status: string | number
weight: number | null
outCurrencyCode: string | null
factoryProductAmount: number | null
thirdProductAmount: number | null
productAmount: number | null
carriageAmount: number | null
totalAmount: number | null
productNum: number | null
trackStatus: string | null
finishTime: string | null
paymentTime: string | null
startStockingTime: string | null
lanshouName: string | null
lanshouPhone: string | null
lanshouRegion: string | null
lanshouAddress: string | null
lanshouPost: string | null
manuscriptUrl: string | null
manuscriptStatus: number | null
createTime: string | null
updateTime: string | null
remark: string | null
userMark: string | null
namespace: string | null
productList: ProductList[]
internalMemoList: string | null
}
export interface ProductList {
id: number
podOrderId?: number
thirdSubOrderNumber?: string
factorySubOrderNumber?: string
shopNumber?: string
baseSku?: string
productName?: string
variantSku?: string
variantImage?: string
imageAry?: string
designImages?: string
process?: string
num?: number
shipmentNu?: number
costPrice?: number
price?: number
processPrice?: number
weight?: number
version?: number
remark?: string
createTime?: string
updateTime?: string
}
export interface ShipmentOrderRes {
factoryOrderNumber?: string
thirdSubOrderNumber?: string
sendOutQuantity?: number
version?: number
namespace?: string
}
export interface PodDeliveryNoteSearchForm {
startTime?: string
endTime?: string
shipmentNumber?: string
factoryOrderNumber?: string
factorySubOrderNumber?: string
shippingWay?: number
logisticsTracking?: string
lanshouName?: string
sku?: string
userMark?: string
}
export interface DeliveryNoteData {
id: number
factoryOrderNumber?: string
factoryNo?: number
shipmentNumber?: string
shipmentUid?: string
shippingWay?: number
carriageAmount?: string
carriageName?: string
logisticsTracking?: string
shippingStatus?: string
lanshouName?: string
lanshouPhone?: string
lanshouRegion?: string
lanshouAddress?: string
lanshouPost?: string
updateTime?: string
createTime?: string
shipmentDetails?: ShipmentDetail[]
}
export interface ShipmentDetail {
id: number
shipmentId?: number
podOrderId?: number
podOrderNumber?: string
subOrderNumber?: string
baseSku?: string
variantSku?: string
variantImage?: string
shipmentNum?: number
updateTime?: string
createTime?: string
}
export interface LogListData {
id: number
bizId?: number
userId?: number
employeeName?: string
description?: string
createTime?: string
}
export interface LogListData {
id: number
bizId?: number
userId?: number
employeeName?: string
description?: string
createTime?: string
}
import type { Column as ElColumn } from 'element-plus/lib/components/index.js'
interface Column<D> extends Omit<ElColumn, 'width'> {
width?: number | string
minWidth?: number | string
key?: string
slot?: string
headerSlot?: string
headerRender?: (scope: { column: never; index: number }) => JSX.Element
render?: (scope: { row: D; index: number }) => JSX.Element
formatDate?: (row: D) => string
children?: Column<D>[]
subs?: Column<D>[]
buttons?: {
text: string
type?: 'primary' | 'success' | 'warning' | 'danger' | 'info'
onClick: (row: D) => void
show?: (row: D) => boolean
}[]
}
export interface TableProps<T> {
data: T[]
columns: Column<T>[]
stripe?: boolean
border?: boolean
height?: string | number
maxHeight?: string | number
showPagination?: boolean
pageSize?: number
currentPage?: number
total?: number
loading?: boolean
rowKey?: string | ((row: T) => string)
selectable?: boolean
selectedRows?: T[]
}
export type CustomColumn<D> = Column<D>
......@@ -38,14 +38,14 @@ export default function usePageList<T>(options: UsePageListOptions<T>) {
currentPage.value = res.page!.current
pageSize.value = res.page!.size
data.value = res.page!.records
}else{
} else {
total.value = res.total
currentPage.value = res.current
pageSize.value = res.size
data.value = res.records
}
} catch (error) {
console.error(error)
// showError(error)
} finally {
loading.value = false
......
......@@ -72,13 +72,26 @@
</span>
</div>
<div
:title="item.subOrderNumber || ''"
:title="
isPod ? item.factorySubOrderNumber || '' : item.subOrderNumber || ''
"
class="order-list-expand_item_info_title"
>
<span class="order-list-expand_item_label">生产单号:</span>
<span class="order-list-expand_item_value"
>{{ item.subOrderNumber || '--'
}}<el-icon class="icon" @click="copy(item.subOrderNumber || '')"
>{{
isPod
? item.factorySubOrderNumber || ''
: item.subOrderNumber || '--'
}}<el-icon
class="icon"
@click="
copy(
isPod
? item.factorySubOrderNumber || ''
: item.subOrderNumber || '',
)
"
><DocumentCopy
/></el-icon>
</span>
......@@ -108,8 +121,10 @@
</span>
</div>
<div
v-if="!isPod"
:title="item.material || ''"
class="order-list-expand_item_info_title"
>
<span class="order-list-expand_item_label">材质:</span>
<span class="order-list-expand_item_value"
......@@ -155,20 +170,20 @@
(item.num || 0) - ((item.shipmentNum || 0) - (item.notPassNum || 0))
}}</span>
</div>
<div class="order-list-expand_item_info_title">
<div v-if="!isPod" class="order-list-expand_item_info_title">
<span class="order-list-expand_item_label">待质检:</span>
<span class="order-list-expand_item_value">{{
(item.shipmentNum || 0) -
((item.passNum || 0) + (item.notPassNum || 0))
}}</span>
</div>
<div class="order-list-expand_item_info_title">
<div v-if="!isPod" class="order-list-expand_item_info_title">
<span class="order-list-expand_item_label">质检(通过):</span>
<span class="order-list-expand_item_value">{{
item.passNum || 0
}}</span>
</div>
<div class="order-list-expand_item_info_title">
<div v-if="!isPod" class="order-list-expand_item_info_title">
<span class="order-list-expand_item_label">质检(不通过):</span>
<span class="order-list-expand_item_value">{{
item.notPassNum || 0
......@@ -214,7 +229,11 @@ defineProps({
default: false,
},
status: {
type: Number,
type: [Number, String],
},
isPod: {
type: Boolean,
default: false,
},
})
interface InterItem {
......
......@@ -6,7 +6,7 @@
<div class="shipment-info-item-header--title">
<span class="shipment-info-item-header__label">主单号:</span>
<span class="shipment-info-item-header__value">{{
o.orderNumber || '--'
isPod ? o.factoryOrderNumber || '--' : o.orderNumber || '--'
}}</span>
</div>
<div class="shipment-info-item-header--title">
......@@ -60,7 +60,10 @@
:key="item.id"
:data-id="item.id"
:class="{
'active-row': item.subOrderNumber === currentRow.subOrderNumber,
'active-row': isPod
? item.factorySubOrderNumber ===
currentRow.factorySubOrderNumber
: item.subOrderNumber === currentRow.subOrderNumber,
}"
class="shipment-info-item-content-item"
@click="onRowClick(item, o)"
......@@ -74,7 +77,11 @@
</div>
<div class="shipment-info-item-content-item--info">
<span class="label">生产单号:</span>
<span class="value">{{ item.subOrderNumber || '--' }}</span>
<span class="value">{{
isPod
? item.factorySubOrderNumber || '--'
: item.subOrderNumber || '--'
}}</span>
</div>
<div
class="shipment-info-item-content-item--info"
......@@ -148,8 +155,13 @@
<span class="order-norm-label" style="margin-right: 6px">
订单号:
</span>
<span class="order-norm-value" :title="currentRow.orderNumber">
{{ currentRow.orderNumber }}
<span
class="order-norm-value"
:title="
isPod ? currentRow.factoryOrderNumber : currentRow.orderNumber
"
>
{{ isPod ? currentRow.factoryOrderNumber : currentRow.orderNumber }}
</span>
</div>
</div>
......@@ -168,7 +180,7 @@ import { showConfirm } from '@/utils/ui'
const emit = defineEmits<{
(e: 'changeCurrentRow', v: ProductList): void
}>()
defineProps({
const props = defineProps({
orderList: {
type: Array as PropType<OrderData[]>,
default: () => [],
......@@ -177,6 +189,10 @@ defineProps({
type: Object as PropType<ProductList>,
default: () => {},
},
isPod: {
type: Boolean,
default: false,
},
})
const listRef = ref<HTMLDivElement>()
......@@ -192,7 +208,11 @@ defineExpose<ShipmentType>({
})
const onRowClick = (item: ProductList, o: OrderData) => {
item.orderNumber = o.orderNumber
if (props.isPod) {
item.factoryOrderNumber = o.factoryOrderNumber
} else {
item.orderNumber = o.orderNumber
}
emit('changeCurrentRow', item)
}
const onShipment = async (item: ProductList) => {
......
import {
ICompareObjects,
OrderData,
ProductList,
ShipmentForm,
} from '@/types/api/order'
import { useValue } from '@/utils/hooks/useValue'
import { nextTick, ref } from 'vue'
import { ShipmentType } from '../Shipment.vue'
import { getOrderBySubOrderNumber, saveOrder } from '@/api/podOrder'
import { ShipmentOrderRes } from '@/types/api/podOrder'
export default function useShipment(callback?: () => void) {
const [orderList, resetOrderList] = useValue<OrderData[]>([])
const [shipmentForm, resetShipmentForm] = useValue<ShipmentForm>({
shippingWay: '',
carriageName: '',
logisticsTracking: '',
carriageAmount: '',
namespace: '',
})
const firstResult = ref<ICompareObjects | null>(null)
const shipmentFormRef = ref()
const productionOrderNumber = ref('')
const shipmentVisible = ref(false)
const isLock = ref(false)
const inputRef = ref()
// const currentRow = ref<ProductList>()
const currentRow = ref<ProductList | undefined>(undefined)
const shipmentLoading = ref(false)
const shipmentOrderRef = ref<ShipmentType>()
const searchShipmentByOrderNumber = async () => {
const code = productionOrderNumber.value
shipmentVisible.value = true
if (!code) {
isLock.value = false
inputRef.value.focus()
playAudio('picking_warning')
return ElMessage({
message: '请录入生产单号',
type: 'warning',
offset: window.innerHeight / 2,
})
}
let rowData
const code1 = code?.split('_')[0]
for (const item of orderList.value) {
rowData = item.productList?.find((jj) => jj.factorySubOrderNumber === code1)
if (rowData) {
rowData.factoryOrderNumber = item.factoryOrderNumber
break
}
}
if (rowData) {
currentRow.value = rowData
const unShipmentNum =
(rowData.num || 0) -
(rowData.shipmentNum || 0) +
(rowData.notPassNum || 0)
if (unShipmentNum > (rowData.count || 0)) {
rowData.count = (rowData.count || 0) + 1
playAudio('picking_check_success')
} else {
playAudio('picking_beyond')
ElMessage({
message: '拣货数不能大于未发数',
type: 'warning',
offset: window.innerHeight / 2,
})
}
inputRef.value.focus()
productionOrderNumber.value = ''
isLock.value = false
await nextTick()
if (shipmentOrderRef.value) {
const rowEl = shipmentOrderRef.value.listRef?.querySelector(
`div[data-id="${rowData.id}"]`,
)
if (!rowEl) return
rowEl.scrollIntoView()
}
} else {
getPackingData(code)
}
}
const getPackingData = async (code: string) => {
try {
shipmentLoading.value = true
const res = await getOrderBySubOrderNumber(code)
if (res.data) {
if (firstResult.value === null) {
firstResult.value = res.data
canJoin(res.data, code)
} else {
if (!compareObjects(firstResult.value, res.data)) {
ElMessageBox.confirm('不能加入,地址信息不一致!', '重要提示', {
confirmButtonText: '确定',
type: 'warning',
}).catch(() => {})
} else {
canJoin(res.data, code)
}
}
}
inputRef.value.focus()
productionOrderNumber.value = ''
isLock.value = false
} catch (e) {
productionOrderNumber.value = ''
isLock.value = false
inputRef.value.focus()
//showError(e)
playAudio('picking_search_error')
} finally {
shipmentLoading.value = false
}
}
const canJoin = async (data: OrderData, code: string) => {
const code1 = code?.split('_')[0]
for (const item of data.productList || []) {
item.count = 0
if (item.factorySubOrderNumber === code1) {
item.count = 1
currentRow.value = item
if (currentRow.value) {
currentRow.value.factoryOrderNumber = data.factoryOrderNumber
}
}
}
const index = orderList.value.findIndex((item) => item.id === data.id)
if (index === -1) {
orderList.value.unshift(data)
}
playAudio('picking_search_success')
await nextTick()
if (shipmentOrderRef.value) {
const rowEl = shipmentOrderRef.value.listRef?.querySelector(
`div[data-id="${currentRow.value?.id}"]`,
)
if (!rowEl) return
rowEl.scrollIntoView()
}
}
const compareObjects = (
obj1: ICompareObjects,
obj2: ICompareObjects,
): boolean => {
const keysToCompare: (keyof ICompareObjects)[] = [
'lanshouAddress',
'lanshouName',
'lanshouPhone',
'lanshouPost',
'lanshouRegion',
]
return keysToCompare.every((key) => obj1[key] === obj2[key])
} //将后面的查询结果和第一次的结果进行比较,相同才能加入,反之不能
const saveShipment = async () => {
if (orderList.value.length === 0) {
return ElMessage({
message: '请选择订单',
type: 'warning',
offset: window.innerHeight / 2,
})
}
try {
await shipmentFormRef.value?.validate()
} catch {
return
}
const isEqual = orderList.value.some(
(item) => item.namespace === orderList.value[0].namespace,
)
if (!isEqual) {
ElMessage({
message: '请选择同一工厂的订单',
type: 'warning',
offset: window.innerHeight / 2,
})
return
}
const data: ShipmentOrderRes[] = []
orderList.value.forEach((item) => {
shipmentForm.value.namespace = item.namespace
const order = []
for (const jj of item.productList || []) {
if (jj.count === 0) continue
const subOrder = {
factorySubOrderNumber: jj.factorySubOrderNumber,
thirdSubOrderNumber: jj.thirdSubOrderNumber,
sendOutQuantity: jj.count,
version: jj.version as number,
namespace: item.namespace,
}
order.push(subOrder)
}
if (order) {
data.push(...order)
}
})
try {
const res = await saveOrder(data, shipmentForm.value)
fetch(res.message || '')
.then((response) => {
// 确保响应是 OK
if (!response.ok) {
throw new Error('网络响应错误')
}
// 返回图片的二进制数据(Blob)
return response.blob()
})
.then((blob) => {
const a = document.createElement('a')
a.href = window.URL.createObjectURL(blob)
a.target = '_blank'
a.download = (res.message as string).split('/')[
(res.message as string).split('/').length - 1
]
a.click()
})
.catch((error) => {
console.error('下载图片时出错:', error)
})
ElMessage.success('发货成功')
shipmentVisible.value = false
callback && callback()
} catch (e) {
// showError(e)
}
}
const confirmDelivery = async () => {
shipmentVisible.value = true
productionOrderNumber.value = ''
firstResult.value = null //弹窗打开前先清空第一次的结果
resetOrderList()
resetShipmentForm()
}
const onShipmentDialogOpened = () => {
inputRef.value?.focus()
shipmentFormRef.value?.clearValidate()
}
/**
* 拣货
* picking_warning 输入错误
* picking_beyond SKU数量超出
* picking_check_success 验证成功
* picking_search_error 查询失败
* picking_search_success 查询成功
*/
const playAudio = (key: string) => {
const audio = new Audio()
const audioPath = new URL(
`../../../assets/audio/${key}.mp3`,
import.meta.url,
).href
audio.src = audioPath
audio.play()
}
return {
shipmentFormRef,
shipmentOrderRef,
productionOrderNumber,
shipmentVisible,
inputRef,
shipmentForm,
currentRow,
shipmentLoading,
orderList,
searchShipmentByOrderNumber,
saveShipment,
confirmDelivery,
onShipmentDialogOpened,
}
}
......@@ -1163,17 +1163,17 @@ const {
{
...searchForm.value,
status: statusCode.value,
timeType: timeRange.value.length > 0 ? searchForm.value.timeType : null,
timeType: timeRange.value && timeRange.value.length > 0 ? searchForm.value.timeType : null,
startTime:
searchForm.value.timeType === ''
? null
: timeRange.value.length > 0
: timeRange.value && timeRange.value.length > 0
? timeRange.value[0]
: null,
endTime:
searchForm.value.timeType === ''
? null
: timeRange.value.length > 0
: timeRange.value && timeRange.value.length > 0
? timeRange.value[1]
: null,
},
......
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