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: 960, labelPosition: 'right', labelWidth: 'auto', searchLabelWidth: 160, tip: false, searchBtnText: '查询', emptyBtnText: '重置', saveBtnText: '提交', updateBtnText: '提交', searchShow: true, searchMenuSpan: 24, searchIcon: true, searchIndex: 4, searchMenuPosition: 'right', border: true, index: true, viewBtn: true, selection: true, dialogClickModal: false, menuWidth: 160, column: [ { label: '车船类型', prop: 'vehicleType', type: 'radio', minWidth: 110, dicData: vehicleTypeDic, value: '车辆', search: true, span: 24, rules: [{ required: true, message: '请选择车船类型', trigger: 'change' }], }, { label: '车牌号/船号', prop: 'vehicleNo', slot: true, formslot: true, search: true, minWidth: 140, span: 12, placeholder: '输入车牌号/船号查询选择', rules: [ { required: true, message: '请输入车牌号/船号', trigger: 'blur' }, { max: 30, message: '最多 30 个字符', trigger: 'blur' }, ], }, { label: '驾驶人', prop: 'driverName', formslot: true, search: true, minWidth: 120, span: 12, placeholder: '请输入', rules: [ { required: true, message: '请输入驾驶人/船长', trigger: 'blur' }, { max: 20, message: '最多 20 个字符', trigger: 'blur' }, ], }, { label: '类型', prop: 'violationType', type: 'select', dicData: violationTypeDic, minWidth: 120, span: 12, placeholder: '请选择', rules: [{ required: true, message: '请选择类型', trigger: 'change' }], }, { label: '事项', prop: 'violationItem', minWidth: 180, overHidden: true, display: false, span: 12, placeholder: '请输入', 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, span: 12, placeholder: '请选择', rules: [{ required: true, message: '请选择时间', trigger: 'click' }], }, { label: '地点', prop: 'location', minWidth: 180, overHidden: true, span: 12, placeholder: '请输入', rules: [ { required: true, message: '请输入地点', trigger: 'blur' }, { max: 100, message: '最多 100 个字符', trigger: 'blur' }, ], }, { label: '罚款', prop: 'fineAmount', type: 'number', precision: 2, append: '元', minWidth: 100, span: 12, placeholder: '请输入', rules: [{ validator: validateNonNegative, trigger: 'blur' }], }, { label: '被扣分数', prop: 'deductPoints', type: 'number', precision: 0, minWidth: 110, span: 12, placeholder: '请输入', rules: [{ validator: validateDeductPoints, trigger: 'blur' }], }, { label: '被罚单位', prop: 'penaltyUnit', minWidth: 150, span: 12, placeholder: '请输入', rules: [{ max: 50, message: '最多 50 个字符', trigger: 'blur' }], }, { label: '状态', prop: 'processStatus', type: 'radio', dicData: processStatusDic, value: '未处理', search: true, clearable: true, minWidth: 120, span: 12, rules: [{ required: true, message: '请选择状态', trigger: 'change' }], }, { label: '过程描述', prop: 'processDescription', type: 'textarea', minRows: 3, span: 24, minWidth: 220, overHidden: true, placeholder: '请输入', rules: [ { required: true, message: '请输入过程描述', trigger: 'blur' }, { max: 500, message: '最多 500 个字符', trigger: 'blur' }, ], }, { label: '处理结果', prop: 'processResult', type: 'textarea', minRows: 3, span: 24, minWidth: 220, overHidden: true, placeholder: '请输入', rules: [{ max: 500, message: '最多 500 个字符', trigger: 'blur' }], }, { label: '附件', prop: 'attachments', span: 24, minWidth: 100, slot: true, formslot: 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: 'createTimeRange', 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: '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 = { labelPosition: 'right', 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, }, ], };