diff --git a/src/option/business/process-config.js b/src/option/business/process-config.js index 413f5eb..637d7ef 100644 --- a/src/option/business/process-config.js +++ b/src/option/business/process-config.js @@ -85,6 +85,7 @@ export const option = { type: 'number', min: 0, max: 999, + formatter: row => (Number(row.defaultFinishDays) === -1 ? '' : row.defaultFinishDays), span: 12, minWidth: 170, addDisplay: false, diff --git a/src/option/vehicle/annual-inspection-record.js b/src/option/vehicle/annual-inspection-record.js index ae43a81..25f8285 100644 --- a/src/option/vehicle/annual-inspection-record.js +++ b/src/option/vehicle/annual-inspection-record.js @@ -29,6 +29,12 @@ export const shipInspectionTypeDic = [ { label: '其他', value: '其他' }, ]; +export const passengerTypeLevelDic = [ + { label: '一级', value: '一级' }, + { label: '二级', value: '二级' }, + { label: '其他', value: '其他' }, +]; + export const option = { height: 'auto', calcHeight: 32, @@ -128,10 +134,11 @@ export const option = { { label: '客车类型及等级', prop: 'passengerTypeLevel', + type: 'select', + dicData: passengerTypeLevelDic, minWidth: 150, span: 12, - placeholder: '请输入', - rules: [{ max: 50, message: '最多 50 个字符', trigger: 'blur' }], + placeholder: '请选择', }, { label: '检测评定单位', diff --git a/src/option/vehicle/equipment-ledger.js b/src/option/vehicle/equipment-ledger.js index 9a95fd1..737af4d 100644 --- a/src/option/vehicle/equipment-ledger.js +++ b/src/option/vehicle/equipment-ledger.js @@ -42,11 +42,12 @@ export const option = { prop: 'vehicleType', type: 'radio', dicData: vehicleTypeDic, + formslot: true, value: '车辆', search: true, searchOrder: 3, span: 24, - order: 1, + order: 11, minWidth: 110, rules: [{ required: true, message: '请选择车船类型', trigger: 'change' }], }, @@ -58,9 +59,9 @@ export const option = { search: true, searchOrder: 4, span: 12, - order: 2, + order: 10, minWidth: 140, - rules: [{ required: true, message: '请输入车牌号/船号', trigger: 'blur' }], + rules: [{ required: true, message: '请选择车牌号/船号', trigger: 'change' }], }, { label: '设备号', @@ -69,7 +70,7 @@ export const option = { search: true, searchOrder: 2, span: 12, - order: 3, + order: 9, minWidth: 150, rules: [{ required: true, message: '设备编号由系统生成', trigger: 'blur' }], }, @@ -77,7 +78,7 @@ export const option = { label: '设备名称', prop: 'equipmentName', span: 12, - order: 4, + order: 8, minWidth: 150, rules: [ { required: true, message: '请输入设备名称', trigger: 'blur' }, @@ -92,14 +93,14 @@ export const option = { format: 'YYYY-MM-DD', valueFormat: 'YYYY-MM-DD', span: 12, - order: 8, + order: 4, minWidth: 130, }, { label: '设备品牌', prop: 'equipmentBrand', span: 12, - order: 5, + order: 7, minWidth: 130, rules: [{ max: 50, message: '最多 50 个字符', trigger: 'blur' }], }, @@ -117,7 +118,7 @@ export const option = { label: '规格型号', prop: 'specificationModel', span: 12, - order: 7, + order: 5, minWidth: 150, rules: [{ max: 100, message: '最多 100 个字符', trigger: 'blur' }], }, @@ -127,7 +128,7 @@ export const option = { type: 'textarea', minRows: 2, span: 24, - order: 10, + order: 2, minWidth: 180, overHidden: true, rules: [{ max: 200, message: '最多 200 个字符', trigger: 'blur' }], @@ -170,7 +171,7 @@ export const option = { label: '原厂设备号', prop: 'originalEquipmentNo', span: 12, - order: 9, + order: 3, hide: true, rules: [{ max: 100, message: '最多 100 个字符', trigger: 'blur' }], }, @@ -180,7 +181,8 @@ export const option = { slot: true, formslot: true, span: 24, - order: 11, + order: 1, + minWidth: 100, hide: true, }, { diff --git a/src/option/vehicle/mileage-record.js b/src/option/vehicle/mileage-record.js index fb16b18..ca1f29c 100644 --- a/src/option/vehicle/mileage-record.js +++ b/src/option/vehicle/mileage-record.js @@ -12,11 +12,6 @@ const validateNonNegative = (rule, value, callback) => { } }; -export const vehicleTypeDic = [ - { label: '车辆', value: '车辆' }, - { label: '船舶', value: '船舶' }, -]; - export const option = { height: 'auto', calcHeight: 32, @@ -43,18 +38,7 @@ export const option = { menuFixed: 'right', column: [ { - label: '车船类型', - prop: 'vehicleType', - type: 'radio', - dicData: vehicleTypeDic, - value: '车辆', - search: true, - searchSpan: 6, - minWidth: 110, - rules: [{ required: true, message: '请选择车船类型', trigger: 'change' }], - }, - { - label: '车牌号/船号', + label: '车牌号', prop: 'vehicleNo', slot: true, formslot: true, @@ -62,7 +46,7 @@ export const option = { searchSpan: 6, minWidth: 130, rules: [ - { required: true, message: '请输入车牌号/船号', trigger: 'blur' }, + { required: true, message: '请输入车牌号', trigger: 'blur' }, { max: 30, message: '最多 30 个字符', trigger: 'blur' }, ], }, @@ -106,19 +90,6 @@ export const option = { slot: true, rules: [{ validator: validateNonNegative, trigger: 'blur' }], }, - { - label: '里程单位', - prop: 'mileageUnit', - type: 'select', - dicData: [ - { label: '公里', value: '公里' }, - { label: '海里', value: '海里' }, - ], - value: '公里', - hide: true, - display: false, - search: false, - }, { label: '备注', prop: 'remark', diff --git a/src/option/vehicle/oil-electric-record.js b/src/option/vehicle/oil-electric-record.js index 41f3f1f..26c7ec0 100644 --- a/src/option/vehicle/oil-electric-record.js +++ b/src/option/vehicle/oil-electric-record.js @@ -46,6 +46,8 @@ export const option = { { label: '卡号', prop: 'cardNo', + span: 12, + order: 1, minWidth: 150, rules: [{ max: 30, message: '最多 30 个字符', trigger: 'blur' }], }, @@ -56,6 +58,7 @@ export const option = { type: 'datetime', format: 'YYYY-MM-DD HH:mm', valueFormat: 'YYYY-MM-DD HH:mm:ss', + span: 12, minWidth: 170, rules: [{ required: true, message: '请选择交易时间', trigger: 'click' }], }, @@ -66,6 +69,8 @@ export const option = { dicData: vehicleTypeDic, value: '车辆', search: true, + span: 24, + order: 2, minWidth: 110, rules: [{ required: true, message: '请选择车船类型', trigger: 'change' }], }, diff --git a/src/views/base/airport-master.vue b/src/views/base/airport-master.vue index ae7b61e..ad78455 100644 --- a/src/views/base/airport-master.vue +++ b/src/views/base/airport-master.vue @@ -82,7 +82,7 @@ filterable :loading="districtLoading" :disabled="!form.cityCode" - :placeholder="form.cityCode ? '请选择区县' : '请先选择城市'" + placeholder="请选择 所属区县" style="width: 100%" @change="handleDistrictChange" > diff --git a/src/views/base/port-terminal.vue b/src/views/base/port-terminal.vue index 9f0191d..79589de 100644 --- a/src/views/base/port-terminal.vue +++ b/src/views/base/port-terminal.vue @@ -1255,6 +1255,7 @@ export default { '港口码头主数据', () => { this.loadPortOptions(); + this.onLoad(this.page, this.query); } ); }, diff --git a/src/views/base/railway-station.vue b/src/views/base/railway-station.vue index bdfac8a..1a533ae 100644 --- a/src/views/base/railway-station.vue +++ b/src/views/base/railway-station.vue @@ -82,7 +82,7 @@ filterable :loading="districtLoading" :disabled="!form.cityCode" - :placeholder="form.cityCode ? '请选择区县' : '请先选择城市'" + placeholder="请选择 所属区县" style="width: 100%" @change="handleDistrictChange" > diff --git a/src/views/business/contract-manage.vue b/src/views/business/contract-manage.vue index 6a21aa3..7399584 100644 --- a/src/views/business/contract-manage.vue +++ b/src/views/business/contract-manage.vue @@ -2365,10 +2365,16 @@ export default { &__descriptions { :deep(.el-descriptions__label) { display: inline-block; + width: 96px; min-width: 96px; + max-width: 96px; + box-sizing: border-box; padding-right: 12px; color: #606266; + line-height: 18px; text-align: right; + white-space: normal; + word-break: break-all; } :deep(.el-descriptions__content) { diff --git a/src/views/business/process-config.vue b/src/views/business/process-config.vue index e06458c..2716639 100644 --- a/src/views/business/process-config.vue +++ b/src/views/business/process-config.vue @@ -851,9 +851,14 @@ export default { submitRow[key] = submitRow[key].trim(); } }); - submitRow.defaultFinishDays = submitRow.defaultFinishDays - ? Number(submitRow.defaultFinishDays) - : undefined; + const defaultFinishDays = submitRow.defaultFinishDays; + submitRow.defaultFinishDays = + defaultFinishDays === undefined || + defaultFinishDays === null || + defaultFinishDays === '' || + Number(defaultFinishDays) === -1 + ? '' + : Number(defaultFinishDays); return submitRow; }, validateRow(row) { @@ -946,7 +951,12 @@ export default { return; } api.getDetail(row.id).then(res => { - this.form = res.data.data || {}; + const detail = res.data.data || {}; + this.form = { + ...detail, + defaultFinishDays: + Number(detail.defaultFinishDays) === -1 ? '' : detail.defaultFinishDays ?? '', + }; this.selectedProjectId = this.form.projectIds ? String(this.form.projectIds) : ''; this.ensureSelectedProjectOption(); this.parseNodeConfig(this.form); diff --git a/src/views/transportCapacity/components/ship-ledger.vue b/src/views/transportCapacity/components/ship-ledger.vue index f000b43..a8c6b58 100644 --- a/src/views/transportCapacity/components/ship-ledger.vue +++ b/src/views/transportCapacity/components/ship-ledger.vue @@ -16,7 +16,14 @@
- + {{ item.label }}
@@ -68,7 +75,21 @@ export default { data() { return { detailLoading: false, tableLoading: false, shipDetail: {}, activeTab: 'insurance', records: [], page: { current: 1, size: 10, total: 0 } }; }, computed: { tabs() { return tabConfigs; }, activeConfig() { return tabConfigs.find(item => item.name === this.activeTab) || tabConfigs[0]; }, activeColumns() { return this.activeConfig.columns; }, - imageFields() { return [['船舶所有权证书', 'ownershipCertImage'], ['内河船舶安全与环保证书', 'safetyCertImage'], ['船舶国籍证书', 'nationalityCertImage'], ['最低安全配员证书', 'safeManningCertImage'], ['船舶营业运输证', 'businessTransportCertImage'], ['光船租赁登记证书', 'leaseContractImage']].map(([label, prop]) => ({ label, prop })); }, + imageFields() { + let previewIndex = 0; + return [ + ['船舶所有权证书', 'ownershipCertImage'], + ['内河船舶安全与环保证书', 'safetyCertImage'], + ['船舶国籍证书', 'nationalityCertImage'], + ['最低安全配员证书', 'safeManningCertImage'], + ['船舶营业运输证', 'businessTransportCertImage'], + ['光船租赁登记证书', 'leaseContractImage'], + ].map(([label, prop]) => { + const item = { label, prop, previewIndex }; + if (this.shipDetail[prop]) previewIndex += 1; + return item; + }); + }, imageUrls() { return this.imageFields.map(item => this.shipDetail[item.prop]).filter(Boolean); }, sections() { const s = this.shipDetail; return [ { title: '船舶基本信息', items: [['船舶所属组织', 'organizationName'], ['船名', 'shipName'], ['安放龙骨日期/建造完工日期', 'constructionDate'], ['总长(m)', 'totalLength'], ['船宽(m)', 'shipWidth'], ['型深(m)', 'moldedDepth'], ['最大船高(m)', 'maxShipHeight'], ['空载吃水(t)', 'lightDraft'], ['满载吃水(t)', 'fullLoadDraft'], ['航区', 'navigationArea']] }, diff --git a/src/views/vehicle/equipment-ledger.vue b/src/views/vehicle/equipment-ledger.vue index 8ec3040..152ce4c 100644 --- a/src/views/vehicle/equipment-ledger.vue +++ b/src/views/vehicle/equipment-ledger.vue @@ -51,15 +51,33 @@ row.vehicleNo }} + { - callback( - (res.data.data.records || []).map(item => ({ - value: isShip ? item.shipIdentifierNo || item.shipName : item.plateNo, - })) - ); + if (requestId !== this.vehicleOptionsRequestId) return; + const values = (res.data.data.records || []) + .map(item => (isShip ? item.shipIdentifierNo : item.plateNo)) + .filter(Boolean); + this.vehicleOptions = [...new Set(values)].map(value => ({ label: value, value })); }) - .catch(() => callback([])); + .catch(() => { + if (requestId === this.vehicleOptionsRequestId) this.vehicleOptions = []; + }) + .finally(() => { + if (requestId === this.vehicleOptionsRequestId) this.vehicleOptionsLoading = false; + }); }, formatAttachments(value) { if (!value) return ''; @@ -254,6 +294,8 @@ export default { if (type === 'add') { getNextEquipmentCode().then(res => { this.form = { vehicleType: '车辆', equipmentCode: res.data.data }; + this.vehicleOptions = []; + this.loadVehicleOptions(''); done(); }); return; @@ -264,6 +306,8 @@ export default { ...res.data.data, attachments: this.parseAttachments(res.data.data.attachments), }; + this.vehicleOptions = []; + this.loadVehicleOptions(this.form.vehicleNo || ''); done(); }); return; @@ -335,6 +379,10 @@ export default {