截止‘运力管理’模块

This commit is contained in:
2026-07-20 11:26:51 +08:00
parent e66b4a3680
commit c6dffb5d97
98 changed files with 19429 additions and 176 deletions

View File

@@ -0,0 +1,277 @@
import { formatUpdateUserName } from '@/utils/audit';
const validateNonNegative = (rule, value, callback) => {
if (value === undefined || value === null || value === '') {
callback();
} else if (Number(value) < 0) {
callback(new Error('不能小于 0'));
} else {
callback();
}
};
export const vehicleTypeDic = [
{ label: '车辆', value: '车辆' },
{ label: '船舶', value: '船舶' },
];
export const accidentNatureDic = [
{ label: '重大事故', value: '重大事故' },
{ label: '一般事故', value: '一般事故' },
{ label: '轻微事故', value: '轻微事故' },
{ label: '其他', value: '其他' },
];
export const accidentResponsibilityDic = [
{ label: '全部责任', value: '全部责任' },
{ label: '主要责任', value: '主要责任' },
{ label: '同等责任', value: '同等责任' },
{ label: '次要责任', value: '次要责任' },
{ label: '无责任', value: '无责任' },
];
export const option = {
height: 'auto',
calcHeight: 32,
dialogWidth: 1050,
labelPosition: 'top',
tip: false,
searchShow: true,
searchMenuSpan: 6,
border: true,
index: true,
viewBtn: true,
selection: true,
dialogClickModal: false,
menuWidth: 180,
column: [
{
label: '车船类型',
prop: 'vehicleType',
type: 'radio',
minWidth: 110,
dicData: vehicleTypeDic,
value: '车辆',
search: true,
rules: [{ required: true, message: '请选择车船类型', trigger: 'change' }],
},
{
label: '车牌号/船号',
prop: 'vehicleNo',
slot: true,
formslot: true,
search: true,
minWidth: 140,
rules: [
{ required: true, message: '请输入车牌号/船号', trigger: 'blur' },
{ max: 30, message: '最多 30 个字符', trigger: 'blur' },
],
},
{
label: '事故发生日期',
prop: 'accidentDate',
type: 'date',
format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD',
minWidth: 140,
rules: [{ required: true, message: '请选择事故发生日期', trigger: 'click' }],
},
{
label: '事故发生地点',
prop: 'accidentLocation',
minWidth: 200,
overHidden: true,
rules: [{ max: 100, message: '最多 100 个字符', trigger: 'blur' }],
},
{
label: '事故性质',
prop: 'accidentNature',
type: 'select',
dicData: accidentNatureDic,
search: true,
minWidth: 120,
},
{
label: '事故责任',
prop: 'accidentResponsibility',
type: 'select',
dicData: accidentResponsibilityDic,
search: true,
minWidth: 120,
},
{
label: '直接经济损失',
prop: 'directEconomicLoss',
type: 'number',
precision: 2,
minWidth: 140,
rules: [{ validator: validateNonNegative, trigger: 'blur' }],
},
{
label: '保险理赔金额',
prop: 'insuranceClaimAmount',
type: 'number',
precision: 2,
minWidth: 140,
rules: [{ validator: validateNonNegative, trigger: 'blur' }],
},
{
label: '事故原因',
prop: 'accidentReasonDamage',
type: 'textarea',
minRows: 3,
span: 24,
search: true,
hide: true,
rules: [{ max: 500, message: '最多 500 个字符', trigger: 'blur' }],
},
{
label: '备注',
prop: 'remark',
type: 'textarea',
minRows: 3,
span: 24,
hide: true,
rules: [{ max: 200, message: '最多 200 个字符', trigger: 'blur' }],
},
{
label: '附件',
prop: 'attachments',
type: 'upload',
listType: 'text',
multiple: true,
accept: '.jpg,.jpeg,.png,.pdf',
propsHttp: {
res: 'data',
url: 'link',
name: 'name',
},
action: '/blade-resource/oss/endpoint/put-file',
span: 24,
minWidth: 100,
slot: true,
},
{
label: '事故评定开始日期',
prop: 'accidentAssessmentDateStart',
type: 'date',
format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD',
search: true,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
},
{
label: '事故评定结束日期',
prop: 'accidentAssessmentDateEnd',
type: 'date',
format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD',
search: true,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
},
{
label: '创建时间',
prop: 'createTime',
type: 'date',
format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss',
addDisplay: false,
editDisplay: false,
viewDisplay: false,
display: false,
minWidth: 170,
},
{
label: '创建开始时间',
prop: 'createTimeStart',
type: 'date',
format: 'YYYY-MM-DD 00:00:00',
valueFormat: 'YYYY-MM-DD 00:00:00',
search: true,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
},
{
label: '创建结束时间',
prop: 'createTimeEnd',
type: 'date',
format: 'YYYY-MM-DD 23:59:59',
valueFormat: 'YYYY-MM-DD 23:59:59',
search: true,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
},
{
label: '组织',
prop: 'createDept',
type: 'tree',
dicData: [],
props: {
label: 'title',
value: 'id',
},
checkStrictly: true,
search: true,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
},
{
label: '更新人',
prop: 'updateUserName',
formatter: formatUpdateUserName,
addDisplay: false,
editDisplay: false,
display: false,
minWidth: 180,
},
{
label: '更新时间',
prop: 'updateTime',
type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss',
addDisplay: false,
editDisplay: false,
display: false,
minWidth: 170,
},
],
};
export const excelOption = {
submitBtn: false,
emptyBtn: false,
column: [
{
label: '模板上传',
prop: 'excelFile',
type: 'upload',
drag: true,
loadText: '模板上传中,请稍等',
span: 24,
propsHttp: {
res: 'data',
},
tip: '请上传 .xls,.xlsx 标准格式文件',
action: '/blade-transport/accident-record/import-accident-record',
},
{
label: '模板下载',
prop: 'excelTemplate',
formslot: true,
span: 24,
},
],
};

View File

