feat(wms): 添加发货单到货确认节点

- 新增到货确认表单,包括到货标识选择和收货单附件上传
- 添加发货类型字段,替换手动输入发货单号为系统自动生成
- 新增抄送人员选择功能,支持多选用户
- 添加发货类型、需到货确认、到货标识等查询筛选条件
- 实现到货确认节点审批流程,支持申请人确认到货状态
- 添加到货确认时间范围查询功能
- 优化流程变量传递,确保审批流程正确流转
- 新增到货确认相关API接口和数据类型定义
dev
zangch@mesnac.com 4 days ago
parent ca45a573cc
commit 9526af3a02

@ -1,6 +1,6 @@
import request from '@/utils/request';
import { AxiosPromise } from 'axios';
import { WmsShippingBillForm, WmsShippingBillQuery, WmsShippingBillVO } from '@/api/wms/wmsShippingBill/types';
import { WmsShippingArrivalConfirmForm, WmsShippingBillForm, WmsShippingBillQuery, WmsShippingBillVO } from '@/api/wms/wmsShippingBill/types';
/**
*
@ -98,3 +98,15 @@ export const exportShippingBillWord = (shippingBillId: string | number) => {
responseType: 'blob'
});
};
/**
*
* @param data
*/
export const arrivalConfirmShippingBill = (data: WmsShippingArrivalConfirmForm): AxiosPromise<WmsShippingBillVO> => {
return request({
url: '/wms/wmsShippingBill/arrivalConfirm',
method: 'post',
data: data
});
};

