项目、合同fix

This commit is contained in:
2026-08-06 17:40:03 +08:00
parent 5e92124710
commit e6d4edf362
15 changed files with 887 additions and 335 deletions

View File

@@ -87,8 +87,10 @@ export const approvalStatusOptions = [
];
export const effectiveTypeOptions = [
{ label: '临时', value: 'temporary' },
{ label: '正式', value: 'formal' },
{ label: '未生效', value: 'not_effective' },
{ label: '临时生效', value: 'temporary_effective' },
{ label: '正式生效', value: 'formal_effective' },
{ label: '已过期', value: 'expired' },
];
export const businessTypeOptions = [

View File

@@ -6,11 +6,18 @@ import {
createCrudOption,
effectiveTypeOptions,
selectRule,
settlementModeOptions,
signTypeOptions,
textRule,
} from './common';
const contractSettlementModeOptions = [
{ label: '现结', value: '现结' },
{ label: '日结', value: '日结' },
{ label: '周结', value: '周结' },
{ label: '月结', value: '月结' },
{ label: '按固定天数周期', value: '按固定天数周期' },
];
const listDicFormatter = res => {
const data = res?.data || res;
if (Array.isArray(data)) return data;
@@ -25,7 +32,13 @@ export const config = {
permission: 'contract_manage',
exportUrl: '/blade-transport/contract-manage/export-contract-manage',
exportName: '合同管理',
enableAllDept: false,
defaultForm: {
contractCategory: '客户合同',
},
projectPlaceholder: '请选择',
organizationPlaceholder: '请选择',
enableAllDept: true,
allDeptReadonly: false,
batchDelete: false,
enableContractForm: true,
enableProjectSelect: true,
@@ -39,6 +52,7 @@ export const config = {
enableChangeRecord: true,
enableOrganizationSelect: true,
enableContractCreateActions: true,
enableContractExpiryTags: true,
actions: ['copy'],
statusProp: 'approvalStatus',
statusTextProp: 'approvalStatusName',
@@ -63,9 +77,25 @@ export const config = {
label: '撤回',
statusProp: 'approvalStatus',
status: ['reviewing'],
stage: ['temporary'],
stage: ['temporary', 'formal'],
permission: 'contract_manage_withdraw',
},
{
action: 'approve',
label: '通过',
statusProp: 'approvalStatus',
status: ['reviewing'],
stage: ['temporary', 'formal'],
permission: 'contract_manage_approve',
},
{
action: 'reject',
label: '驳回',
statusProp: 'approvalStatus',
status: ['reviewing'],
stage: ['temporary', 'formal'],
permission: 'contract_manage_reject',
},
{
action: 'submitFormal',
label: '重新提交转正',
@@ -143,16 +173,18 @@ export const option = createCrudOption([
prop: 'contractNo',
search: true,
searchOrder: 6,
searchPlaceholder: '请输入',
order: 185,
disabled: true,
placeholder: '不填写,则系统自动生成',
minWidth: 160,
minWidth: 200,
},
{
label: '合同名称',
prop: 'contractName',
search: true,
searchOrder: 7,
searchPlaceholder: '请输入',
order: 180,
minWidth: 180,
rules: textRule('合同名称', 100, true),
@@ -163,6 +195,7 @@ export const option = createCrudOption([
search: true,
searchOrder: 8,
searchType: 'select',
searchPlaceholder: '请选择',
formslot: true,
order: 140,
dicUrl: '/blade-transport/project-apply/list?current=1&size=9999',
@@ -187,6 +220,7 @@ export const option = createCrudOption([
search: true,
searchOrder: 3,
searchType: 'cascader',
searchPlaceholder: '全部',
formslot: true,
order: 120,
dicData: [],
@@ -208,6 +242,7 @@ export const option = createCrudOption([
type: 'select',
search: true,
searchOrder: 9,
searchPlaceholder: '请选择',
order: 170,
dicData: contractCategoryOptions,
minWidth: 130,
@@ -217,10 +252,8 @@ export const option = createCrudOption([
label: '签约类型',
prop: 'signType',
type: 'select',
search: true,
searchOrder: 1,
search: false,
span: 6,
row: true,
order: 190,
dicData: signTypeOptions,
minWidth: 120,
@@ -232,6 +265,7 @@ export const option = createCrudOption([
type: 'select',
search: true,
searchOrder: 5,
searchPlaceholder: '请选择',
dicData: effectiveTypeOptions,
hide: true,
display: false,
@@ -241,7 +275,8 @@ export const option = createCrudOption([
prop: 'partyA',
type: 'select',
order: 160,
dicUrl: '/blade-transport/customer-archive/list?current=1&size=9999&approvalStatus=approved&status=1',
dicUrl:
'/blade-transport/customer-archive/list?current=1&size=9999&customerType=客户&approvalStatus=approved&status=1',
dicFormatter: listDicFormatter,
props: {
label: 'fullName',
@@ -256,7 +291,8 @@ export const option = createCrudOption([
prop: 'partyB',
type: 'select',
order: 150,
dicUrl: '/blade-transport/customer-archive/list?current=1&size=9999&approvalStatus=approved&status=1',
dicUrl:
'/blade-transport/customer-archive/list?current=1&size=9999&customerType=承运商&approvalStatus=approved&status=1',
dicFormatter: listDicFormatter,
props: {
label: 'fullName',
@@ -334,14 +370,14 @@ export const option = createCrudOption([
rules: [{ required: true, message: '请选择签订日期', trigger: 'change' }],
},
{
label: '结算方式',
label: '结算类型',
prop: 'settlementMode',
type: 'select',
dicData: settlementModeOptions,
dicData: contractSettlementModeOptions,
hide: true,
order: 90,
minWidth: 120,
rules: selectRule('结算方式'),
rules: selectRule('结算类型'),
},
{
label: '合同格式',
@@ -392,7 +428,7 @@ export const option = createCrudOption([
type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss',
minWidth: 160,
minWidth: 190,
addDisplay: false,
editDisplay: false,
},
@@ -402,6 +438,7 @@ export const option = createCrudOption([
type: 'select',
search: true,
searchOrder: 2,
searchPlaceholder: '请选择',
slot: true,
dicData: contractStageOptions,
minWidth: 120,
@@ -414,6 +451,7 @@ export const option = createCrudOption([
type: 'select',
search: true,
searchOrder: 4,
searchPlaceholder: '请选择',
slot: true,
dicData: contractApprovalStatusOptions,
minWidth: 130,
@@ -572,3 +610,6 @@ export const option = createCrudOption([
option.span = 8;
option.dialogWidth = 1480;
option.dialogTop = '10px';
option.dialogCloseBtn = true;
option.menuWidth = 320;

View File

@@ -29,6 +29,14 @@ const userDicFormatter = res => {
}));
};
const formatUserRealName = (row, role) =>
row[`${role}RealName`] ||
row[`${role}UserRealName`] ||
row[`${role}User`]?.realName ||
row[role]?.realName ||
row[`${role}UserName`] ||
'';
export const config = {
title: '项目管理',
permission: 'project_apply',
@@ -94,8 +102,9 @@ export const option = createCrudOption([
label: '立项申请单号',
prop: 'applyNo',
search: true,
searchPlaceholder: '请输入',
searchOrder: 7,
minWidth: 160,
minWidth: 220,
addDisplay: false,
editDisabled: true,
},
@@ -110,6 +119,7 @@ export const option = createCrudOption([
label: '项目名称',
prop: 'projectName',
search: true,
searchPlaceholder: '请输入',
searchOrder: 6,
minWidth: 180,
maxlength: 50,
@@ -128,6 +138,7 @@ export const option = createCrudOption([
prop: 'projectType',
type: 'select',
search: true,
searchPlaceholder: '请选择',
searchOrder: 3,
dicData: projectTypeOptions,
minWidth: 120,
@@ -156,7 +167,7 @@ export const option = createCrudOption([
label: '承办部门',
prop: 'undertakeDeptName',
search: true,
searchLabel: '承办单位',
searchPlaceholder: '请输入',
searchOrder: 5,
minWidth: 150,
rules: textRule('承办部门', 50, true),
@@ -170,6 +181,7 @@ export const option = createCrudOption([
label: '项目负责人',
prop: 'principalUserName',
minWidth: 130,
formatter: row => formatUserRealName(row, 'principal'),
rules: textRule('项目负责人', 50, true),
},
{
@@ -177,6 +189,7 @@ export const option = createCrudOption([
prop: 'principalUserId',
type: 'select',
search: true,
searchPlaceholder: '请选择',
searchOrder: 4,
filterable: true,
dicUrl: '/blade-system/user/user-list',
@@ -193,6 +206,7 @@ export const option = createCrudOption([
prop: 'handlerUserName',
hide: true,
minWidth: 130,
formatter: row => formatUserRealName(row, 'handler'),
rules: textRule('项目经办人', 50, true),
},
{
@@ -336,6 +350,7 @@ export const option = createCrudOption([
prop: 'approvalStatus',
type: 'select',
search: true,
searchPlaceholder: '请选择',
searchOrder: 2,
slot: true,
dicData: projectApprovalStatusOptions,
@@ -362,6 +377,7 @@ export const option = createCrudOption([
prop: 'effectiveType',
type: 'select',
search: true,
searchPlaceholder: '请选择',
searchOrder: 1,
dicData: effectiveTypeOptions,
value: 'temporary',

View File

@@ -28,6 +28,9 @@ export const config = {
exportName: '临时额度申请',
enableAllDept: false,
enableProjectSelect: true,
projectQueryParams: {
temporaryCreditLimitSelectable: true,
},
enableAttachmentTable: true,
enableDraftSave: true,
saveAsDraft: true,
@@ -108,6 +111,7 @@ export const option = {
value: 'projectName',
},
filterable: true,
span: 12,
minWidth: 180,
rules: textRule('项目名称', 100, true),
},
@@ -122,14 +126,16 @@ export const option = {
prop: 'projectCode',
hide: true,
disabled: true,
span: 12,
minWidth: 150,
rules: textRule('项目编号', 50, true),
rules: textRule('项目编号', 50),
},
{
label: '承办部门',
prop: 'undertakeDeptName',
hide: true,
disabled: true,
span: 12,
minWidth: 150,
rules: textRule('承办部门', 50, true),
},
@@ -138,6 +144,7 @@ export const option = {
prop: 'projectFundLimit',
hide: true,
disabled: true,
span: 12,
minWidth: 200,
rules: [nonNegativeRule('项目资金使用额度')],
},
@@ -146,6 +153,7 @@ export const option = {
prop: 'usedFundLimit',
hide: true,
disabled: true,
span: 12,
minWidth: 220,
value: 0,
rules: [nonNegativeRule('已使用项目资金额度')],
@@ -155,6 +163,7 @@ export const option = {
prop: 'remainingFundLimit',
hide: true,
disabled: true,
span: 12,
minWidth: 230,
value: 0,
rules: [nonNegativeRule('剩余项目资金使用额度')],
@@ -163,6 +172,7 @@ export const option = {
label: '申请临时额度(万元)',
prop: 'applyLimit',
formslot: true,
span: 12,
minWidth: 180,
rules: [
{ required: true, message: '请输入申请临时额度', trigger: 'blur' },
@@ -175,6 +185,7 @@ export const option = {
type: 'date',
format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD',
span: 12,
minWidth: 140,
rules: [{ required: true, message: '请选择申请有效期至', trigger: 'change' }],
},
@@ -260,6 +271,6 @@ export const option = {
},
...auditColumns.map(column => ({ ...column, hide: true })),
]),
dialogWidth: 1480,
dialogWidth: 1010,
index: false,
};

View File

@@ -14,23 +14,30 @@ export const option = {
editBtn: false,
delBtn: false,
viewBtn: false,
menuWidth: 160,
menuWidth: 220,
dialogClickModal: false,
column: [
{ label: '船舶名', prop: 'shipName', search: true, searchOrder: 5, slot: true, width: 130 },
{
label: '船舶名',
prop: 'shipName',
search: true,
searchOrder: 5,
slot: true,
minWidth: 130,
},
{
label: '船舶识别号',
prop: 'shipIdentifierNo',
search: true,
searchOrder: 4,
width: 140,
minWidth: 140,
},
{
label: '船检登记号',
prop: 'shipInspectionNo',
search: true,
searchOrder: 3,
width: 130,
minWidth: 130,
},
{
label: '船舶类型',
@@ -44,7 +51,7 @@ export const option = {
{ label: '杂货船', value: '杂货船' },
{ label: '油船', value: '油船' },
],
width: 110,
minWidth: 110,
align: 'center',
},
{
@@ -55,7 +62,7 @@ export const option = {
type: 'select',
filterable: true,
dicData: [],
width: 160,
minWidth: 160,
},
{
label: '状态',
@@ -66,30 +73,36 @@ export const option = {
{ label: '启用', value: 1 },
{ label: '停用', value: 2 },
],
width: 90,
minWidth: 90,
align: 'center',
},
{
label: '国籍证有效期至',
prop: 'nationalityCertEndDate',
slot: true,
width: 150,
minWidth: 150,
align: 'center',
},
{
label: '最低安全配员证书有效期至',
prop: 'safeManningCertEndDate',
slot: true,
width: 210,
minWidth: 210,
align: 'center',
},
{
label: '营业运输证有效期至',
prop: 'businessTransportCertEndDate',
slot: true,
width: 170,
minWidth: 170,
align: 'center',
},
{
label: '承租有效期至',
prop: 'leaseEndDate',
slot: true,
minWidth: 140,
align: 'center',
},
{ label: '承租有效期至', prop: 'leaseEndDate', slot: true, width: 140, align: 'center' },
],
};

View File

@@ -14,7 +14,7 @@ export const option = {
editBtn: false,
delBtn: false,
viewBtn: false,
menuWidth: 160,
menuWidth: 220,
dialogClickModal: false,
column: [
{
@@ -23,7 +23,7 @@ export const option = {
search: true,
searchOrder: 5,
slot: true,
width: 120,
minWidth: 120,
},
{
label: '所属组织',
@@ -33,7 +33,7 @@ export const option = {
type: 'select',
filterable: true,
dicData: [],
width: 150,
minWidth: 150,
},
{
label: '业务关系',
@@ -47,7 +47,7 @@ export const option = {
{ label: '管理挂靠', value: '管理挂靠' },
{ label: '业务合作', value: '业务合作' },
],
width: 120,
minWidth: 120,
align: 'center',
},
{
@@ -65,13 +65,13 @@ export const option = {
{ label: '拖挂车', value: '拖挂' },
{ label: '半挂车', value: '半挂' },
],
width: 110,
minWidth: 110,
align: 'center',
},
{
label: '核定载质量(KG)',
prop: 'approvedLoadKg',
width: 140,
minWidth: 140,
align: 'right',
},
{
@@ -85,28 +85,28 @@ export const option = {
{ label: '启用', value: 1 },
{ label: '停用', value: 2 },
],
width: 90,
minWidth: 90,
align: 'center',
},
{
label: '行驶证有效期',
prop: 'drivingLicenseEndDate',
slot: true,
width: 140,
minWidth: 140,
align: 'center',
},
{
label: '道路运输证有效期',
prop: 'roadTransportCertEndDate',
slot: true,
width: 160,
minWidth: 160,
align: 'center',
},
{
label: '年审有效期',
prop: 'annualReviewEndDate',
slot: true,
width: 130,
minWidth: 130,
align: 'center',
},
],