@@ -0,0 +1,284 @@
import { formatUpdateUserName } from '@/utils/audit';
const validateNonNegative = (rule, value, callback) => {
if (value === undefined || value === null || value === '') {
callback();
} else if (Number(value) < 0) {
callback(new Error('不能小于 0'));
} else {
callback();
}
};
export const vehicleTypeDic = [
{ label: '车辆', value: '车辆' },
{ label: '船舶', value: '船舶' },
];
export const vehicleTechnicalLevelDic = [
{ label: '一级', value: '一级' },
{ label: '二级', value: '二级' },
{ label: '三级', value: '三级' },
{ label: '其他', value: '其他' },
];
export const shipInspectionTypeDic = [
{ label: '年检', value: '年检' },
{ label: '中检', value: '中检' },
{ label: '特检', value: '特检' },
{ label: '其他', value: '其他' },
];
export const option = {
height: 'auto',
calcHeight: 32,
dialogWidth: 1050,
labelPosition: 'top',
tip: false,
searchShow: true,
searchMenuSpan: 6,
border: true,
index: true,
viewBtn: true,
selection: true,
dialogClickModal: false,
menuWidth: 180,
column: [
{
label: '车船类型',
prop: 'vehicleType',
type: 'radio',
minWidth: 110,
dicData: vehicleTypeDic,
value: '车辆',
search: true,
rules: [{ required: true, message: '请选择车船类型', trigger: 'change' }],
},
{
label: '车牌号/船号',
prop: 'vehicleNo',
slot: true,
formslot: true,
search: true,
minWidth: 140,
rules: [
{ required: true, message: '请输入车牌号/船号', trigger: 'blur' },
{ max: 30, message: '最多 30 个字符', trigger: 'blur' },
],
},
{
label: '检测评定日期',
prop: 'inspectionAssessmentDate',
type: 'date',
format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD',
minWidth: 140,
rules: [{ required: true, message: '请选择检测评定日期', trigger: 'click' }],
},
{
label: '有效期截止日',
prop: 'validUntilDate',
type: 'date',
format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD',
minWidth: 140,
rules: [{ required: true, message: '请选择有效期截止日', trigger: 'click' }],
},
{
label: '车辆技术等级',
prop: 'vehicleTechnicalLevel',
type: 'select',
dicData: vehicleTechnicalLevelDic,
minWidth: 130,
rules: [{ required: true, message: '请选择车辆技术等级', trigger: 'change' }],
},
{
label: '船舶检验类型',
prop: 'shipInspectionType',
type: 'select',
dicData: shipInspectionTypeDic,
display: false,
minWidth: 130,
rules: [{ required: true, message: '请选择船舶检验类型', trigger: 'change' }],
},
{
label: '客车类型及等级',
prop: 'passengerTypeLevel',
minWidth: 150,
hide: true,
rules: [{ max: 50, message: '最多 50 个字符', trigger: 'blur' }],
},
{
label: '检测评定单位',
prop: 'inspectionUnit',
minWidth: 160,
rules: [{ max: 50, message: '最多 50 个字符', trigger: 'blur' }],
},
{
label: '费用',
prop: 'fee',
type: 'number',
precision: 2,
minWidth: 100,
rules: [
{ required: true, message: '请输入费用', trigger: 'blur' },
{ validator: validateNonNegative, trigger: 'blur' },
],
},
{
label: '评定(复核)单位',
prop: 'assessmentUnit',
minWidth: 160,
hide: true,
rules: [{ max: 50, message: '最多 50 个字符', trigger: 'blur' }],
},
{
label: '备注',
prop: 'remark',
type: 'textarea',
minRows: 3,
span: 24,
hide: true,
rules: [{ max: 200, message: '最多 200 个字符', trigger: 'blur' }],
},
{
label: '附件',
prop: 'attachments',
type: 'upload',
listType: 'text',
multiple: true,
accept: '.jpg,.jpeg,.png,.pdf',
propsHttp: {
res: 'data',
url: 'link',
name: 'name',
},
action: '/blade-resource/oss/endpoint/put-file',
span: 24,
minWidth: 100,
slot: true,
},
{
label: '检测评定开始日期',
prop: 'inspectionAssessmentDateStart',
type: 'date',
format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD',
search: true,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
},
{
label: '检测评定结束日期',
prop: 'inspectionAssessmentDateEnd',
type: 'date',
format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD',
search: true,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
},
{
label: '创建时间',
prop: 'createTime',
type: 'date',
format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss',
addDisplay: false,
editDisplay: false,
viewDisplay: false,
display: false,
minWidth: 170,
},
{
label: '创建开始时间',
prop: 'createTimeStart',
type: 'date',
format: 'YYYY-MM-DD 00:00:00',
valueFormat: 'YYYY-MM-DD 00:00:00',
search: true,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
},
{
label: '创建结束时间',
prop: 'createTimeEnd',
type: 'date',
format: 'YYYY-MM-DD 23:59:59',
valueFormat: 'YYYY-MM-DD 23:59:59',
search: true,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
},
{
label: '组织',
prop: 'createDept',
type: 'tree',
dicData: [],
props: {
label: 'title',
value: 'id',
},
checkStrictly: true,
search: true,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
},
{
label: '更新人',
prop: 'updateUserName',
formatter: formatUpdateUserName,
addDisplay: false,
editDisplay: false,
display: false,
minWidth: 180,
},
{
label: '更新时间',
prop: 'updateTime',
type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss',
addDisplay: false,
editDisplay: false,
display: false,
minWidth: 170,
},
],
};
export const excelOption = {
submitBtn: false,
emptyBtn: false,
column: [
{
label: '模板上传',
prop: 'excelFile',
type: 'upload',
drag: true,
loadText: '模板上传中,请稍等',
span: 24,
propsHttp: {
res: 'data',
},
tip: '请上传 .xls,.xlsx 标准格式文件',
action: '/blade-transport/annual-inspection-record/import-annual-inspection-record',
},
{
label: '模板下载',
prop: 'excelTemplate',
formslot: true,
span: 24,
},
],
};

View File