@ -181,6 +181,36 @@ export interface WmsShippingBillVO {
*/
flowStatus: string;
/**
* 1 0
*/
needArrivalConfirm?: string;
/**
* 0 1
*/
isAllReceiving?: string;
/**
* OSS ID
*/
arrivalReceiptOssId?: string;
/**
*
*/
arrivalConfirmTime?: string;
/**
* ID
*/
arrivalConfirmBy?: string | number;
/**
*
*/
arrivalConfirmByName?: string;
/**
* shipping_status1 2 3 4
*/
@ -205,6 +235,15 @@ export interface WmsShippingBillVO {
*
*/
itemsVo?: WmsShippingDetailsVO[];
/**
*
*/
createBy?: string | number;
/**
*
*/
createTime?: string;
}
export interface WmsShippingBillForm extends BaseEntity {
@ -408,6 +447,31 @@ export interface WmsShippingBillForm extends BaseEntity {
*/
detailsList?: WmsShippingDetailsForm[];
/**
* 1 0
*/
needArrivalConfirm?: string;
/**
* 0 1
*/
isAllReceiving?: string;
/**
* OSS ID
*/
arrivalReceiptOssId?: string;
/**
*
*/
arrivalConfirmTime?: string;
/**
* ID
*/
arrivalConfirmBy?: string | number;
/**
*
*/
@ -418,6 +482,11 @@ export interface WmsShippingBillForm extends BaseEntity {
*/
variables?: any;
/**
* ID
*/
tManagerId?: string | number;
/**
*
*/
@ -590,6 +659,16 @@ export interface WmsShippingBillQuery extends PageQuery {
*/
shippingStatus?: string;
/**
* 1 0
*/
needArrivalConfirm?: string;
/**
* 0 1
*/
isAllReceiving?: string;
/**
* ID
*/
@ -605,3 +684,26 @@ export interface WmsShippingBillQuery extends PageQuery {
*/
params?: any;
}
export interface WmsShippingArrivalConfirmForm {
/**
* ID
*/
shippingBillId: string | number;
/**
* 0 1
*/
isAllReceiving: string;
/**
* OSS ID
*/
arrivalReceiptOssId: string;
/**
*
*/
arrivalConfirmTime?: string;
/**
* ID
*/
taskId: string | number;
}

@ -14,6 +14,37 @@
/>
</el-card>
<!-- 全部到货确认区块仅到货确认节点允许申请人录入 -->
<el-card v-if="isArrivalConfirmApprover" shadow="never" style="margin-top: 10px; border: 1px solid #e6a23c">
<template #header>
<div style="text-align: left; font-weight: bold; font-size: 16px; color: #e6a23c">
<el-icon style="margin-right: 6px"><Warning /></el-icon>
</div>
</template>
<el-form :model="arrivalConfirmForm" label-width="120px" ref="arrivalConfirmFormRef">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="全部到货标识" prop="isAllReceiving" :rules="[{ required: true, message: '请选择全部到货标识', trigger: 'change' }]">
<el-radio-group v-model="arrivalConfirmForm.isAllReceiving">
<el-radio-button v-for="dict in is_all_receiving" :key="dict.value" :label="dict.value">
{{ dict.label }}
</el-radio-button>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item
label="收货单附件"
prop="arrivalReceiptOssId"
:rules="[{ required: arrivalConfirmForm.isAllReceiving === '0', message: '全部到货必须上传收货单', trigger: 'change' }]"
>
<fileUpload v-model="arrivalConfirmForm.arrivalReceiptOssId" :limit="5" />
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
<!-- 基本信息区域 -->
<el-card shadow="never" style="margin-top: 0">
<template #header>
@ -30,11 +61,17 @@
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="发货单号" prop="shippingCode">
<el-input v-model="form.shippingCode" placeholder="请输入发货单号">
<template #append>
<el-button type="primary" @click="generateShippingCode" :disabled="isCodeGenerated">生成单号</el-button>
</template>
</el-input>
<el-input v-model="form.shippingCode" placeholder="由系统自动生成" disabled />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="发货类型" prop="shippingType">
<el-select v-model="form.shippingType" placeholder="请选择发货类型" style="width: 100%">
<!-- <el-option label="普通发货" value="1" />
<el-option label="备件发货" value="2" />
<el-option label="物流发货" value="3" /> -->
<el-option v-for="dict in shipping_type" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
@ -168,6 +205,25 @@
</el-col>
</el-row>
</el-form>
<el-form label-width="120px">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="抄送人员" prop="tManagerId">
<el-select
v-model="form.tManagerId"
placeholder="请选择抄送人员"
:disabled="copyManagerDisabled"
clearable
filterable
multiple
style="width: 100%"
>
<el-option v-for="user in userList" :key="user.userId" :label="user.nickName" :value="user.userId" />
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
<!-- 物流信息区域 -->
@ -401,8 +457,17 @@
</template>
<script setup name="WmsShippingBillEdit" lang="ts">
import { addWmsShippingBill, getWmsShippingBill, shippingBillSubmitAndFlowStart, updateWmsShippingBill } from '@/api/wms/wmsShippingBill';
import { WmsShippingBillForm } from '@/api/wms/wmsShippingBill/types';
import {
addWmsShippingBill,
arrivalConfirmShippingBill,
getWmsShippingBill,
shippingBillSubmitAndFlowStart,
updateWmsShippingBill
} from '@/api/wms/wmsShippingBill';
import { WmsShippingArrivalConfirmForm, WmsShippingBillForm } from '@/api/wms/wmsShippingBill/types';
import { useUserStore } from '@/store/modules/user';
import { getTask } from '@/api/workflow/task';
import type { FlowTaskVO } from '@/api/workflow/task/types';
import { WmsShippingDetailsForm } from '@/api/wms/wmsShippingDetails/types';
import { listInventoryDetails } from '@/api/wms/inventoryDetails';
import { InventoryDetailsQuery, InventoryDetailsVO } from '@/api/wms/inventoryDetails/types';
@ -411,32 +476,83 @@ import { getCrmCustomerInfoList } from '@/api/oa/crm/customerInfo';
import { getCrmCustomerContactList } from '@/api/oa/crm/customerContact';
import type { CustomerContactVO } from '@/api/oa/crm/customerContact/types';
import { getCrmSupplierInfoList } from '@/api/oa/crm/crmSupplierInfo';
import { getRuleGenerateCode } from '@/api/system/codeRule';
import { listUser } from '@/api/system/user';
import type { UserQuery } from '@/api/system/user/types';
import SaleMaterialSelect from '@/components/SaleMaterialSelect/index.vue';
import SubmitVerify from '@/components/Process/submitVerify.vue';
import ApprovalRecord from '@/components/Process/approvalRecord.vue';
import ApprovalButton from '@/components/Process/approvalButton.vue';
import ProjectSelect from '@/components/ProjectSelect/index.vue';
import type { ProjectInfoVO } from '@/api/oa/erp/projectInfo/types';
import { listContractInfo } from '@/api/oa/erp/contractInfo';
import { getProjectInfo } from '@/api/oa/erp/projectInfo';
import { getContractInfo, listContractInfo } from '@/api/oa/erp/contractInfo';
import type { ContractInfoQuery, ContractInfoVO } from '@/api/oa/erp/contractInfo/types';
import { CodeRuleEnum, FlowCodeEnum } from '@/enums/OAEnum';
import { Search } from '@element-plus/icons-vue';
import { FlowCodeEnum } from '@/enums/OAEnum';
import { Search, Warning } from '@element-plus/icons-vue';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const route = useRoute();
const router = useRouter();
const userStore = useUserStore();
//
const routeParams = ref<Record<string, any>>({});
//
const { shipping_mode, shipping_status, shipping_bill_status, material_source_type } = toRefs<any>(
proxy?.useDict('shipping_mode', 'shipping_status', 'shipping_bill_status', 'material_source_type')
const { shipping_mode, shipping_status, shipping_bill_status, material_source_type, shipping_type, is_all_receiving } = toRefs<any>(
proxy?.useDict('shipping_mode', 'shipping_status', 'shipping_bill_status', 'material_source_type', 'shipping_type', 'is_all_receiving')
);
const buttonLoading = ref(false);
const shippingBillFormRef = ref<ElFormInstance>();
const arrivalConfirmFormRef = ref<ElFormInstance>();
//
const arrivalConfirmForm = ref<WmsShippingArrivalConfirmForm>({
shippingBillId: '',
isAllReceiving: '0',
arrivalReceiptOssId: '',
taskId: ''
});
watch(
() => arrivalConfirmForm.value.isAllReceiving,
() => {
arrivalConfirmFormRef.value?.clearValidate(['arrivalReceiptOssId']);
}
);
const currentTask = ref<FlowTaskVO | null>(null);
// + +
const isArrivalConfirmApprover = computed(() => {
return (
routeParams.value.type === 'approval' &&
form.value.needArrivalConfirm === '1' &&
currentTask.value?.nodeCode === 'arrival-confirm' &&
String(currentTask.value?.businessId || '') === String(form.value.shippingBillId || '') &&
String(userStore.userId) === String(form.value.createBy)
);
});
const isArrivalConfirmNode = computed(() => {
return (
routeParams.value.type === 'approval' &&
currentTask.value?.nodeCode === 'arrival-confirm' &&
String(currentTask.value?.businessId || '') === String(form.value.shippingBillId || '')
);
});
const canEditCopyManager = computed(() => {
if (routeParams.value.type === 'view') {
return false;
}
const flowStatus = String(form.value.flowStatus || '');
// Why稿
return flowStatus === 'draft' || isArrivalConfirmNode.value;
});
const copyManagerDisabled = computed(() => !canEditCopyManager.value);
//
const submitVerifyRef = ref<InstanceType<typeof SubmitVerify>>();
@ -445,13 +561,11 @@ const approvalRecordRef = ref<InstanceType<typeof ApprovalRecord>>();
//
const taskVariables = ref<Record<string, any>>({});
//
const isCodeGenerated = ref(false);
// 1-ERP2-WMS使WMS
const materialSourceType = ref('2');
//
const userList = ref<any[]>([]);
const customerList = ref<any[]>([]);
const supplierList = ref<any[]>([]);
const warehouseList = ref<any[]>([]);
@ -549,7 +663,6 @@ const validateContractWhenBind = (rule: any, value: any, callback: any) => {
const data = reactive<{ form: WmsShippingBillForm; rules: any }>({
form: { ...initFormData },
rules: {
shippingCode: [{ required: true, message: '发货单号不能为空', trigger: 'blur' }],
shippingMode: [{ required: true, message: '发货方式不能为空', trigger: 'change' }],
bindType: [{ required: true, message: '绑定类型不能为空', trigger: 'change' }],
projectId: [{ validator: validateProjectOrContract, trigger: 'change' }],
@ -560,17 +673,90 @@ const data = reactive<{ form: WmsShippingBillForm; rules: any }>({
const { form, rules } = toRefs(data);
/** 生成发货单号 */
const generateShippingCode = async () => {
if (isCodeGenerated.value) return; //
try {
const params = { codeRuleCode: CodeRuleEnum.SHIPPING_BILL } as any;
const res = await getRuleGenerateCode(params);
form.value.shippingCode = res.msg;
isCodeGenerated.value = true;
proxy?.$modal.msgSuccess('发货单号生成成功');
} catch (error) {
console.error('生成发货单号失败:', error);
const normalizeWorkflowUserIds = (value: unknown): string | undefined => {
if (Array.isArray(value)) {
const ids = value.map((item) => String(item ?? '').trim()).filter((item) => item.length > 0);
return ids.length > 0 ? ids.join(',') : undefined;
}
if (value === undefined || value === null) {
return undefined;
}
const text = String(value).trim();
return text.length > 0 ? text : undefined;
};
const toWorkflowUserIdArray = (value: unknown): (string | number)[] | undefined => {
const text = normalizeWorkflowUserIds(value);
if (!text) {
return undefined;
}
return text
.split(',')
.map((id) => id.trim())
.filter((id) => id.length > 0);
};
const buildFlowCopyVariables = async (submitData: WmsShippingBillForm) => {
let tManagerId = normalizeWorkflowUserIds((submitData as any).tManagerId);
const bindType = submitData.bindType;
// 使/
if (!tManagerId && bindType === '2') {
tManagerId = normalizeWorkflowUserIds((submitData as any).contractManagerId);
}
if (!tManagerId && bindType === '1') {
tManagerId = normalizeWorkflowUserIds((submitData as any).peopleId);
}
//
// Why tManagerId
if (bindType === '2' && !tManagerId && submitData.contractId) {
try {
const contractRes = await getContractInfo(submitData.contractId);
tManagerId = normalizeWorkflowUserIds((contractRes.data as any)?.contractManagerId);
} catch (error) {
console.error('加载合同负责人失败:', error);
}
}
//
if (bindType === '1' && !tManagerId && submitData.projectId) {
try {
const projectRes = await getProjectInfo(submitData.projectId);
tManagerId = normalizeWorkflowUserIds((projectRes.data as any)?.peopleId);
} catch (error) {
console.error('加载抄送人员失败:', error);
}
}
return { tManagerId };
};
const prepareTaskVariables = async () => {
const { tManagerId } = await buildFlowCopyVariables(form.value as WmsShippingBillForm);
if (tManagerId) {
// Why ${tManagerId}
taskVariables.value = { tManagerId };
return true;
}
// tManagerId
if (currentTask.value?.nodeCode === 'dept-leader') {
proxy?.$modal.msgError('未获取到到货确认抄送人ID(tManagerId),请先维护合同负责人或项目抄送人员');
return false;
}
taskVariables.value = {};
return true;
};
const syncCopyManagerSelection = async () => {
const current = normalizeWorkflowUserIds((form.value as any).tManagerId);
if (current) {
return;
}
const { tManagerId } = await buildFlowCopyVariables(form.value as WmsShippingBillForm);
if (tManagerId) {
// Why orderActivate
(form.value as any).tManagerId = toWorkflowUserIdArray(tManagerId);
}
};
@ -604,6 +790,9 @@ const submitContractSelect = () => {
form.value.contractId = contract.contractId as any;
form.value.contractCode = contract.contractCode || '';
form.value.contractName = contract.contractName || '';
const contractManagerId = normalizeWorkflowUserIds((contract as any).contractManagerId);
(form.value as any).contractManagerId = contractManagerId;
(form.value as any).tManagerId = toWorkflowUserIdArray(contractManagerId);
selectedContractName.value = contract.contractName || '';
// SAP orderContractCode
selectedSapOrderCode.value = (contract as any).orderContractCode || '';
@ -632,6 +821,9 @@ const projectInfoSelectCallBack = (data: ProjectInfoVO[]) => {
form.value.projectId = project.projectId;
form.value.projectCode = project.projectCode || '';
form.value.projectName = project.projectName || '';
const peopleId = normalizeWorkflowUserIds((project as any).peopleId);
(form.value as any).peopleId = peopleId;
(form.value as any).tManagerId = toWorkflowUserIdArray(peopleId);
selectedProjectName.value = project.projectName || '';
//
if (project.customerId) {
@ -822,14 +1014,22 @@ const submitForm = async (status: string, mode: boolean) => {
const submitData = { ...form.value };
if (status !== 'draft') {
//
// -
submitData.flowCode = FlowCodeEnum.SHIPPING_BILL_CODE;
const { tManagerId } = await buildFlowCopyVariables(submitData);
if (!tManagerId) {
proxy?.$modal.msgError('未获取到到货确认抄送人ID(tManagerId),请先维护合同负责人或项目抄送人员');
return;
}
submitData.tManagerId = tManagerId;
//
submitData.variables = {
shippingBillId: submitData.shippingBillId,
shippingCode: submitData.shippingCode,
projectName: submitData.projectName,
customerName: submitData.customerName
customerName: submitData.customerName,
tManagerId
};
//
submitData.bizExt = {
@ -844,6 +1044,7 @@ const submitForm = async (status: string, mode: boolean) => {
form.value = res.data;
proxy?.$modal.msgSuccess('提交成功');
} else {
// 稿
//
submitData.outStockBillStatus = '1';
submitData.flowStatus = 'draft';
@ -867,16 +1068,16 @@ const submitForm = async (status: string, mode: boolean) => {
/** 加载下拉数据 */
const loadSelectOptions = async () => {
try {
//
const customerRes = await getCrmCustomerInfoList(null);
const userQuery: UserQuery = { pageNum: 1, pageSize: 9999 };
const [userRes, customerRes, supplierRes, warehouseRes] = await Promise.all([
listUser(userQuery),
getCrmCustomerInfoList(null),
getCrmSupplierInfoList(null),
getWmsWarehouseInfoList(null)
]);
userList.value = userRes.rows || [];
customerList.value = customerRes.data || [];
//
const supplierRes = await getCrmSupplierInfoList(null);
supplierList.value = supplierRes.data || [];
//
const warehouseRes = await getWmsWarehouseInfoList(null);
warehouseList.value = warehouseRes.data || [];
} catch (error) {
console.error('加载下拉数据失败:', error);
@ -888,6 +1089,10 @@ const loadFormData = async (id: string | number) => {
try {
const res = await getWmsShippingBill(id);
Object.assign(form.value, res.data);
await syncCopyManagerSelection();
arrivalConfirmForm.value.shippingBillId = res.data.shippingBillId;
arrivalConfirmForm.value.isAllReceiving = res.data.isAllReceiving || '0';
arrivalConfirmForm.value.arrivalReceiptOssId = res.data.arrivalReceiptOssId || '';
selectedProjectName.value = form.value.projectName || '';
selectedContractName.value = form.value.contractName || '';
// SAP
@ -916,11 +1121,6 @@ const loadFormData = async (id: string | number) => {
}));
}
//
if (form.value.shippingCode) {
isCodeGenerated.value = true;
}
// ID
if (form.value.customerId) {
try {
@ -935,6 +1135,22 @@ const loadFormData = async (id: string | number) => {
}
};
const loadCurrentTask = async () => {
if (routeParams.value.type !== 'approval' || !routeParams.value.taskId) {
currentTask.value = null;
return true;
}
try {
const res = await getTask(String(routeParams.value.taskId));
currentTask.value = res.data;
return !!currentTask.value;
} catch (error) {
currentTask.value = null;
console.error('加载当前审批任务失败:', error);
return false;
}
};
//
const handleApprovalRecord = () => {
approvalRecordRef.value?.init(form.value.shippingBillId);
@ -946,22 +1162,52 @@ const submitCallback = async () => {
router.go(-1);
};
//
//
const approvalVerifyOpen = async () => {
if (routeParams.value.type === 'approval' && routeParams.value.taskId) {
const taskLoaded = await loadCurrentTask();
if (!taskLoaded || !currentTask.value) {
proxy?.$modal.msgError('当前任务信息加载失败,请刷新后重试');
return;
}
}
if (isArrivalConfirmApprover.value) {
//
//
const valid = await arrivalConfirmFormRef.value?.validate().catch(() => false);
if (!valid) return;
//
arrivalConfirmForm.value.shippingBillId = form.value.shippingBillId!;
arrivalConfirmForm.value.taskId = String(routeParams.value.taskId);
try {
const res = await arrivalConfirmShippingBill(arrivalConfirmForm.value);
Object.assign(form.value, res.data);
arrivalConfirmForm.value.isAllReceiving = res.data.isAllReceiving || arrivalConfirmForm.value.isAllReceiving;
arrivalConfirmForm.value.arrivalReceiptOssId = res.data.arrivalReceiptOssId || arrivalConfirmForm.value.arrivalReceiptOssId;
} catch (error) {
console.error('到货确认保存失败:', error);
return;
}
}
const prepared = await prepareTaskVariables();
if (!prepared) return;
await submitVerifyRef.value?.openDialog(routeParams.value.taskId);
};
onMounted(async () => {
nextTick(async () => {
routeParams.value = route.query;
//
proxy?.$modal.loading('正在加载数据,请稍后...');
await loadSelectOptions();
const id = routeParams.value.id as string | number;
if (id && (routeParams.value.type === 'update' || routeParams.value.type === 'view' || routeParams.value.type === 'approval')) {
// //稿
await loadFormData(id);
}
await loadCurrentTask();
proxy?.$modal.closeLoading();
});

@ -18,11 +18,37 @@
<el-form-item label="客户名称" prop="customerName">
<el-input v-model="queryParams.customerName" placeholder="请输入客户名称" clearable style="width: 180px" @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="发货类型" prop="shippingType">
<el-select v-model="queryParams.shippingType" placeholder="请选择发货类型" clearable style="width: 180px">
<el-option v-for="dict in shipping_type" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="发货状态" prop="shippingStatus">
<el-select v-model="queryParams.shippingStatus" placeholder="请选择发货状态" clearable style="width: 180px">
<el-option v-for="dict in shipping_status" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="需到货确认" prop="needArrivalConfirm">
<el-select v-model="queryParams.needArrivalConfirm" placeholder="请选择" clearable style="width: 180px">
<el-option v-for="dict in need_arrival_confirm" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="到货标识" prop="isAllReceiving">
<el-select v-model="queryParams.isAllReceiving" placeholder="请选择到货标识" clearable style="width: 180px">
<el-option v-for="dict in is_all_receiving" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="到货确认时间">
<el-date-picker
v-model="arrivalConfirmTimeRange"
type="daterange"
range-separator="至"
start-placeholder="开始时间"
end-placeholder="结束时间"
value-format="YYYY-MM-DD HH:mm:ss"
clearable
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery"></el-button>
<el-button icon="Refresh" @click="resetQuery"></el-button>
@ -59,35 +85,57 @@
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="发货单号" align="center" prop="shippingCode" min-width="140" v-if="columns[0].visible" />
<el-table-column label="SAP订单号" align="center" prop="orderContractCode" min-width="140" show-overflow-tooltip v-if="columns[1].visible" />
<el-table-column label="发货方式" align="center" prop="shippingMode" width="120" v-if="columns[2].visible">
<el-table-column label="发货类型" align="center" prop="shippingType" width="100" v-if="columns[2].visible">
<template #default="scope">
<dict-tag :options="shipping_type" :value="scope.row.shippingType" />
</template>
</el-table-column>
<el-table-column label="发货方式" align="center" prop="shippingMode" width="120" v-if="columns[3].visible">
<template #default="scope">
<dict-tag :options="shipping_mode" :value="scope.row.shippingMode" />
</template>
</el-table-column>
<el-table-column label="项目名称" align="center" prop="projectName" min-width="160" show-overflow-tooltip v-if="columns[3].visible" />
<el-table-column label="客户名称" align="center" prop="customerName" min-width="140" show-overflow-tooltip v-if="columns[4].visible" />
<el-table-column label="供应商" align="center" prop="supplier" min-width="120" show-overflow-tooltip v-if="columns[5].visible" />
<el-table-column label="发货单状态" align="center" prop="outStockBillStatus" width="110" v-if="columns[6].visible">
<el-table-column label="项目名称" align="center" prop="projectName" min-width="160" show-overflow-tooltip v-if="columns[4].visible" />
<el-table-column label="客户名称" align="center" prop="customerName" min-width="140" show-overflow-tooltip v-if="columns[5].visible" />
<el-table-column label="供应商" align="center" prop="supplier" min-width="120" show-overflow-tooltip v-if="columns[6].visible" />
<el-table-column label="发货单状态" align="center" prop="outStockBillStatus" width="110" v-if="columns[7].visible">
<template #default="scope">
<dict-tag :options="shipping_bill_status" :value="scope.row.outStockBillStatus" />
</template>
</el-table-column>
<el-table-column label="发货状态" align="center" prop="shippingStatus" width="100" v-if="columns[7].visible">
<el-table-column label="发货状态" align="center" prop="shippingStatus" width="100" v-if="columns[8].visible">
<template #default="scope">
<dict-tag :options="shipping_status" :value="scope.row.shippingStatus" />
</template>
</el-table-column>
<el-table-column label="计划到货时间" align="center" prop="planArrivalTime" width="110" v-if="columns[8].visible">
<el-table-column label="需到货确认" align="center" prop="needArrivalConfirm" width="100" v-if="columns[9].visible">
<template #default="scope">
<dict-tag :options="need_arrival_confirm" :value="scope.row.needArrivalConfirm" />
</template>
</el-table-column>
<el-table-column label="到货标识" align="center" prop="isAllReceiving" width="100" v-if="columns[10].visible">
<template #default="scope">
<dict-tag :options="is_all_receiving" :value="scope.row.needArrivalConfirm === '1' ? scope.row.isAllReceiving : undefined" />
<span v-if="scope.row.needArrivalConfirm === '0'">-</span>
</template>
</el-table-column>
<el-table-column label="到货确认时间" align="center" prop="arrivalConfirmTime" width="160" v-if="columns[11].visible">
<template #default="scope">
<span>{{ proxy?.parseTime(scope.row.arrivalConfirmTime, '{y}-{m}-{d} {h}:{i}:{s}') || '-' }}</span>
</template>
</el-table-column>
<el-table-column label="到货确认人" align="center" prop="arrivalConfirmByName" width="110" show-overflow-tooltip v-if="columns[12].visible" />
<el-table-column label="计划到货时间" align="center" prop="planArrivalTime" width="110" v-if="columns[13].visible">
<template #default="scope">
<span>{{ proxy?.parseTime(scope.row.planArrivalTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="实际发货时间" align="center" prop="shippingTime" width="110" v-if="columns[9].visible">
<el-table-column label="实际发货时间" align="center" prop="shippingTime" width="110" v-if="columns[14].visible">
<template #default="scope">
<span>{{ proxy?.parseTime(scope.row.shippingTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" width="110" v-if="columns[10].visible">
<el-table-column label="创建时间" align="center" prop="createTime" width="110" v-if="columns[15].visible">
<template #default="scope">
<span>{{ proxy?.parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
</template>
@ -249,8 +297,8 @@ const router = useRouter();
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
//
const { shipping_mode, shipping_status, shipping_bill_status } = toRefs<any>(
proxy?.useDict('shipping_mode', 'shipping_status', 'shipping_bill_status')
const { shipping_mode, shipping_status, shipping_bill_status, shipping_type, need_arrival_confirm, is_all_receiving } = toRefs<any>(
proxy?.useDict('shipping_mode', 'shipping_status', 'shipping_bill_status', 'shipping_type', 'need_arrival_confirm', 'is_all_receiving')
);
const wmsShippingBillList = ref<WmsShippingBillVO[]>([]);
@ -274,15 +322,20 @@ const dialog = reactive<DialogOption>({
const columns = ref<FieldOption[]>([
{ key: 0, label: '发货单号', visible: true },
{ key: 1, label: 'SAP订单号', visible: true },
{ key: 2, label: '发货方式', visible: true },
{ key: 3, label: '项目名称', visible: false },
{ key: 4, label: '客户名称', visible: true },
{ key: 5, label: '供应商', visible: true },
{ key: 6, label: '发货单状态', visible: true },
{ key: 7, label: '发货状态', visible: true },
{ key: 8, label: '计划到货时间', visible: true },
{ key: 9, label: '实际发货时间', visible: true },
{ key: 10, label: '创建时间', visible: false }
{ key: 2, label: '发货类型', visible: true },
{ key: 3, label: '发货方式', visible: true },
{ key: 4, label: '项目名称', visible: false },
{ key: 5, label: '客户名称', visible: true },
{ key: 6, label: '供应商', visible: true },
{ key: 7, label: '发货单状态', visible: true },
{ key: 8, label: '发货状态', visible: true },
{ key: 9, label: '需到货确认', visible: true },
{ key: 10, label: '到货标识', visible: true },
{ key: 11, label: '到货确认时间', visible: true },
{ key: 12, label: '到货确认人', visible: false },
{ key: 13, label: '计划到货时间', visible: true },
{ key: 14, label: '实际发货时间', visible: true },
{ key: 15, label: '创建时间', visible: false }
]);
const initFormData: WmsShippingBillForm = {
@ -362,6 +415,8 @@ const data = reactive<PageData<WmsShippingBillForm, WmsShippingBillQuery>>({
outStockBillStatus: undefined,
flowStatus: undefined,
shippingStatus: undefined,
needArrivalConfirm: undefined,
isAllReceiving: undefined,
warehouseId: undefined,
warehouseName: undefined,
params: {}
@ -372,6 +427,7 @@ const data = reactive<PageData<WmsShippingBillForm, WmsShippingBillQuery>>({
});
const { queryParams, form, rules } = toRefs(data);
const arrivalConfirmTimeRange = ref<string[]>();
/** 查询发货单列表 */
const getList = async () => {
@ -397,12 +453,23 @@ const reset = () => {
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.value.pageNum = 1;
if (!queryParams.value.params) {
queryParams.value.params = {};
}
if (arrivalConfirmTimeRange.value && arrivalConfirmTimeRange.value.length === 2) {
queryParams.value.params.beginArrivalConfirmTime = arrivalConfirmTimeRange.value[0];
queryParams.value.params.endArrivalConfirmTime = arrivalConfirmTimeRange.value[1];
} else {
queryParams.value.params.beginArrivalConfirmTime = undefined;
queryParams.value.params.endArrivalConfirmTime = undefined;
}
getList();
};
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value?.resetFields();
arrivalConfirmTimeRange.value = undefined;
handleQuery();
};

Loading…
Cancel
Save