1、新增结算模块

2、调整业务模块
3、调整客商模块
This commit is contained in:
2026-08-20 06:33:01 +08:00
parent 4199255186
commit fd5b1484e6
59 changed files with 11745 additions and 1104 deletions
+78 -6
View File
@@ -42,12 +42,18 @@ export const config = {
batchDelete: false,
enableContractForm: true,
enableProjectSelect: true,
projectQueryParams: {
approvalStatuses: 'approved,change_approved',
},
enableContractPeriod: true,
enableContractFileUpload: true,
enableCurrentUserHandler: true,
enableBillingPlan: true,
enableSettlementRule: true,
enableReconciliation: true,
enableReconciliation: false,
enableFeeGenerationMode: true,
enableSettlementConfigTabs: true,
enablePaymentRatio: true,
enableAttachmentTable: true,
enableChangeRecord: true,
enableOrganizationSelect: true,
@@ -57,6 +63,53 @@ export const config = {
statusProp: 'approvalStatus',
statusTextProp: 'approvalStatusName',
customMenuActions: true,
contractNameDetail: true,
detailSections: [
{
title: '基本信息',
fields: [
['contractNo', '合同编号'],
['contractName', '合同名称'],
['projectName', '所属项目'],
['organizationName', '所属组织'],
['contractCategory', '合同类别'],
['signType', '签约类型'],
['partyA', '甲方'],
['partyB', '乙方'],
['handlerUserName', '经办人'],
['signDate', '签订日期'],
['contractFormat', '合同格式'],
['legalSealFlag', '是否需要加盖法人章'],
['copyCount', '一式'],
['paymentDays', '回款账期'],
['remark', '备注', 2],
],
},
{
title: '合同期限',
fields: [
['startDate', '开始日期'],
['endDate', '结束日期'],
['temporaryStartDate', '临时效力起'],
['temporaryEndDate', '临时效力止'],
['effectiveType', '生效类型'],
['contractStage', '合同阶段'],
['approvalStatus', '审核状态'],
['currentNode', '当前节点'],
['currentProcessor', '当前处理人'],
],
},
{
title: '计费与结算',
fields: [
['feeGenerationMode', '费用生成模式'],
['billingPlanJson', '计费方案', 2],
['settlementMode', '结算类型'],
['settlementRuleJson', '结算规则', 2],
['paymentRatioJson', '付款比例设置', 2],
],
},
],
editLabelStatusMap: {
change_rejected: '编辑变更内容',
},
@@ -96,6 +149,22 @@ export const config = {
stage: ['temporary', 'formal'],
permission: 'contract_manage_reject',
},
{
action: 'approve',
label: '通过',
statusProp: 'approvalStatus',
status: ['change_reviewing'],
stage: ['formal'],
permission: 'contract_manage_approve',
},
{
action: 'reject',
label: '驳回',
statusProp: 'approvalStatus',
status: ['change_reviewing'],
stage: ['formal'],
permission: 'contract_manage_reject',
},
{
action: 'submitFormal',
label: '重新提交转正',
@@ -186,6 +255,7 @@ export const option = createCrudOption([
searchOrder: 7,
searchPlaceholder: '请输入',
order: 180,
slot: true,
minWidth: 180,
rules: textRule('合同名称', 100, true),
},
@@ -198,7 +268,8 @@ export const option = createCrudOption([
searchPlaceholder: '请选择',
formslot: true,
order: 140,
dicUrl: '/blade-transport/project-apply/list?current=1&size=9999',
dicUrl:
'/blade-transport/project-apply/list?current=1&size=9999&approvalStatuses=approved,change_approved',
dicFormatter: listDicFormatter,
props: {
label: 'projectName',
@@ -481,7 +552,7 @@ export const option = createCrudOption([
editDisplay: false,
},
{
label: '计费信息',
label: '费用生成模式',
prop: 'billingEnabled',
type: 'switch',
dicData: [
@@ -515,10 +586,11 @@ export const option = createCrudOption([
labelWidth: 0,
},
{
label: '附件',
label: '',
prop: 'contractFileJson',
formslot: true,
span: 24,
className: 'contract-file-form-item',
order: 20,
hide: true,
},
@@ -560,7 +632,7 @@ export const option = createCrudOption([
},
{
label: '',
prop: 'reconciliationTitle',
prop: 'paymentRatioTitle',
formslot: true,
span: 24,
order: -30,
@@ -569,7 +641,7 @@ export const option = createCrudOption([
},
{
label: '',
prop: 'reconciliationJson',
prop: 'paymentRatioJson',
formslot: true,
span: 24,
order: -40,
+78 -13
View File
@@ -63,15 +63,6 @@ const parseProcessNodes = value => {
return Array.isArray(value.nodes) ? value.nodes : [];
};
const requiresDriverAcceptConfirmation = processJson =>
parseProcessNodes(processJson).some(
node =>
(node.key === 'accept' || node.name === '接单') &&
node.enabled !== false &&
node.confirmMode === 'yes' &&
node.confirmDriver === true
);
const getProcessConfigNodes = row => {
const sources = [
row.processJson,
@@ -99,11 +90,79 @@ const getProcessConfigNodes = row => {
});
};
const hasAcceptProcessNode = row =>
const isAcceptProcessNode = node => node.key === 'accept' || node.name === '接单';
const requiresDriverAcceptConfirmation = row =>
getProcessConfigNodes(row).some(
node => node.enabled !== false && (node.key === 'accept' || node.name === '接单')
node =>
isAcceptProcessNode(node) &&
node.enabled !== false &&
node.confirmMode === 'yes' &&
node.confirmDriver === true
);
const isDriverRejectedStatus = value => {
if (value === null || value === undefined || typeof value === 'boolean') return false;
return [
'-1',
'2',
'reject',
'rejected',
'refuse',
'refused',
'decline',
'declined',
'deny',
'denied',
'拒绝',
'已拒绝',
'拒绝接单',
'已拒绝接单',
].includes(String(value).trim().toLowerCase());
};
const hasDriverRejectRecord = row => {
const rejectRecordValues = [
row.driverRejectTime,
row.driverRejectedTime,
row.driverRefuseTime,
row.acceptRejectTime,
row.driverRejectReason,
row.driverRefuseReason,
row.acceptRejectReason,
];
if (rejectRecordValues.some(value => !isEmpty(value))) return true;
const driverStatusProps = [
'driverAcceptStatus',
'driverAccepted',
'driverAccept',
'accepted',
'isAccepted',
'acceptStatus',
'driverResponseStatus',
'driverOrderStatus',
'driverAcceptResult',
'acceptResult',
];
if (driverStatusProps.some(prop => isDriverRejectedStatus(row[prop]))) return true;
const nodeStatusProps = [
...driverStatusProps,
'confirmStatus',
'executionStatus',
'nodeStatus',
'status',
'result',
];
return getProcessConfigNodes(row)
.filter(isAcceptProcessNode)
.some(node => nodeStatusProps.some(prop => isDriverRejectedStatus(node[prop])));
};
const isDriverRejectedWaybill = row =>
requiresDriverAcceptConfirmation(row) && hasDriverRejectRecord(row);
const hasDriverAcceptRecord = row => {
const recordValues = [
row.driverAcceptTime,
@@ -304,7 +363,7 @@ export const config = {
formatStatus(row, prop, defaultText) {
if (
prop === 'businessStatus' &&
hasAcceptProcessNode(row) &&
requiresDriverAcceptConfirmation(row) &&
isInProgressStatus(row, defaultText) &&
!hasDriverAcceptRecord(row)
) {
@@ -313,12 +372,18 @@ export const config = {
if (
prop === 'businessStatus' &&
row.businessStatus === 'pending' &&
!requiresDriverAcceptConfirmation(row.processJson)
!requiresDriverAcceptConfirmation(row)
) {
return '进行中';
}
return defaultText;
},
canReassign(row) {
return isDriverRejectedWaybill(row);
},
canEdit(row) {
return !isDriverRejectedWaybill(row);
},
deleteStatus: ['draft'],
editStatus: ['draft', 'pending'],
};
@@ -0,0 +1,30 @@
export const formalSettlementFormFields = [
{ label: '结算单号', prop: 'formalSettlementNo', readonly: true },
{ label: '项目名称', prop: 'projectName', readonly: true },
{ label: '所属组织', prop: 'deptName', readonly: true },
{ label: '合同编号', prop: 'contractNo', readonly: true },
{ label: '合同名称', prop: 'contractId', type: 'contract', required: true },
{ label: '付款方', prop: 'payerName', readonly: true },
{ label: '收款方', prop: 'payeeName', readonly: true },
{ label: '结算类型', prop: 'settlementTypeName', readonly: true },
{ label: '结算金额', prop: 'settlementAmount', readonly: true, money: true },
{ label: '汇率日期', prop: 'exchangeRateDate', type: 'date', required: true },
{ label: '结算汇率', prop: 'exchangeRate', type: 'number', required: true },
{ label: '本位币合计', prop: 'localSettlementAmount', readonly: true, money: true },
{ label: '申请付款金额(含预付)', prop: 'appliedPaymentAmount', readonly: true, money: true },
{ label: '已收/已付合计', prop: 'paidAmount', readonly: true, money: true },
];
export const createFormalSettlementForm = () => ({
id: null,
formalSettlementNo: '',
contractId: null,
contractName: '',
settlementType: '',
sourcePreSettlementIds: [],
sourceDetailIds: [],
exchangeRateDate: '',
exchangeRate: 1,
attachmentsJson: '[]',
remark: '',
});
@@ -0,0 +1,45 @@
export const approvalStatusOptions = [
{ label: '草稿', value: 'draft' },
{ label: '审批中', value: 'reviewing' },
{ label: '审批通过', value: 'approved' },
{ label: '已驳回', value: 'returned' },
{ label: '已作废', value: 'voided' },
];
export const invoiceStatusOptions = [
{ label: '未收/开票', value: 'unreceived' },
{ label: '部分收/开票', value: 'partial' },
{ label: '已收/开票', value: 'completed' },
];
export const paymentStatusOptions = [
{ label: '未收/付款', value: 'unpaid' },
{ label: '部分收/付款', value: 'partial' },
{ label: '已收/付款', value: 'paid' },
];
export const kingdeeSyncStatusOptions = [
{ label: '未同步', value: 'unsynced' },
{ label: '已同步', value: 'synced' },
{ label: '同步失败', value: 'failed' },
];
export const formalSettlementSearchFields = [
{ label: '结算单号', prop: 'formalSettlementNo', type: 'input' },
{ label: '预结算单号', prop: 'preSettlementNo', type: 'input' },
{ label: '项目', prop: 'projectName', type: 'input' },
{ label: '所属组织', prop: 'deptName', type: 'input' },
{ label: '合同编号', prop: 'contractNo', type: 'input' },
{ label: '付款方', prop: 'payerName', type: 'input' },
{ label: '收款方', prop: 'payeeName', type: 'input' },
{ label: '发票状态', prop: 'invoiceStatus', type: 'select', options: invoiceStatusOptions },
{ label: '收付款状态', prop: 'paymentStatus', type: 'select', options: paymentStatusOptions },
{ label: '审核状态', prop: 'approvalStatus', type: 'select', options: approvalStatusOptions },
{
label: '金蝶单据状态',
prop: 'kingdeeSyncStatus',
type: 'select',
options: kingdeeSyncStatusOptions,
},
{ label: '生成日期', prop: 'createDateRange', type: 'daterange' },
];
@@ -0,0 +1,94 @@
export const formalSettlementTableColumns = [
{ label: '结算单号', prop: 'formalSettlementNo', minWidth: 160, link: true, fixed: 'left' },
{ label: '预结算单号', prop: 'preSettlementNos', minWidth: 190 },
{ label: '来源', prop: 'sourceType', minWidth: 110 },
{ label: '付款方', prop: 'payerName', minWidth: 150 },
{ label: '收款方', prop: 'payeeName', minWidth: 150 },
{ label: '项目名称', prop: 'projectName', minWidth: 140 },
{ label: '所属组织', prop: 'deptName', minWidth: 140 },
{ label: '合同编号', prop: 'contractNo', minWidth: 150 },
{ label: '合同名称', prop: 'contractName', minWidth: 170 },
{ label: '原币结算金额', prop: 'settlementAmount', minWidth: 145, money: true },
{ label: '本位币结算金额', prop: 'localSettlementAmount', minWidth: 155, money: true },
{ label: '结算汇率', prop: 'exchangeRate', minWidth: 110 },
{ label: '申请付款金额(含预付)', prop: 'appliedPaymentAmount', minWidth: 185, money: true },
{ label: '已收/已付合计', prop: 'paidAmount', minWidth: 145, money: true },
{ label: '发票状态', prop: 'invoiceStatusName', minWidth: 120 },
{ label: '收付款状态', prop: 'paymentStatusName', minWidth: 120 },
{ label: '审核状态', prop: 'approvalStatusName', minWidth: 110, status: true },
{ label: '当前节点', prop: 'currentNode', minWidth: 130 },
{ label: '当前处理人', prop: 'currentProcessor', minWidth: 130 },
{ label: '金蝶单据号', prop: 'kingdeeBillNo', minWidth: 150 },
{ label: '创建人', prop: 'createUserName', minWidth: 110 },
{ label: '创建时间', prop: 'createTime', minWidth: 170 },
];
export const sourceColumns = [
{ label: '预结算单号', prop: 'preSettlementNo', minWidth: 160 },
{ label: '结算金额', prop: 'settlementAmount', minWidth: 130, money: true },
{ label: '申请预付金额', prop: 'advanceAppliedAmount', minWidth: 140, money: true },
{ label: '已付款金额', prop: 'advancePaidAmount', minWidth: 130, money: true },
];
export const detailColumns = [
{ label: '单据号', prop: 'documentNo', minWidth: 180 },
{ label: '运单号', prop: 'waybillNo', minWidth: 160 },
{ label: '车号', prop: 'vehicleNo', minWidth: 130 },
{ label: '发货地址', prop: 'departureAddress', minWidth: 180 },
{ label: '到货地址', prop: 'arrivalAddress', minWidth: 180 },
{ label: '实际发货时间', prop: 'actualDepartureTime', minWidth: 170 },
{ label: '实际完成时间', prop: 'actualCompletionTime', minWidth: 170 },
{ label: '运输类型', prop: 'transportType', minWidth: 120 },
{ label: '货物名称', prop: 'cargoName', minWidth: 140 },
{ label: '货物类型', prop: 'cargoType', minWidth: 130 },
{ label: '运输总量', prop: 'transportQuantity', minWidth: 120 },
{ label: '里程(KM', prop: 'mileage', minWidth: 120 },
{ label: '批次号', prop: 'batchNo', minWidth: 120 },
{ label: '运输单价', prop: 'unitPrice', minWidth: 120, money: true },
{ label: '运费', prop: 'freightAmount', minWidth: 120, money: true },
{ label: '调整金额', prop: 'adjustAmount', minWidth: 120, money: true },
{ label: '结算金额(含税)', prop: 'settlementAmountTax', minWidth: 155, money: true },
{ label: '结算金额(不含税)', prop: 'settlementAmountNoTax', minWidth: 170, money: true },
{ label: '备注', prop: 'remark', minWidth: 180 },
];
export const candidateColumns = [
{ label: '预结算单号', prop: 'preSettlementNo', minWidth: 170 },
{ label: '项目名称', prop: 'projectName', minWidth: 140 },
{ label: '所属组织', prop: 'deptName', minWidth: 140 },
{ label: '合同编号', prop: 'contractNo', minWidth: 150 },
{ label: '合同名称', prop: 'contractName', minWidth: 170 },
{ label: '付款方', prop: 'payerName', minWidth: 150 },
{ label: '收款方', prop: 'payeeName', minWidth: 150 },
{ label: '结算金额', prop: 'settlementAmount', minWidth: 130, money: true },
{ label: '创建时间', prop: 'createTime', minWidth: 170 },
];
export const candidateDetailColumns = [
{ label: '单据号', prop: 'documentNo', minWidth: 180 },
{ label: '项目名称', prop: 'projectName', minWidth: 140 },
{ label: '所属组织', prop: 'deptName', minWidth: 140 },
{ label: '生成日期', prop: 'feeDate', minWidth: 120 },
{ label: '客商名称', prop: 'customerName', minWidth: 150 },
{ label: '合同编号', prop: 'contractNo', minWidth: 150 },
{ label: '合同名称', prop: 'contractName', minWidth: 170 },
{ label: '来源', prop: 'sourceType', minWidth: 110 },
{ label: '运单号', prop: 'waybillNo', minWidth: 150 },
{ label: '车号', prop: 'vehicleNo', minWidth: 130 },
{ label: '运输类型', prop: 'transportType', minWidth: 120 },
{ label: '货物名称', prop: 'cargoName', minWidth: 140 },
{ label: '货物类型', prop: 'cargoType', minWidth: 130 },
{ label: '批次号', prop: 'batchNo', minWidth: 120 },
{ label: '应收应付合计', prop: 'totalAmount', minWidth: 140, money: true },
{ label: '状态', prop: 'settlementStatusName', minWidth: 110 },
];
export const paymentColumns = [
{ label: '付款类型', prop: 'paymentTypeName', minWidth: 120 },
{ label: '单据号', prop: 'paymentNo', minWidth: 160 },
{ label: '申请付款金额', prop: 'appliedAmount', minWidth: 145, money: true },
{ label: '已付款金额', prop: 'paidAmount', minWidth: 130, money: true },
{ label: '单据状态', prop: 'billStatusName', minWidth: 120 },
{ label: '金蝶单据号', prop: 'kingdeeBillNo', minWidth: 150 },
{ label: '创建时间', prop: 'createTime', minWidth: 170 },
];
@@ -0,0 +1,79 @@
export const settlementTypeOptions = [
{ label: '应收', value: 'receivable' },
{ label: '应付', value: 'payable' },
];
export const preSettlementFormFields = [
{ label: '预结算单号', prop: 'preSettlementNo', readonly: true },
{ label: '合同名称', prop: 'contractId', type: 'contract', required: true },
{ label: '合同编号', prop: 'contractNo', readonly: true },
{ label: '项目名称', prop: 'projectName', readonly: true },
{ label: '收款方', prop: 'payeeName', readonly: true },
{ label: '付款方', prop: 'payerName', readonly: true },
{ label: '结算类型', prop: 'settlementType', readonly: true },
{ label: '结算金额', prop: 'settlementAmount', readonly: true, money: true },
{ label: '汇率日期', prop: 'exchangeRateDate', type: 'date' },
{ label: '结算汇率', prop: 'exchangeRate', type: 'number' },
{ label: '本位币合计', prop: 'localSettlementAmount', readonly: true, money: true },
{ label: '创建人', prop: 'createUserName', readonly: true },
{ label: '创建日期', prop: 'createTime', readonly: true },
{ label: '备注', prop: 'remark', type: 'textarea', span: 24, maxlength: 200 },
];
export const preSettlementFormRules = {
contractId: [{ required: true, message: '请选择合同名称', trigger: 'change' }],
exchangeRateDate: [
{
validator: (_rule, value, callback, source) => {
if (source.currency && source.currency !== 'RMB' && !value) {
callback(new Error('外币结算请选择汇率日期'));
return;
}
callback();
},
trigger: 'change',
},
],
exchangeRate: [
{
validator: (_rule, value, callback, source) => {
if (source.currency && source.currency !== 'RMB' && (!value || Number(value) <= 0)) {
callback(new Error('外币结算请输入大于0的结算汇率'));
return;
}
callback();
},
trigger: ['blur', 'change'],
},
],
remark: [{ max: 200, message: '备注不能超过200个字符', trigger: 'blur' }],
};
export const emptyPreSettlementForm = () => ({
id: '',
preSettlementNo: '',
contractId: '',
contractNo: '',
contractName: '',
projectId: '',
projectName: '',
deptId: '',
deptName: '',
payeeName: '',
payerName: '',
settlementType: 'payable',
currency: 'RMB',
settlementAmount: 0,
localCurrency: 'RMB',
localSettlementAmount: 0,
exchangeRateDate: '',
exchangeRate: 1,
approvalStatus: 'draft',
approvalStatusName: '草稿',
currentNode: '草稿',
currentProcessor: '',
createUserName: '',
createTime: '',
attachmentsJson: '[]',
remark: '',
});
@@ -0,0 +1,25 @@
export const approvalStatusOptions = [
{ label: '草稿', value: 'draft' },
{ label: '审批中', value: 'reviewing' },
{ label: '审批通过', value: 'approved' },
{ label: '已驳回', value: 'returned' },
{ label: '已作废', value: 'voided' },
];
export const preSettlementSearchFields = [
{ label: '预结算单号', prop: 'preSettlementNo', type: 'input' },
{ label: '预付单号', prop: 'advanceNo', type: 'input' },
{ label: '项目名称', prop: 'projectName', type: 'input' },
{ label: '所属组织', prop: 'deptName', type: 'input' },
{ label: '合同名称', prop: 'contractName', type: 'input' },
{ label: '合同编号', prop: 'contractNo', type: 'input' },
{ label: '收款方', prop: 'payeeName', type: 'input' },
{ label: '付款方', prop: 'payerName', type: 'input' },
{ label: '生成日期', prop: 'createDateRange', type: 'daterange' },
{
label: '审核状态',
prop: 'approvalStatus',
type: 'select',
options: approvalStatusOptions,
},
];
@@ -0,0 +1,88 @@
export const preSettlementTableColumns = [
{ label: '预结算单号', prop: 'preSettlementNo', minWidth: 150, link: true, fixed: 'left' },
{ label: '来源', prop: 'sourceType', minWidth: 100 },
{ label: '付款方', prop: 'payerName', minWidth: 160 },
{ label: '收款方', prop: 'payeeName', minWidth: 160 },
{ label: '项目名称', prop: 'projectName', minWidth: 130 },
{ label: '所属组织', prop: 'deptName', minWidth: 140 },
{ label: '合同编号', prop: 'contractNo', minWidth: 140 },
{ label: '合同名称', prop: 'contractName', minWidth: 160 },
{ label: '原币结算金额', prop: 'settlementAmount', minWidth: 140, money: true, precision: 2 },
{ label: '本位币结算金额', prop: 'localSettlementAmount', minWidth: 150, money: true, precision: 2 },
{ label: '结算汇率', prop: 'exchangeRate', minWidth: 110, precision: 2 },
{ label: '申请预付金额', prop: 'advanceAppliedAmount', minWidth: 140, money: true },
{ label: '已付款金额', prop: 'advancePaidAmount', minWidth: 130, money: true },
{ label: '审核状态', prop: 'approvalStatusName', minWidth: 110, status: true },
{ label: '当前节点', prop: 'currentNode', minWidth: 130 },
{ label: '当前处理人', prop: 'currentProcessor', minWidth: 130 },
{ label: '创建人', prop: 'createUserName', minWidth: 110 },
{ label: '创建时间', prop: 'createTime', minWidth: 170 },
];
export const settlementSummaryColumns = [
{ label: '费用类型', prop: 'feeType', minWidth: 150 },
{ label: '费用项', prop: 'feeItem', minWidth: 160 },
{ label: '原金额', prop: 'originalAmount', minWidth: 130 },
{ label: '调整金额', prop: 'adjustAmount', minWidth: 140 },
{ label: '结算金额', prop: 'settlementAmount', minWidth: 140 },
{ label: '备注', prop: 'remark', minWidth: 200 },
];
export const settlementDetailColumns = [
{ label: '单据号', prop: 'documentNo', minWidth: 180, link: true },
{ label: '运单号', prop: 'waybillNo', minWidth: 160 },
{ label: '车号', prop: 'vehicleNo', minWidth: 130 },
{ label: '发货地址', prop: 'departureAddress', minWidth: 180 },
{ label: '到货地址', prop: 'arrivalAddress', minWidth: 180 },
{ label: '实际发货时间', prop: 'actualDepartureTime', minWidth: 170 },
{ label: '实际完成时间', prop: 'actualCompletionTime', minWidth: 170 },
{ label: '运输类型', prop: 'transportType', minWidth: 120 },
{ label: '货物名称', prop: 'cargoName', minWidth: 150 },
{ label: '货物类型', prop: 'cargoType', minWidth: 140 },
{ label: '运输总量', prop: 'transportQuantityText', minWidth: 120 },
{ label: '里程(KM', prop: 'mileage', minWidth: 120 },
{ label: '批次号', prop: 'batchNo', minWidth: 130 },
{ label: '运输单价', prop: 'unitPrice', minWidth: 120, money: true },
{ label: '运费', prop: 'freightAmount', minWidth: 120, money: true },
{ label: '原金额', prop: 'originalAmount', minWidth: 120, money: true },
{ label: '调整金额', prop: 'adjustAmount', minWidth: 120, money: true },
{ label: '结算金额(含税)', prop: 'settlementAmountTax', minWidth: 150, money: true },
{ label: '结算金额(不含税)', prop: 'settlementAmountNoTax', minWidth: 165, money: true },
{ label: '备注', prop: 'remark', minWidth: 180 },
];
export const advanceColumns = [
{ label: '预付单号', prop: 'advanceNo', minWidth: 160 },
{ label: '申请预付金额', prop: 'appliedAmount', minWidth: 150 },
{ label: '已付款金额', prop: 'paidAmount', minWidth: 140 },
{ label: '单据状态', prop: 'billStatus', minWidth: 120 },
{ label: '金蝶预付单号', prop: 'kingdeeAdvanceNo', minWidth: 170 },
{ label: '创建人', prop: 'createUserName', minWidth: 120 },
{ label: '创建时间', prop: 'createTime', minWidth: 170 },
];
export const changeRecordColumns = [
{ label: '变更类型', prop: 'changeType', minWidth: 130 },
{ label: '行号', prop: 'lineNo', minWidth: 80 },
{ label: '类型', prop: 'operationType', minWidth: 100 },
{ label: '变更内容', prop: 'changeContent', minWidth: 320 },
{ label: '操作人', prop: 'operatorName', minWidth: 120 },
{ label: '变更原因', prop: 'changeReason', minWidth: 180 },
{ label: '变更时间', prop: 'changeTime', minWidth: 170 },
];
export const candidateDetailColumns = [
{ label: '单据号', prop: 'documentNo', minWidth: 180 },
{ label: '费用日期', prop: 'feeDate', minWidth: 120 },
{ label: '客商名称', prop: 'customerName', minWidth: 150 },
{ label: '发货地点', prop: 'departureAddress', minWidth: 170 },
{ label: '到货地点', prop: 'arrivalAddress', minWidth: 170 },
{ label: '合同名称', prop: 'contractName', minWidth: 160 },
{ label: '运单号', prop: 'waybillNo', minWidth: 150 },
{ label: '车号', prop: 'vehicleNo', minWidth: 130 },
{ label: '运输类型', prop: 'transportType', minWidth: 120 },
{ label: '货物名称', prop: 'cargoName', minWidth: 140 },
{ label: '货物类型', prop: 'cargoType', minWidth: 130 },
{ label: '批次号', prop: 'batchNo', minWidth: 120 },
{ label: '结算金额', prop: 'totalAmount', minWidth: 130, money: true },
];
@@ -46,8 +46,6 @@ export const tableColumns = [
{ label: '里程(KM', prop: 'mileage', minWidth: 120, align: 'right' },
{ label: '批次号', prop: 'batchNo', minWidth: 120 },
{ label: '运输单价', prop: 'unitPriceText', minWidth: 120, align: 'right' },
{ label: '运输费', prop: 'freightAmountText', minWidth: 120, align: 'right' },
{ label: '其它费用', prop: 'otherFeeAmountText', minWidth: 120, align: 'right' },
{ label: '费用合计', prop: 'totalAmountText', minWidth: 130, align: 'right' },
{ label: '状态', prop: 'settlementStatusName', minWidth: 120 },
{ label: '创建人', prop: 'createUserName', minWidth: 120 },
@@ -114,6 +112,23 @@ export const generateWaybillColumns = [
{ label: '运输类型', prop: 'transportType', minWidth: 130 },
{ label: '承运类型', prop: 'carrierType', minWidth: 130 },
{ label: '货物信息', prop: 'cargoInfo', minWidth: 160 },
{ label: '发货地址', prop: 'departureAddress', minWidth: 220 },
{ label: '发货联系人', prop: 'departureContact', minWidth: 130 },
{ label: '到货地址', prop: 'arrivalAddress', minWidth: 220 },
{ label: '收货联系人', prop: 'arrivalContact', minWidth: 130 },
{ label: '单价', prop: 'unitPrice', minWidth: 110, align: 'right' },
{ label: '运费', prop: 'freight', minWidth: 110, align: 'right' },
{ label: '其他费用合计', prop: 'otherFeeTotal', minWidth: 140, align: 'right' },
{ label: '运费合计', prop: 'freightTotal', minWidth: 120, align: 'right' },
{ label: '客户合同', prop: 'contractName', minWidth: 160 },
{ label: '发货计划', prop: 'planName', minWidth: 140 },
{ label: '运输批次', prop: 'batchNo', minWidth: 140 },
{ label: '原始单号', prop: 'originalNo', minWidth: 140 },
{ label: '多式联运总单号', prop: 'masterNo', minWidth: 160 },
{ label: '备注', prop: 'remark', minWidth: 180 },
{ label: '创建时间', prop: 'createTime', minWidth: 170 },
{ label: '更新时间', prop: 'updateTime', minWidth: 170 },
{ label: '状态', prop: 'businessStatusName', minWidth: 110 },
];
export const generatePreviewColumns = [
@@ -0,0 +1,28 @@
export const settlementAdjustmentFormFields = [
{ label: '单据号', prop: 'adjustmentNo' },
{ label: '* 关联结算单号', prop: 'formalSettlementId' },
{ label: '客户/客商名称', prop: 'customerName' },
{ label: '结算单类型', prop: 'settlementTypeName' },
{ label: '关联合同名称', prop: 'contractName' },
{ label: '关联项目', prop: 'projectName' },
{ label: '原结算金额', prop: 'originalSettlementAmount', money: true },
{ label: '调整金额', prop: 'adjustmentAmount', money: true },
{ label: '调整后结算金额', prop: 'adjustedSettlementAmount', money: true },
];
export const createSettlementAdjustmentForm = () => ({
id: null,
adjustmentNo: '',
formalSettlementId: null,
formalSettlementNo: '',
settlementType: '',
projectName: '',
deptName: '',
customerName: '',
contractNo: '',
contractName: '',
adjustmentAmount: 0,
originalSettlementAmount: 0,
adjustedSettlementAmount: 0,
remark: '',
});
@@ -0,0 +1,20 @@
import { approvalStatusOptions } from '@/api/settlement/settlementAdjustment';
export const settlementAdjustmentSearchFields = [
{ label: '单据号', prop: 'adjustmentNo', type: 'input' },
{ label: '日期', prop: 'createDateRange', type: 'daterange' },
{ label: '客户名称', prop: 'customerName', type: 'input' },
{ label: '项目名称', prop: 'projectName', type: 'input' },
{ label: '所属组织', prop: 'deptName', type: 'input' },
{ label: '关联结算单', prop: 'formalSettlementNo', type: 'input' },
{
label: '结算单类型',
prop: 'settlementType',
type: 'select',
options: [
{ label: '应付', value: 'payable' },
{ label: '应收', value: 'receivable' },
],
},
{ label: '审核状态', prop: 'approvalStatus', type: 'select', options: approvalStatusOptions },
];
@@ -0,0 +1,18 @@
export const settlementAdjustmentTableColumns = [
{ label: '单据号', prop: 'adjustmentNo', minWidth: 160, link: true, fixed: 'left' },
{ label: '结算单号', prop: 'formalSettlementNo', minWidth: 160 },
{ label: '结算单类型', prop: 'settlementTypeName', minWidth: 110 },
{ label: '项目名称', prop: 'projectName', minWidth: 140 },
{ label: '所属组织', prop: 'deptName', minWidth: 140 },
{ label: '客商名称', prop: 'customerName', minWidth: 150 },
{ label: '合同编号', prop: 'contractNo', minWidth: 150 },
{ label: '合同名称', prop: 'contractName', minWidth: 170 },
{ label: '调整金额', prop: 'adjustmentAmount', minWidth: 130, money: true },
{ label: '原结算金额', prop: 'originalSettlementAmount', minWidth: 140, money: true },
{ label: '调整后结算金额', prop: 'adjustedSettlementAmount', minWidth: 160, money: true },
{ label: '审核状态', prop: 'approvalStatusName', minWidth: 110, status: true },
{ label: '当前节点', prop: 'currentNode', minWidth: 120 },
{ label: '当前处理人', prop: 'currentProcessor', minWidth: 130 },
{ label: '创建人', prop: 'createUserName', minWidth: 110 },
{ label: '创建时间', prop: 'createTime', minWidth: 170 },
];
@@ -0,0 +1,13 @@
export const transportReconciliationFormFields = [
{ prop: 'reconciliationNo', label: '对账单号', readonly: true },
{ prop: 'reconciliationMode', label: '对账模式', type: 'mode' },
{ prop: 'formalSettlementNo', label: '正式结算单', type: 'formal' },
{ prop: 'payerName', label: '付款方', readonly: true },
{ prop: 'payeeName', label: '收款方', readonly: true },
{ prop: 'projectName', label: '项目', readonly: true },
{ prop: 'deptName', label: '所属组织', readonly: true },
{ prop: 'contractName', label: '合同名称', readonly: true },
{ prop: 'paidAmount', label: '已付合计', money: true, readonly: true },
{ prop: 'reconcilerName', label: '对账人', readonly: true },
{ prop: 'reconciliationDate', label: '对账日期', type: 'date' },
];
@@ -0,0 +1,34 @@
export const reconciliationMatchStatusOptions = [
{ label: '全部', value: '' },
{ label: '未匹配', value: 'unmatched' },
{ label: '部分匹配', value: 'partial' },
{ label: '已匹配', value: 'matched' },
];
export const reconciliationStatusOptions = [
{ label: '全部', value: '' },
{ label: '未完成', value: 'unfinished' },
{ label: '已完成', value: 'completed' },
];
export const transportReconciliationSearchFields = [
{ prop: 'reconciliationNo', label: '对账单号', type: 'input' },
{ prop: 'preSettlementNos', label: '预结算单号', type: 'input' },
{ prop: 'projectName', label: '项目', type: 'input' },
{ prop: 'deptName', label: '所属组织', type: 'input' },
{ prop: 'contractNo', label: '合同编号', type: 'input' },
{ prop: 'payerName', label: '付款方', type: 'input' },
{ prop: 'payeeName', label: '收款方', type: 'input' },
{
prop: 'matchStatus',
label: '匹配状态',
type: 'select',
options: reconciliationMatchStatusOptions,
},
{
prop: 'reconciliationStatus',
label: '对账状态',
type: 'select',
options: reconciliationStatusOptions,
},
];
@@ -0,0 +1,77 @@
export const transportReconciliationTableColumns = [
{ prop: 'reconciliationNo', label: '对账单号', minWidth: 150, link: true },
{ prop: 'payerName', label: '付款方', minWidth: 150 },
{ prop: 'payeeName', label: '收款方', minWidth: 150 },
{ prop: 'projectName', label: '项目名称', minWidth: 120 },
{ prop: 'deptName', label: '所属组织', minWidth: 120 },
{ prop: 'contractNo', label: '合同编号', minWidth: 130 },
{ prop: 'contractName', label: '合同名称', minWidth: 150 },
{ prop: 'settlementAmount', label: '结算金额', minWidth: 120, money: true },
{ prop: 'reconciliationModeName', label: '对账模式', minWidth: 110 },
{ prop: 'externalBillCount', label: '账单总数(条)', minWidth: 110 },
{ prop: 'matchedCount', label: '匹配数(条)', minWidth: 100 },
{ prop: 'reconciliationStatusName', label: '对账状态', minWidth: 100 },
{ prop: 'createUserName', label: '创建人', minWidth: 100 },
{ prop: 'createTime', label: '创建时间', minWidth: 160 },
];
export const internalColumns = [
{ prop: 'documentNo', label: '单据号', minWidth: 150 },
{ prop: 'waybillNo', label: '运单号', minWidth: 120 },
{ prop: 'matchedExternalLineNo', label: '匹配外部账单行号', minWidth: 140 },
{ prop: 'vehicleNo', label: '车号', minWidth: 100 },
{ prop: 'departureAddress', label: '发货地址', minWidth: 180 },
{ prop: 'arrivalAddress', label: '到货地址', minWidth: 180 },
{ prop: 'actualDepartureTime', label: '实际发货时间', minWidth: 150 },
{ prop: 'actualCompletionTime', label: '实际完成时间', minWidth: 150 },
{ prop: 'transportType', label: '运输类型', minWidth: 120 },
{ prop: 'cargoName', label: '货物名称', minWidth: 120 },
{ prop: 'cargoType', label: '货物类型', minWidth: 120 },
{ prop: 'specification', label: '规格', minWidth: 100 },
{ prop: 'model', label: '型号', minWidth: 100 },
{ prop: 'transportQuantity', label: '运输总量', minWidth: 100, number: true },
{ prop: 'mileage', label: '里程(KM', minWidth: 100, number: true },
{ prop: 'batchNo', label: '批次号', minWidth: 100 },
{ prop: 'unitPrice', label: '运输单价', minWidth: 110, money: true },
{ prop: 'freightAmount', label: '运输费', minWidth: 110, money: true },
{ prop: 'settlementAmount', label: '结算金额', minWidth: 120, money: true },
{ prop: 'matchResult', label: '匹配结果', minWidth: 100 },
{ prop: 'updateResult', label: '账单更新结果', minWidth: 130 },
];
export const externalVehicleColumns = [
{ prop: 'externalLineNo', label: '序号', minWidth: 70 },
{ prop: 'vehicleNo', label: '车牌号', minWidth: 110 },
{ prop: 'departureAddress', label: '发货地址', minWidth: 180 },
{ prop: 'arrivalAddress', label: '到货地址', minWidth: 180 },
{ prop: 'actualDepartureTime', label: '实际发货时间', minWidth: 150 },
{ prop: 'actualCompletionTime', label: '实际完成时间', minWidth: 150 },
{ prop: 'transportType', label: '运输类型', minWidth: 120 },
{ prop: 'cargoName', label: '货物名称', minWidth: 120 },
{ prop: 'cargoType', label: '货物类型', minWidth: 120 },
{ prop: 'transportQuantity', label: '运输总量', minWidth: 100, number: true },
{ prop: 'mileage', label: '里程(KM', minWidth: 100, number: true },
{ prop: 'batchNo', label: '批次号', minWidth: 100 },
{ prop: 'unitPrice', label: '运输单价', minWidth: 110, money: true },
{ prop: 'freightAmount', label: '运费', minWidth: 110, money: true },
{ prop: 'settlementAmount', label: '结算费用合计', minWidth: 130, money: true },
{ prop: 'matchStatus', label: '匹配状态', minWidth: 110 },
];
export const externalCargoColumns = [
{ prop: 'externalLineNo', label: '序号', minWidth: 70 },
{ prop: 'vehicleNo', label: '车牌号', minWidth: 110 },
{ prop: 'departureAddress', label: '发货地址', minWidth: 180 },
{ prop: 'arrivalAddress', label: '到货地址', minWidth: 180 },
{ prop: 'actualDepartureTime', label: '实际发货时间', minWidth: 150 },
{ prop: 'actualCompletionTime', label: '实际完成时间', minWidth: 150 },
{ prop: 'cargoName', label: '货物名称', minWidth: 120 },
{ prop: 'cargoType', label: '货物类型', minWidth: 120 },
{ prop: 'specification', label: '规格', minWidth: 100 },
{ prop: 'model', label: '型号', minWidth: 100 },
{ prop: 'transportQuantity', label: '运输量', minWidth: 100, number: true },
{ prop: 'unitPrice', label: '运输单价', minWidth: 110, money: true },
{ prop: 'mileage', label: '里程(KM', minWidth: 100, number: true },
{ prop: 'freightAmount', label: '运输费', minWidth: 110, money: true },
{ prop: 'settlementAmount', label: '结算金额', minWidth: 120, money: true },
];
+7 -6
View File
@@ -23,11 +23,7 @@ export const insuranceTypeDic = [
{ label: '船舶险', value: '船舶险' },
];
export const ocrTemplateDic = [
{ label: '紫金-机动车交强险', value: '紫金-机动车交强险' },
{ label: '机动车商业险', value: '机动车商业险' },
{ label: '船舶保险', value: '船舶保险' },
];
export const ocrTemplateDic = [];
export const option = {
height: 'auto',
@@ -67,9 +63,14 @@ export const option = {
prop: 'ocrTemplate',
type: 'select',
dicData: ocrTemplateDic,
value: '紫金-机动车交强险',
value: '',
hide: true,
display: true,
addDisplay: true,
editDisplay: true,
viewDisplay: true,
span: 12,
rules: [{ required: true, message: '请选择OCR识别模板', trigger: 'change' }],
},
{
label: '上传文件',