@@ -0,0 +1,211 @@
import { formatUpdateUserName } from '@/utils/audit';
const isEmpty = value => value === undefined || value === null || value === '';
const validateNonNegative = (rule, value, callback) => {
if (isEmpty(value)) {
callback();
} else if (Number(value) < 0) {
callback(new Error('不能小于 0'));
} else {
callback();
}
};
const maskEtcCardNo = value => {
if (!value) return '';
const cardNo = String(value);
if (cardNo.length <= 8) return cardNo.replace(/.(?=.{4})/g, '*');
return `${cardNo.slice(0, 4)}**** ****${cardNo.slice(-8)}`;
};
export const option = {
height: 'auto',
calcHeight: 32,
dialogWidth: 980,
labelPosition: 'top',
tip: false,
searchShow: true,
searchMenuSpan: 6,
border: true,
index: true,
viewBtn: true,
selection: true,
dialogClickModal: false,
menuWidth: 180,
menuFixed: 'right',
column: [
{
label: '车牌号',
prop: 'vehicleNo',
slot: true,
formslot: true,
search: true,
minWidth: 140,
rules: [
{ required: true, message: '请输入车牌号', trigger: 'blur' },
{ max: 30, message: '最多 30 个字符', trigger: 'blur' },
],
},
{
label: 'ETC卡号',
prop: 'etcCardNo',
formatter: row => maskEtcCardNo(row.etcCardNo),
search: true,
minWidth: 220,
rules: [
{ required: true, message: '请输入ETC卡号', trigger: 'blur' },
{ max: 30, message: '最多 30 个字符', trigger: 'blur' },
],
},
{
label: '入口时间',
prop: 'entryTime',
type: 'datetime',
format: 'YYYY-MM-DD HH:mm',
valueFormat: 'YYYY-MM-DD HH:mm:ss',
minWidth: 170,
},
{
label: '出口时间',
prop: 'exitTime',
type: 'datetime',
format: 'YYYY-MM-DD HH:mm',
valueFormat: 'YYYY-MM-DD HH:mm:ss',
minWidth: 170,
rules: [{ required: true, message: '请选择出口时间', trigger: 'click' }],
},
{
label: '入口站',
prop: 'entryStation',
minWidth: 150,
rules: [{ max: 50, message: '最多 50 个字符', trigger: 'blur' }],
},
{
label: '出口站',
prop: 'exitStation',
minWidth: 150,
rules: [{ max: 50, message: '最多 50 个字符', trigger: 'blur' }],
},
{
label: '数据来源',
prop: 'dataSource',
value: '手工录入',
minWidth: 120,
addDisplay: false,
editDisplay: false,
},
{
label: '交易金额',
prop: 'transactionAmount',
type: 'number',
precision: 2,
append: '元',
minWidth: 130,
rules: [
{ required: true, message: '请输入交易金额', trigger: 'blur' },
{ validator: validateNonNegative, trigger: 'blur' },
],
},
{
label: '备注',
prop: 'remark',
type: 'textarea',
minRows: 4,
span: 24,
minWidth: 180,
overHidden: true,
rules: [{ max: 200, message: '最多 200 个字符', trigger: 'blur' }],
},
{
label: '附件',
prop: 'attachments',
type: 'upload',
listType: 'text',
multiple: true,
accept: '.jpg,.jpeg,.png,.pdf',
propsHttp: {
res: 'data',
url: 'link',
name: 'name',
},
action: '/blade-resource/oss/endpoint/put-file',
span: 24,
minWidth: 100,
slot: true,
},
{
label: '组织',
prop: 'createDept',
type: 'tree',
dicData: [],
props: {
label: 'title',
value: 'id',
},
checkStrictly: true,
search: true,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
},
{
label: '创建时间',
prop: 'createTime',
type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss',
addDisplay: false,
editDisplay: false,
viewDisplay: false,
minWidth: 170,
},
{
label: '更新人',
prop: 'updateUserName',
formatter: formatUpdateUserName,
addDisplay: false,
editDisplay: false,
display: false,
minWidth: 180,
},
{
label: '更新时间',
prop: 'updateTime',
type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss',
addDisplay: false,
editDisplay: false,
display: false,
minWidth: 170,
},
],
};
export const excelOption = {
submitBtn: false,
emptyBtn: false,
column: [
{
label: '模板上传',
prop: 'excelFile',
type: 'upload',
drag: true,
loadText: '模板上传中,请稍等',
span: 24,
propsHttp: {
res: 'data',
},
tip: '请上传 .xls,.xlsx 标准格式文件',
action: '/blade-transport/etc-record/import-etc-record',
},
{
label: '模板下载',
prop: 'excelTemplate',
formslot: true,
span: 24,
},
],
};

View File

@@ -0,0 +1,262 @@
import { formatUpdateUserName } from '@/utils/audit';
const validateNonNegative = (rule, value, callback) => {
if (value === undefined || value === null || value === '') {
callback();
} else if (Number(value) < 0) {
callback(new Error('不能小于 0'));
} else {
callback();
}
};
export const vehicleTypeDic = [
{ label: '车辆', value: '车辆' },
{ label: '船舶', value: '船舶' },
];
export const insuranceTypeDic = [
{ label: '交强险', value: '交强险' },
{ label: '商业险', value: '商业险' },
{ label: '承运人责任险', value: '承运人责任险' },
{ label: '货运险', value: '货运险' },
{ label: '船舶险', value: '船舶险' },
];
export const ocrTemplateDic = [
{ label: '紫金-机动车交强险', value: '紫金-机动车交强险' },
{ label: '机动车商业险', value: '机动车商业险' },
{ label: '船舶保险', value: '船舶保险' },
];
export const option = {
height: 'auto',
calcHeight: 32,
dialogWidth: 1100,
labelPosition: 'top',
tip: false,
searchShow: true,
searchMenuSpan: 6,
border: true,
index: true,
viewBtn: true,
selection: true,
dialogClickModal: false,
menuWidth: 180,
column: [
{
label: '车船类型',
prop: 'vehicleType',
type: 'radio',
minWidth: 110,
dicData: vehicleTypeDic,
value: '车辆',
search: true,
rules: [{ required: true, message: '请选择车船类型', trigger: 'change' }],
},
{
label: 'OCR识别模板',
prop: 'ocrTemplate',
type: 'select',
dicData: ocrTemplateDic,
value: '紫金-机动车交强险',
hide: true,
span: 12,
},
{
label: '上传文件',
prop: 'policyFile',
formslot: true,
hide: true,
span: 24,
},
{
label: '车牌号/船号',
prop: 'vehicleNo',
slot: true,
formslot: true,
search: true,
minWidth: 140,
rules: [
{ required: true, message: '请输入车牌号/船号', trigger: 'blur' },
{ max: 50, message: '最多 50 个字符', trigger: 'blur' },
],
},
{
label: '保险类型',
prop: 'insuranceType',
type: 'select',
dicData: insuranceTypeDic,
search: true,
minWidth: 130,
rules: [{ required: true, message: '请选择保险类型', trigger: 'change' }],
},
{
label: '保单号',
prop: 'policyNo',
minWidth: 170,
rules: [
{ required: true, message: '请输入保单号', trigger: 'blur' },
{ max: 80, message: '最多 80 个字符', trigger: 'blur' },
],
},
{
label: '开始日期',
prop: 'startDate',
type: 'date',
format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD',
minWidth: 120,
rules: [{ required: true, message: '请选择开始日期', trigger: 'click' }],
},
{
label: '结束日期',
prop: 'endDate',
type: 'date',
format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD',
minWidth: 120,
rules: [{ required: true, message: '请选择结束日期', trigger: 'click' }],
},
{
label: '保额',
prop: 'insuredAmount',
type: 'number',
precision: 2,
minWidth: 120,
rules: [{ validator: validateNonNegative, trigger: 'blur' }],
},
{
label: '保费',
prop: 'premium',
type: 'number',
precision: 2,
minWidth: 120,
rules: [
{ required: true, message: '请输入保费', trigger: 'blur' },
{ validator: validateNonNegative, trigger: 'blur' },
],
},
{
label: '发票号',
prop: 'invoiceNo',
minWidth: 150,
rules: [{ max: 80, message: '最多 80 个字符', trigger: 'blur' }],
},
{
label: '开票日期',
prop: 'invoiceDate',
type: 'date',
format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD',
minWidth: 120,
},
{
label: '备注',
prop: 'remark',
type: 'textarea',
minRows: 3,
span: 24,
hide: true,
rules: [{ max: 200, message: '备注最多 200 个字', trigger: 'blur' }],
},
{
label: '创建时间',
prop: 'createTime',
type: 'date',
format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss',
addDisplay: false,
editDisplay: false,
viewDisplay: false,
display: false,
minWidth: 170,
},
{
label: '创建开始时间',
prop: 'createTimeStart',
type: 'date',
format: 'YYYY-MM-DD 00:00:00',
valueFormat: 'YYYY-MM-DD 00:00:00',
search: true,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
},
{
label: '创建结束时间',
prop: 'createTimeEnd',
type: 'date',
format: 'YYYY-MM-DD 23:59:59',
valueFormat: 'YYYY-MM-DD 23:59:59',
search: true,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
},
{
label: '组织',
prop: 'createDept',
type: 'tree',
dicData: [],
props: {
label: 'title',
value: 'id',
},
checkStrictly: true,
search: true,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
},
{
label: '更新人',
prop: 'updateUserName',
formatter: formatUpdateUserName,
addDisplay: false,
editDisplay: false,
display: false,
minWidth: 180,
},
{
label: '更新时间',
prop: 'updateTime',
type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss',
addDisplay: false,
editDisplay: false,
display: false,
minWidth: 170,
},
],
};
export const excelOption = {
submitBtn: false,
emptyBtn: false,
column: [
{
label: '模板上传',
prop: 'excelFile',
type: 'upload',
drag: true,
loadText: '模板上传中,请稍等',
span: 24,
propsHttp: {
res: 'data',
},
tip: '请上传 .xls,.xlsx 标准格式文件',
action: '/blade-transport/insurance-record/import-insurance-record',
},
{
label: '模板下载',
prop: 'excelTemplate',
formslot: true,
span: 24,
},
],
};

