Commit db1677bd by wusiyi

feat: 播种墙配货抽组件

parent 24f36f38
...@@ -54,14 +54,15 @@ declare module 'vue' { ...@@ -54,14 +54,15 @@ declare module 'vue' {
ElTag: typeof import('element-plus/es')['ElTag'] ElTag: typeof import('element-plus/es')['ElTag']
ElTimeline: typeof import('element-plus/es')['ElTimeline'] ElTimeline: typeof import('element-plus/es')['ElTimeline']
ElTimelineItem: typeof import('element-plus/es')['ElTimelineItem'] ElTimelineItem: typeof import('element-plus/es')['ElTimelineItem']
ElTimePicker: typeof import('element-plus/es')['ElTimePicker']
ElTooltip: typeof import('element-plus/es')['ElTooltip'] ElTooltip: typeof import('element-plus/es')['ElTooltip']
ElTree: typeof import('element-plus/es')['ElTree'] ElTree: typeof import('element-plus/es')['ElTree']
ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect']
ElUpload: typeof import('element-plus/es')['ElUpload'] ElUpload: typeof import('element-plus/es')['ElUpload']
Icon: typeof import('./src/components/Icon.vue')['default'] Icon: typeof import('./src/components/Icon.vue')['default']
ImageView: typeof import('./src/components/ImageView.vue')['default'] ImageView: typeof import('./src/components/ImageView.vue')['default']
LogList: typeof import('./src/components/LogList.vue')['default'] LogList: typeof import('./src/components/LogList.vue')['default']
NavMenu: typeof import('./src/components/NavMenu.vue')['default'] NavMenu: typeof import('./src/components/NavMenu.vue')['default']
PodMakeOrder: typeof import('./src/components/PodMakeOrder/index.vue')['default']
RenderColumn: typeof import('./src/components/RenderColumn.vue')['default'] RenderColumn: typeof import('./src/components/RenderColumn.vue')['default']
RightClickMenu: typeof import('./src/components/RightClickMenu.vue')['default'] RightClickMenu: typeof import('./src/components/RightClickMenu.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink'] RouterLink: typeof import('vue-router')['RouterLink']
......
/**
* 播种墙相关接口
*/
import axios from './axios'
import { BaseRespData } from '@/types/api'
import { PodMakeOrderData } from '@/types/api/podMakeOrder'
// 获取箱子列表
export function getPodBoxListApi(
url: string,
factoryNo: number | string,
warehouseId: number | string,
) {
return axios.get<never, BaseRespData<PodMakeOrderData[]>>(url, {
params: { factoryNo, warehouseId },
})
}
// 打印普通拣货单
export function printNormalPdf(url: string, ids: string) {
return axios.get<never, BaseRespData<string>>(url, { params: { ids } })
}
// 获取装箱数据
export function getPackingDataApi(
url: string,
params: {
podJomallCnNo?: string
podJomallUsNo?: string
podOperationNo?: string
box?: number | null
factoryNo?: number
warehouseId?: number | string
},
) {
return axios.get<never, BaseRespData<PodMakeOrderData>>(url, {
params,
})
}
// 清空箱子
export function clearBoxApi(
url: string,
factoryNo: number,
box: number | null,
warehouseId: number | string,
) {
return axios.get<never, BaseRespData<never>>(url, {
params: { factoryNo, box, warehouseId },
})
}
// 清空所有箱子
export function clearAllBoxApi(
url: string,
warehouseId: string | number,
factoryNo: string | number | undefined,
) {
return axios.get<never, BaseRespData<never>>(url, {
params: { warehouseId, factoryNo },
})
}
// 提交打单 cn
export function submitInspectionCnApi(
url: string,
data: { id: number; version?: number }[],
warehouseId: number | string,
boxIndex?: number | null,
) {
const params = new URLSearchParams()
// 先放 warehouseId,再放 boxIndex
params.set('warehouseId', String(warehouseId))
if (boxIndex !== undefined && boxIndex !== null) {
params.set('box', String(boxIndex))
}
return axios.post<never, BaseRespData<never>>(`${url}?${params.toString()}`, {
orderParamList: data,
})
}
// 提交打单 us
export function submitInspectionUsApi(
url: string,
params: {
orderId?: number
orderParamList?: { id?: number }[]
},
boxIndex: number | null,
warehouseId: number | string,
) {
return axios.post<never, BaseRespData<never>>(
`${url}?box=${boxIndex}&warehouseId=${warehouseId}`,
params,
)
}
import type { CustomColumn } from '@/types/table'
import type { ProductList } from '@/types/api/podMakeOrder'
export type PodMakeOrderType = 'cn' | 'us' | 'new'
export const operationStatusMap: Record<string, string> = {
PENDING_PACKING: '待配货',
PENDING_SCHEDULE: '待排单',
PENDING_REPLENISH: '待补胚',
PENDING_PICK: '待拣胚',
IN_PRODUCTION: '生产中',
PACKING_COMPLETED: '配货完成',
COMPLETED: '已完成',
CANCELLED: '已取消',
ARCHIVE: '已归档',
}
export type OperationStatusTagConfig = {
type?: 'success' | 'warning' | 'info' | 'danger' | 'primary'
style?: { backgroundColor: string; color: string; borderColor: string }
}
export const operationStatusTagMap: Record<string, OperationStatusTagConfig> = {
PENDING_PACKING: { type: 'warning' },
PENDING_SCHEDULE: { type: 'info' },
PENDING_REPLENISH: {
style: {
backgroundColor: '#E6A23C',
color: '#FFFFFF',
borderColor: '#E6A23C',
},
},
PENDING_PICK: {
style: {
backgroundColor: '#409EFF',
color: '#FFFFFF',
borderColor: '#409EFF',
},
},
IN_PRODUCTION: { type: 'primary' },
PACKING_COMPLETED: { type: 'success' },
COMPLETED: { type: 'success' },
CANCELLED: { type: 'danger' },
ARCHIVE: {
style: {
backgroundColor: '#909399',
color: '#FFFFFF',
borderColor: '#909399',
},
},
}
export function getPodOrderDetailsColumns(options: {
orderNoName: string
type: PodMakeOrderType
}): CustomColumn<ProductList>[] {
const { orderNoName, type } = options
return [
{
label: '图片',
prop: 'image',
width: 250,
slot: 'image',
align: 'center',
fixed: 'left',
},
{
label: orderNoName,
align: 'center',
slot: 'productionOrderNo',
showOverflowTooltip: true,
width: type === 'new' ? 180 : 150,
},
{
label: '库存 SKU',
prop: 'thirdSkuCode',
width: 180,
align: 'center',
showOverflowTooltip: true,
},
{
label: 'variant SKU',
prop: 'variantSku',
width: 160,
align: 'center',
showOverflowTooltip: true,
},
{
label: '商品名称',
prop: 'productName',
minWidth: 100,
showOverflowTooltip: true,
},
{
label: '购买数量',
prop: 'purchaseNumber',
width: 90,
align: 'center',
fixed: 'right',
},
{
label: '拣货数量',
prop: 'count',
width: 90,
align: 'center',
fixed: 'right',
},
{
label: '验证结果',
slot: 'verifyResult',
width: 90,
align: 'center',
fixed: 'right',
},
]
}
import { getWsUrl } from '@/api/axios'
import type { PodMakeOrderStore } from '@/types/api/podMakeOrder'
interface NotificationOptions {
body: string
icon: string
data: string
requireInteraction: boolean
}
export interface WebSocketMessage {
code?: string
fromUser?: number
content?: string
type?: string
data?: unknown
[key: string]: string | unknown | undefined
}
interface InitOptions {
account: string
factoryNo: string
orderStore: PodMakeOrderStore
}
type MessageCallback = (
data: WebSocketMessage,
sendSystemMessage: (msg: string) => void,
) => void
type OpenCallback = () => void
function sendSystemMessage(msg: string): void {
if (window.Notification && Notification.permission === 'granted') {
const notificationOptions: NotificationOptions = {
body: msg,
icon: './favicon.ico',
data: 'I like peas.',
requireInteraction: true,
}
const n = new Notification('消息通知', notificationOptions)
n.onclick = (event: Event) => {
event.preventDefault()
window.open('/home', '_blank')
}
setTimeout(() => {
n.close()
}, 10000)
}
}
const showReconnectingMsg = (): void => {
ElMessage.warning('消息服务已断开,正在重新连接,请稍候')
}
class Im {
private socket: WebSocket | null = null
private _wsUrl: string = ''
private _orderStore?: PodMakeOrderStore
private _onMessageCallback?: MessageCallback
private _onOpenCallback?: OpenCallback
private _heartbeatTimer: number | null = null
private _heartbeatTimeoutTimer: number | null = null
private _reconnectingTimer: number | null = null
private num: number = 0
constructor() {
this._onWsOpen = this._onWsOpen.bind(this)
this._onWsMessage = this._onWsMessage.bind(this)
this._onWsClose = this._onWsClose.bind(this)
this._onWsError = this._onWsError.bind(this)
}
private _onWsOpen(): void {
console.log('服务器连接成功')
localStorage.setItem('socket_connect', 'online')
this._onOpenCallback?.()
this._startHeartbeat()
}
private _onWsMessage(event: MessageEvent): void {
let data: WebSocketMessage = {}
if (typeof event.data === 'string') {
try {
data = JSON.parse(event.data)
} catch (error) {
data = {}
}
}
this._onHeartbeatMessage()
this._onMessageCallback?.(data, sendSystemMessage)
}
private _onWsClose(): void {
console.log('服务器关闭')
this._destroyWebSocket(true)
}
private _onWsError(): void {
console.log('连接出错')
this._destroyWebSocket(true)
}
private _sendHeartbeat(): void {
if (!this.socket) return
this.send({ code: 'HEALTH' })
if (this._heartbeatTimeoutTimer) {
window.clearTimeout(this._heartbeatTimeoutTimer)
}
this._heartbeatTimeoutTimer = window.setTimeout(() => {
this._destroyWebSocket(true)
}, 5 * 1000)
}
private _onHeartbeatMessage(): void {
console.log('心跳')
this._orderStore?.setSocketConnect('online')
if (this._heartbeatTimeoutTimer) {
window.clearTimeout(this._heartbeatTimeoutTimer)
}
}
private _startHeartbeat(): void {
this._stopHeartbeat()
this._sendHeartbeat()
this._heartbeatTimer = window.setInterval(
() => this._sendHeartbeat(),
10 * 1000,
)
}
private _stopHeartbeat(): void {
if (this._heartbeatTimer) {
window.clearInterval(this._heartbeatTimer)
}
if (this._heartbeatTimeoutTimer) {
window.clearTimeout(this._heartbeatTimeoutTimer)
}
}
private _scheduleReconnect(): void {
if (!this.num) this.num = 0
this.num++
if (this.num > 5) {
ElMessage.warning('尝试重连消息服务失败,请刷新重试')
return
}
showReconnectingMsg()
this._reconnectingTimer = window.setTimeout(() => {
this._createWebSocket()
}, 2000)
}
private _destroyWebSocket(reconnect?: boolean): void {
if (!this.socket) return
this._stopHeartbeat()
if (this._reconnectingTimer) {
window.clearTimeout(this._reconnectingTimer)
}
this.socket.removeEventListener('open', this._onWsOpen)
this.socket.removeEventListener('message', this._onWsMessage)
this.socket.removeEventListener('close', this._onWsClose)
this.socket.removeEventListener('error', this._onWsError)
this.socket.close(1000)
this.socket = null
localStorage.removeItem('socket_connect')
this._orderStore?.setSocketConnect('offline')
if (reconnect) this._scheduleReconnect()
}
private _createWebSocket(): void {
if (!this._wsUrl) return
const socket = new WebSocket(this._wsUrl)
socket.addEventListener('open', this._onWsOpen)
socket.addEventListener('message', this._onWsMessage)
socket.addEventListener('close', this._onWsClose)
socket.addEventListener('error', this._onWsError)
this.socket = socket
}
init(
options: InitOptions,
msgfunc?: MessageCallback,
openfunc?: OpenCallback,
): Promise<void> {
return new Promise((resolve, reject) => {
const { account, factoryNo, orderStore } = options
this._orderStore = orderStore
const socket_connect = localStorage.getItem('socket_connect')
if (socket_connect === 'online') {
resolve()
return
}
if (!window.WebSocket) {
reject(new Error('WebSocket is not supported'))
return
}
this._onMessageCallback = msgfunc
this._onOpenCallback = () => {
openfunc?.()
resolve()
}
this._destroyWebSocket()
this._wsUrl = `${getWsUrl()}/ws/websocket/${factoryNo}/${account}`
this._createWebSocket()
})
}
send(options: WebSocketMessage): void {
this.socket?.send(JSON.stringify(options))
}
close(): void {
this._destroyWebSocket()
}
}
export default new Im()
...@@ -61,6 +61,25 @@ export interface ProductList { ...@@ -61,6 +61,25 @@ export interface ProductList {
productName?: string productName?: string
} }
export interface PodMakeOrderSetPodBoxListParams {
boxList: PodMakeOrderData[] | OrderData | null | undefined
factoryNo: number | string
warehouseId?: number | string
box?: number
data?: OrderData
url?: string
fromUser?: number
}
// 播种墙配货store
export interface PodMakeOrderStore {
socketConnect?: string
podBoxList?: PodMakeOrderData[]
podBoxIndex?: number | null
setPodBoxList: (content: PodMakeOrderSetPodBoxListParams) => Promise<void>
setSocketConnect: (connect: string) => void
}
export interface LogisticBill { export interface LogisticBill {
expressSheet?: string expressSheet?: string
salesPlatform?: string salesPlatform?: string
......
...@@ -897,14 +897,24 @@ ...@@ -897,14 +897,24 @@
<PodMakeOrder <PodMakeOrder
v-model="podOrderVisible" v-model="podOrderVisible"
type="new"
title="配货打单"
:print-order="printOrder" :print-order="printOrder"
:warehouse-list="warehouseList" :warehouse-list="warehouseList"
:is-new-order="true" warehouse-storage-key="localNewWarehouseId"
ws-open-code="STARTORDERNEWPOD" order-no-name="操作单号"
ws-close-code="ENDORDERNEWPOD" :order-store="orderStore"
init-url="factory/podOrderPacking/local/getPodBoxOrderDetails" :is-clear-all="true"
:ws-codes="{ open: 'STARTORDERNEWPOD', close: 'ENDORDERNEWPOD' }"
:api-urls="{
getPodBoxList: 'factory/podOrderPacking/local/getPodBoxOrderDetails',
clearBox: 'factory/podOrderPacking/local/delPodBoxOrderDetailsByBox',
getPackingData: 'factory/podOrderPacking/local/putPackingSafe',
submitInspection: 'factory/podOrderPacking/podPrintOrderComplete',
printNormalPdf: 'factory/podJomallOrderUs/printNormalPickPdf',
clearAllBox: 'factory/podOrderPacking/local/delPodBoxOrderDetails',
}"
@set-printer="handlePrinterChange" @set-printer="handlePrinterChange"
@set-warehouse-id="handleWarehouseIdChange"
@refresh="() => refreshCurrentView({ isRefreshTree: true })" @refresh="() => refreshCurrentView({ isRefreshTree: true })"
/> />
<PodDistributionOrder <PodDistributionOrder
...@@ -1012,7 +1022,7 @@ import { ...@@ -1012,7 +1022,7 @@ import {
import { getLogisticsWayApi } from '@/api/podUsOrder' import { getLogisticsWayApi } from '@/api/podUsOrder'
import BigNumber from 'bignumber.js' import BigNumber from 'bignumber.js'
import { filePath } from '@/api/axios' import { filePath } from '@/api/axios'
import { OrderData } from '@/types/api/podMakeOrder' import { OrderData, type PodMakeOrderStore } from '@/types/api/podMakeOrder'
import useLodop, { LODOPObject } from '@/utils/hooks/useLodop' import useLodop, { LODOPObject } from '@/utils/hooks/useLodop'
import LogisticsWaySelect from '@/views/logistics/components/LogisticsWaySelect' import LogisticsWaySelect from '@/views/logistics/components/LogisticsWaySelect'
import ProductTypeFilter from './component/ProductTypeFilter.vue' import ProductTypeFilter from './component/ProductTypeFilter.vue'
...@@ -1030,7 +1040,8 @@ import CreateLogisticDialog from '@/views/order/components/CreateLogisticDialog. ...@@ -1030,7 +1040,8 @@ import CreateLogisticDialog from '@/views/order/components/CreateLogisticDialog.
import UpdateCustomDeclarationInfoDialog from '@/views/order/components/UpdateCustomDeclarationInfoDialog.vue' import UpdateCustomDeclarationInfoDialog from '@/views/order/components/UpdateCustomDeclarationInfoDialog.vue'
import WeightDialog from '@/views/order/components/WeightDialog.vue' import WeightDialog from '@/views/order/components/WeightDialog.vue'
import FastProduction from '@/views/order/components/FastProduction.vue' import FastProduction from '@/views/order/components/FastProduction.vue'
import PodMakeOrder from '@/views/order/podUs/PodMakeOrder.vue' import PodMakeOrder from '@/components/PodMakeOrder/index.vue'
import useOrderStore from '@/store/order'
import PodDistributionOrder from '@/views/order/podCN/PodDistributionOrder.vue' import PodDistributionOrder from '@/views/order/podCN/PodDistributionOrder.vue'
import PrintWarehouseSkuTag from '@/views/order/components/printWarehouseSkuTag.vue' import PrintWarehouseSkuTag from '@/views/order/components/printWarehouseSkuTag.vue'
import UpdateAddress from '@/views/order/podCN/components/updateAddress.vue' import UpdateAddress from '@/views/order/podCN/components/updateAddress.vue'
...@@ -2054,6 +2065,7 @@ const submitArrangeFinishApi = (params: { ...@@ -2054,6 +2065,7 @@ const submitArrangeFinishApi = (params: {
const handleSingleConfirmOrder = (row: FactoryOrderNewListData) => { const handleSingleConfirmOrder = (row: FactoryOrderNewListData) => {
confirmOrderDialogRef.value?.open([row.id]) confirmOrderDialogRef.value?.open([row.id])
} }
const orderStore = useOrderStore() as unknown as PodMakeOrderStore
const podOrderVisible = ref(false) const podOrderVisible = ref(false)
const podDistributionOrderVisible = ref(false) const podDistributionOrderVisible = ref(false)
const sheetPrinter = ref('') const sheetPrinter = ref('')
...@@ -2061,9 +2073,6 @@ const handlePrinterChange = (value: string) => { ...@@ -2061,9 +2073,6 @@ const handlePrinterChange = (value: string) => {
sheetPrinter.value = value sheetPrinter.value = value
localStorage.setItem('sheetPrinter', JSON.stringify(value)) localStorage.setItem('sheetPrinter', JSON.stringify(value))
} }
const handleWarehouseIdChange = (value: string) => {
localStorage.setItem('localNewWarehouseId', JSON.stringify(value))
}
// 复用 podCN 的单件打单组件:为 factoryOrderNew 注入差异部分 // 复用 podCN 的单件打单组件:为 factoryOrderNew 注入差异部分
const mapOrderParamListToSubmitItems = ( const mapOrderParamListToSubmitItems = (
orderParamList: { id: number; dataVersion?: number }[], orderParamList: { id: number; dataVersion?: number }[],
......
...@@ -2650,10 +2650,20 @@ ...@@ -2650,10 +2650,20 @@
></FastProduction> ></FastProduction>
<PodMakeOrder <PodMakeOrder
v-model="podOrderVisible" v-model="podOrderVisible"
type="cn"
:print-order="printOrder" :print-order="printOrder"
:warehouse-list="warehouseList" :warehouse-list="warehouseList"
warehouse-storage-key="locaclCnWarehouseId"
:order-store="orderStore"
:ws-codes="{ open: 'STARTORDERCN', close: 'ENDORDERCN' }"
:api-urls="{
getPodBoxList: 'factory/podJomallOrderCn/getPodBoxOrderDetails',
clearBox: 'factory/podJomallOrderCn/delPodBoxOrderDetailsByBox',
getPackingData: '/factory/podJomallOrderCn/getPodBoxDetailsBySkuOrNo',
submitInspection: 'factory/podJomallOrderCn/podPrintOrderComplete',
printNormalPdf: 'factory/podJomallOrderCn/printPickPdf',
}"
@set-printer="handlePrinterChange" @set-printer="handlePrinterChange"
@set-warehouse-id="handleWarehouseIdChange"
@refresh="onFastRefresh" @refresh="onFastRefresh"
/> />
<!-- :print-order-one="printOrderOne" --> <!-- :print-order-one="printOrderOne" -->
...@@ -3050,10 +3060,11 @@ import { Column, ElFormItem, ElMessage } from 'element-plus' ...@@ -3050,10 +3060,11 @@ import { Column, ElFormItem, ElMessage } from 'element-plus'
import { computed, onMounted, ref, nextTick, reactive } from 'vue' import { computed, onMounted, ref, nextTick, reactive } from 'vue'
import FastProduction from '@/views/order/components/FastProduction.vue' import FastProduction from '@/views/order/components/FastProduction.vue'
import { filePath } from '@/api/axios' import { filePath } from '@/api/axios'
import PodMakeOrder from '@/views/order/components/PodMakeOrder.vue' import PodMakeOrder from '@/components/PodMakeOrder/index.vue'
import useOrderStore from '@/store/cnOrder'
import PodDistributionOrder from './PodDistributionOrder.vue' import PodDistributionOrder from './PodDistributionOrder.vue'
import SuperPodMakeOrder from './SuperPodMakeOrder.vue' import SuperPodMakeOrder from './SuperPodMakeOrder.vue'
import { OrderData } from '@/types/api/podMakeOrder' import { OrderData, type PodMakeOrderStore } from '@/types/api/podMakeOrder'
import useLodop, { LODOPObject } from '@/utils/hooks/useLodop' import useLodop, { LODOPObject } from '@/utils/hooks/useLodop'
import dayjs from 'dayjs' import dayjs from 'dayjs'
import RightClickMenu from '@/components/RightClickMenu.vue' import RightClickMenu from '@/components/RightClickMenu.vue'
...@@ -5169,6 +5180,7 @@ const fastClose = () => { ...@@ -5169,6 +5180,7 @@ const fastClose = () => {
loadTabData() loadTabData()
detailVisible.value = false detailVisible.value = false
} }
const orderStore = useOrderStore() as PodMakeOrderStore
const podOrderVisible = ref(false) const podOrderVisible = ref(false)
const printPodOrder = async () => { const printPodOrder = async () => {
const lodop = getCLodop(null, null) const lodop = getCLodop(null, null)
...@@ -5447,9 +5459,6 @@ const handlePrinterChange = (value: string) => { ...@@ -5447,9 +5459,6 @@ const handlePrinterChange = (value: string) => {
sheetPrinter.value = value sheetPrinter.value = value
localStorage.setItem('sheetPrinter', JSON.stringify(value)) localStorage.setItem('sheetPrinter', JSON.stringify(value))
} }
const handleWarehouseIdChange = (value: string) => {
sessionStorage.setItem('locaclCnWarehouseId', JSON.stringify(value))
}
const { getCLodop } = useLodop() const { getCLodop } = useLodop()
const printOrder = async ( const printOrder = async (
data: OrderData, data: OrderData,
......
...@@ -982,7 +982,10 @@ ...@@ -982,7 +982,10 @@
</span> </span>
</ElFormItem> </ElFormItem>
<ElFormItem <ElFormItem
v-if="['WAIT_TRACK'].includes(status) && [1,2,5].includes(waitTrackStatus)" v-if="
['WAIT_TRACK'].includes(status) &&
[1, 2, 5].includes(waitTrackStatus)
"
> >
<span class="item"> <span class="item">
<ElButton type="success" @click="reissueOrder">补发</ElButton> <ElButton type="success" @click="reissueOrder">补发</ElButton>
...@@ -2776,10 +2779,22 @@ ...@@ -2776,10 +2779,22 @@
></FastProduction> ></FastProduction>
<PodMakeOrder <PodMakeOrder
v-model="podOrderVisible" v-model="podOrderVisible"
type="us"
:print-order="printOrder" :print-order="printOrder"
:warehouse-list="warehouseList" :warehouse-list="warehouseList"
warehouse-storage-key="locaclWarehouseId"
:order-store="orderStore"
:is-clear-all="true"
:ws-codes="{ open: 'STARTORDER', close: 'ENDORDER' }"
:api-urls="{
getPodBoxList: 'factory/podJomallOrderUs/local/getPodBoxOrderDetails',
clearBox: 'factory/podJomallOrderUs/local/delPodBoxOrderDetailsByBox',
getPackingData: 'factory/podJomallOrderUs/local/putPackingSafe',
submitInspection: 'factory/podJomallOrderUs/podPrintOrderComplete',
printNormalPdf: 'factory/podJomallOrderUs/printNormalPickPdf',
clearAllBox: 'factory/podJomallOrderUs/local/delPodBoxOrderDetails',
}"
@set-printer="handlePrinterChange" @set-printer="handlePrinterChange"
@set-warehouse-id="handleWarehouseIdChange"
@refresh="onFastRefresh" @refresh="onFastRefresh"
/> />
<InspPackagOrder <InspPackagOrder
...@@ -3153,7 +3168,7 @@ ...@@ -3153,7 +3168,7 @@
<ReissueOrderComponent <ReissueOrderComponent
ref="reissueOrderRef" ref="reissueOrderRef"
:selection="selection" :selection="selection"
:trackRegisterSelect="waitTrackStatus" :track-register-select="waitTrackStatus"
@success="handleSuccess" @success="handleSuccess"
></ReissueOrderComponent> ></ReissueOrderComponent>
...@@ -3281,9 +3296,10 @@ import { Column, ElFormItem, ElMessage } from 'element-plus' ...@@ -3281,9 +3296,10 @@ import { Column, ElFormItem, ElMessage } from 'element-plus'
import { computed, onMounted, ref, nextTick, reactive, h } from 'vue' import { computed, onMounted, ref, nextTick, reactive, h } from 'vue'
import FastProduction from './FastProduction.vue' import FastProduction from './FastProduction.vue'
import { filePath } from '@/api/axios' import { filePath } from '@/api/axios'
import PodMakeOrder from './PodMakeOrder.vue' import PodMakeOrder from '@/components/PodMakeOrder/index.vue'
import useOrderStore from '@/store/order'
import InspPackagOrder from './InspPackagOrder.vue' import InspPackagOrder from './InspPackagOrder.vue'
import { OrderData } from '@/types/api/podMakeOrder' import { OrderData, type PodMakeOrderStore } from '@/types/api/podMakeOrder'
import useLodop, { LODOPObject } from '@/utils/hooks/useLodop' import useLodop, { LODOPObject } from '@/utils/hooks/useLodop'
import dayjs from 'dayjs' import dayjs from 'dayjs'
import RightClickMenu from '@/components/RightClickMenu.vue' import RightClickMenu from '@/components/RightClickMenu.vue'
...@@ -5501,6 +5517,7 @@ const fastClose = () => { ...@@ -5501,6 +5517,7 @@ const fastClose = () => {
loadTabData() loadTabData()
detailVisible.value = false detailVisible.value = false
} }
const orderStore = useOrderStore() as unknown as PodMakeOrderStore
const podOrderVisible = ref(false) const podOrderVisible = ref(false)
const printPodOrder = async () => { const printPodOrder = async () => {
const lodop = getCLodop(null, null) const lodop = getCLodop(null, null)
...@@ -5981,9 +5998,6 @@ const handlePrinterChange = (value: string) => { ...@@ -5981,9 +5998,6 @@ const handlePrinterChange = (value: string) => {
sheetPrinter.value = value sheetPrinter.value = value
localStorage.setItem('sheetPrinter', JSON.stringify(value)) localStorage.setItem('sheetPrinter', JSON.stringify(value))
} }
const handleWarehouseIdChange = (value: string) => {
localStorage.setItem('locaclWarehouseId', JSON.stringify(value))
}
const { getCLodop } = useLodop() const { getCLodop } = useLodop()
const printOrder = async ( const printOrder = async (
data: OrderData, data: OrderData,
......
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