View File

@@ -0,0 +1,223 @@
import { formatUpdateUserName } from '@/utils/audit';
const isEmpty = value => value === undefined || value === null || value === '';
const validateNonNegative = (rule, value, callback) => {
if (isEmpty(value)) {
callback();
} else if (Number(value) < 0) {
callback(new Error('不能小于 0'));
} else {
callback();
}
};
export const option = {
height: 'auto',
calcHeight: 32,
dialogWidth: 980,
labelPosition: 'top',
tip: false,
searchShow: true,
searchMenuSpan: 6,
border: true,
index: true,
viewBtn: true,
selection: true,
dialogClickModal: false,
menuWidth: 180,
menuFixed: 'right',
column: [
{
label: '车牌号',
prop: 'vehicleNo',
slot: true,
formslot: true,
search: true,
minWidth: 130,
rules: [
{ required: true, message: '请输入车牌号', trigger: 'blur' },
{ max: 30, message: '最多 30 个字符', trigger: 'blur' },
],
},
{
label: '上月统计日里程表示值(km)',
prop: 'previousMonthMileage',
type: 'number',
precision: 2,
minWidth: 210,
rules: [{ validator: validateNonNegative, trigger: 'blur' }],
},
{
label: '本月统计日里程表示值(km)',
prop: 'currentMonthMileage',
type: 'number',
precision: 2,
minWidth: 210,
rules: [{ validator: validateNonNegative, trigger: 'blur' }],
},
{
label: '本月行驶里程km',
prop: 'monthlyMileage',
type: 'number',
precision: 2,
minWidth: 170,
rules: [{ validator: validateNonNegative, trigger: 'blur' }],
},
{
label: '累计行驶里程km',
prop: 'totalMileage',
type: 'number',
precision: 2,
minWidth: 170,
rules: [{ validator: validateNonNegative, trigger: 'blur' }],
},
{
label: '备注',
prop: 'remark',
type: 'textarea',
minRows: 4,
span: 24,
minWidth: 180,
overHidden: true,
rules: [{ max: 200, message: '最多 200 个字符', trigger: 'blur' }],
},
{
label: '附件',
prop: 'attachments',
type: 'upload',
listType: 'text',
multiple: true,
accept: '.jpg,.jpeg,.png,.pdf',
propsHttp: {
res: 'data',
url: 'link',
name: 'name',
},
action: '/blade-resource/oss/endpoint/put-file',
span: 24,
minWidth: 100,
slot: true,
},
{
label: '累计行驶里程开始值',
prop: 'totalMileageStart',
type: 'number',
precision: 2,
search: true,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
},
{
label: '累计行驶里程结束值',
prop: 'totalMileageEnd',
type: 'number',
precision: 2,
search: true,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
},
{
label: '创建时间',
prop: 'createTime',
type: 'date',
format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss',
addDisplay: false,
editDisplay: false,
viewDisplay: false,
display: false,
minWidth: 170,
},
{
label: '创建开始时间',
prop: 'createTimeStart',
type: 'date',
format: 'YYYY-MM-DD 00:00:00',
valueFormat: 'YYYY-MM-DD 00:00:00',
search: true,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
},
{
label: '创建结束时间',
prop: 'createTimeEnd',
type: 'date',
format: 'YYYY-MM-DD 23:59:59',
valueFormat: 'YYYY-MM-DD 23:59:59',
search: true,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
},
{
label: '组织',
prop: 'createDept',
type: 'tree',
dicData: [],
props: {
label: 'title',
value: 'id',
},
checkStrictly: true,
search: true,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
},
{
label: '更新人',
prop: 'updateUserName',
formatter: formatUpdateUserName,
addDisplay: false,
editDisplay: false,
display: false,
minWidth: 180,
},
{
label: '更新时间',
prop: 'updateTime',
type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss',
addDisplay: false,
editDisplay: false,
display: false,
minWidth: 170,
},
],
};
export const excelOption = {
submitBtn: false,
emptyBtn: false,
column: [
{
label: '模板上传',
prop: 'excelFile',
type: 'upload',
drag: true,
loadText: '模板上传中,请稍等',
span: 24,
propsHttp: {
res: 'data',
},
tip: '请上传 .xls,.xlsx 标准格式文件',
action: '/blade-transport/mileage-record/import-mileage-record',
},
{
label: '模板下载',
prop: 'excelTemplate',
formslot: true,
span: 24,
},
],
};

View File

@@ -0,0 +1,321 @@
import { formatUpdateUserName } from '@/utils/audit';
const isEmpty = value => value === undefined || value === null || value === '';
const validateNonNegative = (rule, value, callback) => {
if (isEmpty(value)) {
callback();
} else if (Number(value) < 0) {
callback(new Error('不能小于 0'));
} else {
callback();
}
};
export const vehicleTypeDic = [
{ label: '车辆', value: '车辆' },
{ label: '船舶', value: '船舶' },
];
export const feeTypeDic = [
{ label: '加油', value: '加油' },
{ label: '充电', value: '充电' },
];
export const option = {
height: 'auto',
calcHeight: 32,
dialogWidth: 980,
labelPosition: 'top',
tip: false,
searchShow: true,
searchMenuSpan: 6,
border: true,
index: true,
viewBtn: true,
selection: true,
dialogClickModal: false,
menuWidth: 180,
menuFixed: 'right',
column: [
{
label: '卡号',
prop: 'cardNo',
minWidth: 150,
rules: [{ max: 30, message: '最多 30 个字符', trigger: 'blur' }],
},
{
label: '交易时间',
prop: 'transactionTime',
type: 'datetime',
format: 'YYYY-MM-DD HH:mm',
valueFormat: 'YYYY-MM-DD HH:mm:ss',
minWidth: 170,
rules: [{ required: true, message: '请选择交易时间', trigger: 'click' }],
},
{
label: '车船类型',
prop: 'vehicleType',
type: 'radio',
dicData: vehicleTypeDic,
value: '车辆',
search: true,
minWidth: 110,
rules: [{ required: true, message: '请选择车船类型', trigger: 'change' }],
},
{
label: '费用类型',
prop: 'feeType',
type: 'select',
dicData: feeTypeDic,
search: true,
minWidth: 120,
rules: [{ required: true, message: '请选择费用类型', trigger: 'change' }],
},
{
label: '油品',
prop: 'oilProduct',
minWidth: 160,
rules: [{ max: 50, message: '最多 50 个字符', trigger: 'blur' }],
},
{
label: '车牌号/船号',
prop: 'vehicleNo',
slot: true,
formslot: true,
search: true,
minWidth: 150,
rules: [
{ required: true, message: '请输入车牌号/船号', trigger: 'blur' },
{ max: 30, message: '最多 30 个字符', trigger: 'blur' },
],
},
{
label: '持卡人',
prop: 'cardHolder',
minWidth: 120,
rules: [{ max: 20, message: '最多 20 个字符', trigger: 'blur' }],
},
{
label: '数据来源',
prop: 'dataSource',
value: '手工录入',
minWidth: 120,
addDisplay: false,
editDisplay: false,
},
{
label: '数量',
prop: 'quantity',
type: 'number',
precision: 2,
minWidth: 110,
rules: [{ validator: validateNonNegative, trigger: 'blur' }],
},
{
label: '单价',
prop: 'unitPrice',
type: 'number',
precision: 2,
minWidth: 120,
append: '元/升',
rules: [{ validator: validateNonNegative, trigger: 'blur' }],
},
{
label: '交易金额',
prop: 'transactionAmount',
type: 'number',
precision: 2,
minWidth: 130,
rules: [
{ required: true, message: '请输入交易金额', trigger: 'blur' },
{ validator: validateNonNegative, trigger: 'blur' },
],
},
{
label: '余额',
prop: 'balance',
type: 'number',
precision: 2,
minWidth: 110,
rules: [{ validator: validateNonNegative, trigger: 'blur' }],
},
{
label: '站点',
prop: 'station',
minWidth: 150,
rules: [{ max: 50, message: '最多 50 个字符', trigger: 'blur' }],
},
{
label: '备注',
prop: 'remark',
type: 'textarea',
minRows: 4,
span: 24,
minWidth: 180,
overHidden: true,
rules: [{ max: 200, message: '最多 200 个字符', trigger: 'blur' }],
},
{
label: '附件',
prop: 'attachments',
type: 'upload',
listType: 'text',
multiple: true,
accept: '.jpg,.jpeg,.png,.pdf',
propsHttp: {
res: 'data',
url: 'link',
name: 'name',
},
action: '/blade-resource/oss/endpoint/put-file',
span: 24,
minWidth: 100,
slot: true,
},
{
label: '交易开始时间',
prop: 'transactionTimeStart',
type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss',
search: true,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
},
{
label: '交易结束时间',
prop: 'transactionTimeEnd',
type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss',
search: true,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
},
{
label: '消费金额开始值',
prop: 'transactionAmountStart',
type: 'number',
precision: 2,
search: true,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
},
{
label: '消费金额结束值',
prop: 'transactionAmountEnd',
type: 'number',
precision: 2,
search: true,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
},
{
label: '创建时间',
prop: 'createTime',
type: 'date',
format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss',
addDisplay: false,
editDisplay: false,
viewDisplay: false,
display: false,
minWidth: 170,
},
{
label: '创建开始时间',
prop: 'createTimeStart',
type: 'date',
format: 'YYYY-MM-DD 00:00:00',
valueFormat: 'YYYY-MM-DD 00:00:00',
search: true,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
},
{
label: '创建结束时间',
prop: 'createTimeEnd',
type: 'date',
format: 'YYYY-MM-DD 23:59:59',
valueFormat: 'YYYY-MM-DD 23:59:59',
search: true,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
},
{
label: '组织',
prop: 'createDept',
type: 'tree',
dicData: [],
props: {
label: 'title',
value: 'id',
},
checkStrictly: true,
search: true,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
},
{
label: '更新人',
prop: 'updateUserName',
formatter: formatUpdateUserName,
addDisplay: false,
editDisplay: false,
display: false,
minWidth: 180,
},
{
label: '更新时间',
prop: 'updateTime',
type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss',
addDisplay: false,
editDisplay: false,
display: false,
minWidth: 170,
},
],
};
export const excelOption = {
submitBtn: false,
emptyBtn: false,
column: [
{
label: '模板上传',
prop: 'excelFile',
type: 'upload',
drag: true,
loadText: '模板上传中,请稍等',
span: 24,
propsHttp: {
res: 'data',
},
tip: '请上传 .xls,.xlsx 标准格式文件',
action: '/blade-transport/oil-electric-record/import-oil-electric-record',
},
{
label: '模板下载',
prop: 'excelTemplate',
formslot: true,
span: 24,
},
],
};

View File

@@ -0,0 +1,220 @@
import { formatUpdateUserName } from '@/utils/audit';
const isEmpty = value => value === undefined || value === null || value === '';
const validateNonNegative = (rule, value, callback) => {
if (isEmpty(value)) {
callback();
} else if (Number(value) < 0) {
callback(new Error('不能小于 0'));
} else {
callback();
}
};
export const vehicleTypeDic = [
{ label: '车辆', value: '车辆' },
{ label: '船舶', value: '船舶' },
];
export const expenseTypeDic = [
{ label: '过路费', value: '过路费' },
{ label: '停车费', value: '停车费' },
{ label: '维修费', value: '维修费' },
{ label: '保险费', value: '保险费' },
{ label: '年检费', value: '年检费' },
{ label: '装卸费', value: '装卸费' },
{ label: '其他', value: '其他' },
];
export const option = {
height: 'auto',
calcHeight: 32,
dialogWidth: 980,
labelPosition: 'top',
tip: false,
searchShow: true,
searchMenuSpan: 6,
border: true,
index: true,
viewBtn: true,
selection: true,
dialogClickModal: false,
menuWidth: 180,
menuFixed: 'right',
column: [
{
label: '费用日期',
prop: 'expenseDate',
type: 'date',
format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD',
minWidth: 140,
rules: [{ required: true, message: '请选择费用日期', trigger: 'click' }],
},
{
label: '其他费用类型',
prop: 'expenseType',
type: 'select',
dicData: expenseTypeDic,
search: true,
minWidth: 150,
rules: [{ required: true, message: '请选择其他费用类型', trigger: 'change' }],
},
{
label: '车船类型',
prop: 'vehicleType',
type: 'radio',
dicData: vehicleTypeDic,
value: '车辆',
search: true,
minWidth: 110,
rules: [{ required: true, message: '请选择车船类型', trigger: 'change' }],
},
{
label: '车牌号/船号',
prop: 'vehicleNo',
slot: true,
formslot: true,
search: true,
minWidth: 150,
rules: [
{ required: true, message: '请输入车牌号/船号', trigger: 'blur' },
{ max: 30, message: '最多 30 个字符', trigger: 'blur' },
],
},
{
label: '数据来源',
prop: 'dataSource',
value: '手工录入',
minWidth: 120,
addDisplay: false,
editDisplay: false,
},
{
label: '金额',
prop: 'amount',
type: 'number',
precision: 2,
append: '元',
minWidth: 120,
rules: [
{ required: true, message: '请输入金额', trigger: 'blur' },
{ validator: validateNonNegative, trigger: 'blur' },
],
},
{
label: '备注',
prop: 'remark',
type: 'textarea',
minRows: 4,
span: 24,
minWidth: 180,
overHidden: true,
rules: [{ max: 200, message: '最多 200 个字符', trigger: 'blur' }],
},
{
label: '附件',
prop: 'attachments',
type: 'upload',
listType: 'text',
multiple: true,
accept: '.jpg,.jpeg,.png,.pdf',
propsHttp: {
res: 'data',
url: 'link',
name: 'name',
},
action: '/blade-resource/oss/endpoint/put-file',
span: 24,
minWidth: 100,
slot: true,
},
{
label: '费用日期',
prop: 'expenseDateRange',
type: 'date',
format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD',
searchRange: true,
search: true,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
},
{
label: '组织',
prop: 'createDept',
type: 'tree',
dicData: [],
props: {
label: 'title',
value: 'id',
},
checkStrictly: true,
search: true,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
},
{
label: '创建时间',
prop: 'createTime',
type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss',
addDisplay: false,
editDisplay: false,
viewDisplay: false,
minWidth: 170,
},
{
label: '更新人',
prop: 'updateUserName',
formatter: formatUpdateUserName,
addDisplay: false,
editDisplay: false,
display: false,
minWidth: 180,
},
{
label: '更新时间',
prop: 'updateTime',
type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss',
addDisplay: false,
editDisplay: false,
display: false,
minWidth: 170,
},
],
};
export const excelOption = {
submitBtn: false,
emptyBtn: false,
column: [
{
label: '模板上传',
prop: 'excelFile',
type: 'upload',
drag: true,
loadText: '模板上传中,请稍等',
span: 24,
propsHttp: {
res: 'data',
},
tip: '请上传 .xls,.xlsx 标准格式文件',
action: '/blade-transport/other-expense-record/import-other-expense-record',
},
{
label: '模板下载',
prop: 'excelTemplate',
formslot: true,
span: 24,
},
],
};

View File

@@ -0,0 +1,223 @@
import { formatUpdateUserName } from '@/utils/audit';
const validateNonNegative = (rule, value, callback) => {
if (value === undefined || value === null || value === '') {
callback();
} else if (Number(value) < 0) {
callback(new Error('不能小于 0'));
} else {
callback();
}
};
const validatePositiveInteger = (rule, value, callback) => {
if (value === undefined || value === null || value === '') {
callback();
} else if (!Number.isInteger(Number(value)) || Number(value) <= 0) {
callback(new Error('换胎数量必须为正整数'));
} else {
callback();
}
};
export const option = {
height: 'auto',
calcHeight: 32,
dialogWidth: 980,
labelPosition: 'top',
tip: false,
searchShow: true,
searchMenuSpan: 6,
border: true,
index: true,
viewBtn: true,
selection: true,
dialogClickModal: false,
menuWidth: 180,
column: [
{
label: '车牌号',
prop: 'vehicleNo',
slot: true,
formslot: true,
search: true,
minWidth: 130,
rules: [
{ required: true, message: '请输入车牌号', trigger: 'blur' },
{ max: 30, message: '最多 30 个字符', trigger: 'blur' },
],
},
{
label: '处理人',
prop: 'handler',
minWidth: 120,
rules: [{ max: 20, message: '最多 20 个字符', trigger: 'blur' }],
},
{
label: '换胎时间',
prop: 'replacementTime',
type: 'date',
format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD',
minWidth: 130,
rules: [{ required: true, message: '请选择换胎时间', trigger: 'click' }],
},
{
label: '轮胎品牌',
prop: 'tireBrand',
minWidth: 140,
rules: [{ max: 50, message: '最多 50 个字符', trigger: 'blur' }],
},
{
label: '换胎数量',
prop: 'tireQuantity',
type: 'number',
precision: 0,
minWidth: 110,
rules: [{ validator: validatePositiveInteger, trigger: 'blur' }],
},
{
label: '换胎费用',
prop: 'replacementCost',
type: 'number',
precision: 2,
minWidth: 120,
rules: [
{ required: true, message: '请输入换胎费用', trigger: 'blur' },
{ validator: validateNonNegative, trigger: 'blur' },
],
},
{
label: '换胎说明',
prop: 'replacementDescription',
minWidth: 180,
overHidden: true,
rules: [{ max: 200, message: '最多 200 个字符', trigger: 'blur' }],
},
{
label: '备注',
prop: 'remark',
type: 'textarea',
minRows: 4,
span: 24,
minWidth: 180,
overHidden: true,
rules: [{ max: 500, message: '最多 500 个字符', trigger: 'blur' }],
},
{
label: '附件',
prop: 'attachments',
type: 'upload',
listType: 'text',
multiple: true,
accept: '.jpg,.jpeg,.png,.pdf',
propsHttp: {
res: 'data',
url: 'link',
name: 'name',
},
action: '/blade-resource/oss/endpoint/put-file',
span: 24,
minWidth: 100,
slot: true,
},
{
label: '创建时间',
prop: 'createTime',
type: 'date',
format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss',
addDisplay: false,
editDisplay: false,
viewDisplay: false,
display: false,
minWidth: 170,
},
{
label: '创建开始时间',
prop: 'createTimeStart',
type: 'date',
format: 'YYYY-MM-DD 00:00:00',
valueFormat: 'YYYY-MM-DD 00:00:00',
search: true,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
},
{
label: '创建结束时间',
prop: 'createTimeEnd',
type: 'date',
format: 'YYYY-MM-DD 23:59:59',
valueFormat: 'YYYY-MM-DD 23:59:59',
search: true,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
},
{
label: '组织',
prop: 'createDept',
type: 'tree',
dicData: [],
props: {
label: 'title',
value: 'id',
},
checkStrictly: true,
search: true,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
},
{
label: '更新人',
prop: 'updateUserName',
formatter: formatUpdateUserName,
addDisplay: false,
editDisplay: false,
display: false,
minWidth: 180,
},
{
label: '更新时间',
prop: 'updateTime',
type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss',
addDisplay: false,
editDisplay: false,
display: false,
minWidth: 170,
},
],
};
export const excelOption = {
submitBtn: false,
emptyBtn: false,
column: [
{
label: '模板上传',
prop: 'excelFile',
type: 'upload',
drag: true,
loadText: '模板上传中,请稍等',
span: 24,
propsHttp: {
res: 'data',
},
tip: '请上传 .xls,.xlsx 标准格式文件',
action: '/blade-transport/tire-replacement-record/import-tire-replacement-record',
},
{
label: '模板下载',
prop: 'excelTemplate',
formslot: true,
span: 24,
},
],
};

View File

@@ -0,0 +1,199 @@
import { formatUpdateUserName } from '@/utils/audit';
export const vehicleTypeDic = [
{ label: '车辆', value: '车辆' },
{ label: '船舶', value: '船舶' },
];
export const changeItemDic = [
{ label: '所有人变更', value: '所有人变更' },
{ label: '挂靠变更', value: '挂靠变更' },
{ label: '经营范围变更', value: '经营范围变更' },
{ label: '车牌号变更', value: '车牌号变更' },
{ label: '其他', value: '其他' },
];
export const option = {
height: 'auto',
calcHeight: 32,
dialogWidth: 980,
labelPosition: 'top',
tip: false,
searchShow: true,
searchMenuSpan: 6,
border: true,
index: true,
viewBtn: true,
selection: true,
dialogClickModal: false,
menuWidth: 180,
menuFixed: 'right',
column: [
{
label: '车船类型',
prop: 'vehicleType',
type: 'radio',
minWidth: 110,
dicData: vehicleTypeDic,
value: '车辆',
search: true,
rules: [{ required: true, message: '请选择车船类型', trigger: 'change' }],
},
{
label: '车牌号/船号',
prop: 'vehicleNo',
slot: true,
formslot: true,
search: true,
minWidth: 140,
rules: [{ max: 30, message: '最多 30 个字符', trigger: 'blur' }],
},
{
label: '变更事项',
prop: 'changeItem',
type: 'select',
dicData: changeItemDic,
minWidth: 180,
rules: [{ required: true, message: '请选择变更事项', trigger: 'change' }],
},
{
label: '变更内容',
prop: 'changeContent',
type: 'textarea',
minRows: 4,
span: 24,
search: true,
minWidth: 260,
overHidden: true,
rules: [
{ required: true, message: '请输入变更内容', trigger: 'blur' },
{ max: 200, message: '最多 200 个字符', trigger: 'blur' },
],
},
{
label: '备注',
prop: 'remark',
type: 'textarea',
minRows: 4,
span: 24,
minWidth: 180,
overHidden: true,
rules: [{ max: 200, message: '最多 200 个字符', trigger: 'blur' }],
},
{
label: '附件',
prop: 'attachments',
type: 'upload',
listType: 'text',
multiple: true,
accept: '.jpg,.jpeg,.png,.pdf',
propsHttp: {
res: 'data',
url: 'link',
name: 'name',
},
action: '/blade-resource/oss/endpoint/put-file',
span: 24,
minWidth: 100,
slot: true,
},
{
label: '创建时间',
prop: 'createTime',
type: 'date',
format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss',
addDisplay: false,
editDisplay: false,
viewDisplay: false,
display: false,
minWidth: 170,
},
{
label: '创建开始时间',
prop: 'createTimeStart',
type: 'date',
format: 'YYYY-MM-DD 00:00:00',
valueFormat: 'YYYY-MM-DD 00:00:00',
search: true,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
},
{
label: '创建结束时间',
prop: 'createTimeEnd',
type: 'date',
format: 'YYYY-MM-DD 23:59:59',
valueFormat: 'YYYY-MM-DD 23:59:59',
search: true,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
},
{
label: '组织',
prop: 'createDept',
type: 'tree',
dicData: [],
props: {
label: 'title',
value: 'id',
},
checkStrictly: true,
search: true,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
},
{
label: '更新人',
prop: 'updateUserName',
formatter: formatUpdateUserName,
addDisplay: false,
editDisplay: false,
display: false,
minWidth: 180,
},
{
label: '更新时间',
prop: 'updateTime',
type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss',
addDisplay: false,
editDisplay: false,
display: false,
minWidth: 170,
},
],
};
export const excelOption = {
submitBtn: false,
emptyBtn: false,
column: [
{
label: '模板上传',
prop: 'excelFile',
type: 'upload',
drag: true,
loadText: '模板上传中,请稍等',
span: 24,
propsHttp: {
res: 'data',
},
tip: '请上传 .xls,.xlsx 标准格式文件',
action: '/blade-transport/transport-change-record/import-transport-change-record',
},
{
label: '模板下载',
prop: 'excelTemplate',
formslot: true,
span: 24,
},
],
};

View File

@@ -0,0 +1,297 @@
import { formatUpdateUserName } from '@/utils/audit';
const validateNonNegative = (rule, value, callback) => {
if (value === undefined || value === null || value === '') {
callback();
} else if (Number(value) < 0) {
callback(new Error('不能小于 0'));
} else {
callback();
}
};
const validateDeductPoints = (rule, value, callback) => {
if (value === undefined || value === null || value === '') {
callback();
} else if (!Number.isInteger(Number(value)) || Number(value) < 0 || Number(value) > 15) {
callback(new Error('被扣分数范围为 0-15 分'));
} else {
callback();
}
};
export const vehicleTypeDic = [
{ label: '车辆', value: '车辆' },
{ label: '船舶', value: '船舶' },
];
export const violationTypeDic = [
{ label: '闯红灯', value: '闯红灯' },
{ label: '超速', value: '超速' },
{ label: '违停', value: '违停' },
{ label: '压线', value: '压线' },
{ label: '其他', value: '其他' },
];
export const processStatusDic = [
{ label: '未处理', value: '未处理' },
{ label: '已处理', value: '已处理' },
];
export const option = {
height: 'auto',
calcHeight: 32,
dialogWidth: 1100,
labelPosition: 'top',
tip: false,
searchShow: true,
searchMenuSpan: 6,
border: true,
index: true,
viewBtn: true,
selection: true,
dialogClickModal: false,
menuWidth: 180,
column: [
{
label: '车船类型',
prop: 'vehicleType',
type: 'radio',
minWidth: 110,
dicData: vehicleTypeDic,
value: '车辆',
search: true,
rules: [{ required: true, message: '请选择车船类型', trigger: 'change' }],
},
{
label: '车牌号/船号',
prop: 'vehicleNo',
slot: true,
formslot: true,
search: true,
minWidth: 140,
rules: [
{ required: true, message: '请输入车牌号/船号', trigger: 'blur' },
{ max: 30, message: '最多 30 个字符', trigger: 'blur' },
],
},
{
label: '驾驶人',
prop: 'driverName',
formslot: true,
search: true,
minWidth: 120,
rules: [
{ required: true, message: '请输入驾驶人/船长', trigger: 'blur' },
{ max: 20, message: '最多 20 个字符', trigger: 'blur' },
],
},
{
label: '类型',
prop: 'violationType',
type: 'select',
dicData: violationTypeDic,
minWidth: 120,
rules: [{ required: true, message: '请选择类型', trigger: 'change' }],
},
{
label: '事项',
prop: 'violationItem',
minWidth: 180,
overHidden: true,
display: false,
rules: [
{ required: true, message: '请输入事项', trigger: 'blur' },
{ max: 100, message: '最多 100 个字符', trigger: 'blur' },
],
},
{
label: '日期',
prop: 'violationTime',
type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss',
minWidth: 170,
rules: [{ required: true, message: '请选择时间', trigger: 'click' }],
},
{
label: '地点',
prop: 'location',
minWidth: 180,
overHidden: true,
rules: [
{ required: true, message: '请输入地点', trigger: 'blur' },
{ max: 100, message: '最多 100 个字符', trigger: 'blur' },
],
},
{
label: '罚款',
prop: 'fineAmount',
type: 'number',
precision: 2,
minWidth: 100,
rules: [{ validator: validateNonNegative, trigger: 'blur' }],
},
{
label: '被扣分数',
prop: 'deductPoints',
type: 'number',
precision: 0,
hide: true,
rules: [{ validator: validateDeductPoints, trigger: 'blur' }],
},
{
label: '被罚单位',
prop: 'penaltyUnit',
minWidth: 150,
hide: true,
rules: [{ max: 50, message: '最多 50 个字符', trigger: 'blur' }],
},
{
label: '状态',
prop: 'processStatus',
type: 'radio',
dicData: processStatusDic,
value: '已处理',
search: true,
minWidth: 120,
rules: [{ required: true, message: '请选择状态', trigger: 'change' }],
},
{
label: '过程描述',
prop: 'processDescription',
type: 'textarea',
minRows: 3,
span: 24,
hide: true,
rules: [
{ required: true, message: '请输入过程描述', trigger: 'blur' },
{ max: 500, message: '最多 500 个字符', trigger: 'blur' },
],
},
{
label: '处理结果',
prop: 'processResult',
type: 'textarea',
minRows: 3,
span: 24,
hide: true,
rules: [{ max: 500, message: '最多 500 个字符', trigger: 'blur' }],
},
{
label: '附件',
prop: 'attachments',
type: 'upload',
listType: 'text',
multiple: true,
accept: '.jpg,.jpeg,.png,.pdf',
propsHttp: {
res: 'data',
url: 'link',
name: 'name',
},
action: '/blade-resource/oss/endpoint/put-file',
span: 24,
minWidth: 100,
slot: true,
},
{
label: '创建时间',
prop: 'createTime',
type: 'date',
format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss',
addDisplay: false,
editDisplay: false,
viewDisplay: false,
display: false,
minWidth: 170,
},
{
label: '创建开始时间',
prop: 'createTimeStart',
type: 'date',
format: 'YYYY-MM-DD 00:00:00',
valueFormat: 'YYYY-MM-DD 00:00:00',
search: true,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
},
{
label: '创建结束时间',
prop: 'createTimeEnd',
type: 'date',
format: 'YYYY-MM-DD 23:59:59',
valueFormat: 'YYYY-MM-DD 23:59:59',
search: true,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
},
{
label: '组织',
prop: 'createDept',
type: 'tree',
dicData: [],
props: {
label: 'title',
value: 'id',
},
checkStrictly: true,
search: true,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
},
{
label: '更新人',
prop: 'updateUserName',
formatter: formatUpdateUserName,
addDisplay: false,
editDisplay: false,
display: false,
minWidth: 180,
},
{
label: '更新时间',
prop: 'updateTime',
type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss',
addDisplay: false,
editDisplay: false,
display: false,
minWidth: 170,
},
],
};
export const excelOption = {
submitBtn: false,
emptyBtn: false,
column: [
{
label: '模板上传',
prop: 'excelFile',
type: 'upload',
drag: true,
loadText: '模板上传中,请稍等',
span: 24,
propsHttp: {
res: 'data',
},
tip: '请上传 .xls,.xlsx 标准格式文件',
action: '/blade-transport/violation-record/import-violation-record',
},
{
label: '模板下载',
prop: 'excelTemplate',
formslot: true,
span: 24,
},
],
};