From e6d4edf36228a30d098e479d795135cb07519c3f Mon Sep 17 00:00:00 2001 From: b2894lxlx <517289602@qq.com> Date: Thu, 6 Aug 2026 17:40:03 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E3=80=81=E5=90=88=E5=90=8Cfi?= =?UTF-8?q?x?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/business/contract-manage.js | 7 + src/option/business/common.js | 6 +- src/option/business/contract-manage.js | 67 +++- src/option/business/project-apply.js | 20 +- src/option/business/temporary-credit-limit.js | 15 +- .../transportCapacity/transport-ship.js | 35 +- .../transportCapacity/transport-vehicle.js | 20 +- src/views/base/airport-master.vue | 65 ++-- src/views/base/port-terminal.vue | 183 +++++----- src/views/base/railway-station.vue | 40 +-- src/views/base/region.vue | 72 +++- .../components/business-crud-page.vue | 224 ++++++++++-- src/views/business/project-apply.vue | 336 +++++++++++++----- .../vehicle/credit-score-quantification.vue | 98 +++-- src/views/vehicle/customer-archive.vue | 34 +- 15 files changed, 887 insertions(+), 335 deletions(-) diff --git a/src/api/business/contract-manage.js b/src/api/business/contract-manage.js index 109b21c..09976d0 100644 --- a/src/api/business/contract-manage.js +++ b/src/api/business/contract-manage.js @@ -45,6 +45,13 @@ export const reject = id => params: { id }, }); +export const updateAttachments = row => + request({ + url: `${baseUrl}/update-attachments`, + method: 'post', + data: row, + }); + export const withdraw = id => request({ url: `${baseUrl}/withdraw`, diff --git a/src/option/business/common.js b/src/option/business/common.js index 6b6a0dd..f4b4aa8 100644 --- a/src/option/business/common.js +++ b/src/option/business/common.js @@ -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 = [ diff --git a/src/option/business/contract-manage.js b/src/option/business/contract-manage.js index 3e635f9..c664700 100644 --- a/src/option/business/contract-manage.js +++ b/src/option/business/contract-manage.js @@ -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; diff --git a/src/option/business/project-apply.js b/src/option/business/project-apply.js index 077b1d5..057773e 100644 --- a/src/option/business/project-apply.js +++ b/src/option/business/project-apply.js @@ -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', diff --git a/src/option/business/temporary-credit-limit.js b/src/option/business/temporary-credit-limit.js index 406e62a..1a2175e 100644 --- a/src/option/business/temporary-credit-limit.js +++ b/src/option/business/temporary-credit-limit.js @@ -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, }; diff --git a/src/option/transportCapacity/transport-ship.js b/src/option/transportCapacity/transport-ship.js index 42426e3..061248d 100644 --- a/src/option/transportCapacity/transport-ship.js +++ b/src/option/transportCapacity/transport-ship.js @@ -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' }, ], }; diff --git a/src/option/transportCapacity/transport-vehicle.js b/src/option/transportCapacity/transport-vehicle.js index db4c78d..7447e77 100644 --- a/src/option/transportCapacity/transport-vehicle.js +++ b/src/option/transportCapacity/transport-vehicle.js @@ -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', }, ], diff --git a/src/views/base/airport-master.vue b/src/views/base/airport-master.vue index 140badd..b509306 100644 --- a/src/views/base/airport-master.vue +++ b/src/views/base/airport-master.vue @@ -366,15 +366,6 @@ export default { addDisplay: false, editDisplay: false, }, - { - label: '行政区划编号', - prop: 'regionCode', - minWidth: 160, - overHidden: false, - addDisplay: false, - editDisplay: false, - rules: [{ max: 32, message: '行政区划编码不能超过32字', trigger: 'blur' }], - }, { label: '详细地址', prop: 'detailAddress', @@ -409,6 +400,15 @@ export default { { validator: validateLatitude, trigger: 'blur' }, ], }, + { + label: '行政区划编号', + prop: 'regionCode', + minWidth: 160, + overHidden: false, + addDisplay: false, + editDisplay: false, + rules: [{ max: 32, message: '行政区划编码不能超过32字', trigger: 'blur' }], + }, { label: '数据来源', prop: 'dataSource', @@ -425,23 +425,6 @@ export default { { label: '手动录入', value: '手动录入' }, ], }, - { - label: '启停状态', - prop: 'status', - type: 'select', - search: true, - slot: true, - dataType: 'number', - minWidth: 110, - overHidden: false, - addDisplay: false, - editDisplay: false, - dicData: [ - { label: '全部', value: '' }, - { label: '启用', value: 1 }, - { label: '停用', value: 2 }, - ], - }, { label: '备注', prop: 'remark', @@ -483,6 +466,23 @@ export default { display: false, minWidth: 160, }, + { + label: '启停状态', + prop: 'status', + type: 'select', + search: true, + slot: true, + dataType: 'number', + minWidth: 110, + overHidden: false, + addDisplay: false, + editDisplay: false, + dicData: [ + { label: '全部', value: '' }, + { label: '启用', value: 1 }, + { label: '停用', value: 2 }, + ], + }, ], }, excelOption: { @@ -869,17 +869,12 @@ export default { type: 'warning', }).then(() => { NProgress.start(); - exportBlob( - '/blade-system/airport-master/export-airport-master', - this.buildExportParams(), - { feedback: true } - ) + exportBlob('/blade-system/airport-master/export-airport-master', this.buildExportParams(), { + feedback: true, + }) .then(async res => { const blob = await addExcelRequiredHeaderMarks(res.data); - downloadXls( - blob, - `空港机场主数据${this.$dayjs().format('YYYY-MM-DD HH:mm:ss')}.xlsx` - ); + downloadXls(blob, `空港机场主数据${this.$dayjs().format('YYYY-MM-DD HH:mm:ss')}.xlsx`); }) .finally(() => { NProgress.done(); diff --git a/src/views/base/port-terminal.vue b/src/views/base/port-terminal.vue index cc977fc..e1d821e 100644 --- a/src/views/base/port-terminal.vue +++ b/src/views/base/port-terminal.vue @@ -229,7 +229,15 @@ import 'nprogress/nprogress.css'; const DEFAULT_COUNTRY_CODE = '+86'; const EXCLUDED_EXCEL_HEADERS = ['数据来源', '启停状态']; -const REQUIRED_EXPORT_HEADERS = ['港口码头名称', '港口/码头名称', '类型', '国家', '城市', '经度', '纬度']; +const REQUIRED_EXPORT_HEADERS = [ + '港口码头名称', + '港口/码头名称', + '类型', + '国家', + '城市', + '经度', + '纬度', +]; const getExcelCellText = value => { if (value === undefined || value === null) return ''; @@ -256,9 +264,7 @@ const removeWorkbookColumnsByHeaders = workbook => { } }); if (indexes.length) { - indexes - .sort((a, b) => b - a) - .forEach(colNumber => worksheet.spliceColumns(colNumber, 1)); + indexes.sort((a, b) => b - a).forEach(colNumber => worksheet.spliceColumns(colNumber, 1)); break; } } @@ -383,13 +389,42 @@ export default { dialogClickModal: false, menuWidth: 160, column: [ + { + label: '编码', + prop: 'code', + search: true, + formslot: true, + width: 140, + span: 12, + order: 70, + placeholder: '请输入编码', + rules: [ + { required: true, message: '请输入编码', trigger: 'blur' }, + { validator: validateCode, trigger: 'blur' }, + ], + change: ({ value }) => this.handleCodeChange(value), + blur: ({ value }) => this.handleCodeChange(value), + }, + { + label: '港口/码头名称', + prop: 'name', + minWidth: 140, + search: true, + searchOrder: 7, + span: 12, + order: 80, + placeholder: '请输入', + rules: [{ required: true, message: '请输入港口/码头名称', trigger: 'blur' }], + }, { label: '类型', prop: 'category', type: 'select', search: true, + searchOrder: 6, formslot: true, span: 24, + order: 100, dicData: [ { label: '全部', value: '' }, { label: '港口', value: '港口' }, @@ -409,6 +444,7 @@ export default { dicData: [], hide: true, span: 12, + order: 90, placeholder: '请选择', rules: [{ required: false, message: '请选择上级港口', trigger: 'change' }], change: ({ value }) => this.handleParentChange(value), @@ -416,7 +452,7 @@ export default { { label: '上级港口', prop: 'parentName', - minWidth: 120, + minWidth: 140, slot: true, addDisplay: false, editDisplay: false, @@ -432,39 +468,17 @@ export default { placeholder: '自动带出', rules: [{ required: false, message: '请选择上级港口', trigger: 'change' }], }, - { - label: '港口/码头名称', - prop: 'name', - minWidth: 140, - search: true, - span: 12, - placeholder: '请输入', - rules: [{ required: true, message: '请输入港口/码头名称', trigger: 'blur' }], - }, - { - label: '编码', - prop: 'code', - search: true, - formslot: true, - width: 140, - span: 12, - placeholder: '请输入编码', - rules: [ - { required: true, message: '请输入编码', trigger: 'blur' }, - { validator: validateCode, trigger: 'blur' }, - ], - change: ({ value }) => this.handleCodeChange(value), - blur: ({ value }) => this.handleCodeChange(value), - }, { label: '国家', prop: 'country', type: 'select', search: true, + searchOrder: 5, formslot: true, filterable: true, dicData: [], span: 12, + order: 60, minWidth: 140, overHidden: false, placeholder: '自动带出', @@ -478,6 +492,7 @@ export default { formslot: true, hide: true, span: 12, + order: 50, placeholder: '自动带出', rules: [{ required: true, message: '请选择所属城市', trigger: 'change' }], }, @@ -486,6 +501,7 @@ export default { prop: 'city', type: 'select', search: true, + searchOrder: 4, filterable: true, dicData: [], addDisplay: false, @@ -513,14 +529,44 @@ export default { prop: 'districtName', type: 'select', search: true, + searchOrder: 3, filterable: true, dicData: [], minWidth: 100, + hide: true, addDisplay: false, editDisplay: false, }, { - label: '行政区划编号', + label: '经度', + prop: 'longitude', + formslot: true, + minWidth: 130, + span: 12, + order: 20, + placeholder: '请输入', + overHidden: false, + rules: [ + { required: true, message: '请输入经度', trigger: 'blur' }, + { validator: validateLongitude, trigger: 'blur' }, + ], + }, + { + label: '纬度', + prop: 'latitude', + formslot: true, + minWidth: 130, + span: 12, + order: 10, + placeholder: '请输入', + overHidden: false, + rules: [ + { required: true, message: '请输入纬度', trigger: 'blur' }, + { validator: validateLatitude, trigger: 'blur' }, + ], + }, + { + label: '行政区划编码', prop: 'regionCode', minWidth: 140, span: 12, @@ -538,42 +584,18 @@ export default { span: 24, minWidth: 220, overHidden: false, + order: 30, placeholder: '请输入', maxlength: 255, showWordLimit: true, rules: [{ max: 255, message: '详细地址不能超过255字', trigger: 'blur' }], }, - { - label: '经度', - prop: 'longitude', - formslot: true, - minWidth: 130, - span: 12, - placeholder: '请输入', - overHidden: false, - rules: [ - { required: true, message: '请输入经度', trigger: 'blur' }, - { validator: validateLongitude, trigger: 'blur' }, - ], - }, - { - label: '纬度', - prop: 'latitude', - formslot: true, - minWidth: 130, - span: 12, - placeholder: '请输入', - overHidden: false, - rules: [ - { required: true, message: '请输入纬度', trigger: 'blur' }, - { validator: validateLatitude, trigger: 'blur' }, - ], - }, { label: '数据来源', prop: 'dataSource', type: 'select', search: true, + searchOrder: 2, minWidth: 120, overHidden: false, addDisplay: false, @@ -585,23 +607,6 @@ export default { { label: '手工导入', value: '手工导入' }, ], }, - { - label: '启停状态', - prop: 'status', - type: 'select', - search: true, - slot: true, - dataType: 'number', - minWidth: 110, - overHidden: false, - addDisplay: false, - editDisplay: false, - dicData: [ - { label: '全部', value: '' }, - { label: '启用', value: 1 }, - { label: '停用', value: 2 }, - ], - }, { label: '备注', prop: 'remark', @@ -639,9 +644,26 @@ export default { valueFormat: 'YYYY-MM-DD HH:mm:ss', addDisplay: false, editDisplay: false, - display: false, minWidth: 160, }, + { + label: '状态', + prop: 'status', + type: 'select', + search: true, + searchOrder: 1, + slot: true, + dataType: 'number', + minWidth: 110, + overHidden: false, + addDisplay: false, + editDisplay: false, + dicData: [ + { label: '全部', value: '' }, + { label: '启用', value: 1 }, + { label: '停用', value: 2 }, + ], + }, ], }, excelOption: { @@ -1270,19 +1292,14 @@ export default { type: 'warning', }).then(() => { NProgress.start(); - exportBlob( - '/blade-system/port-terminal/export-port-terminal', - this.buildExportParams(), - { feedback: true } - ) + exportBlob('/blade-system/port-terminal/export-port-terminal', this.buildExportParams(), { + feedback: true, + }) .then(async res => { const blob = await removeExcelColumnsByHeaders(res.data, { markRequiredHeaders: true, }); - downloadXls( - blob, - `港口码头主数据${this.$dayjs().format('YYYY-MM-DD HH:mm:ss')}.xlsx` - ); + downloadXls(blob, `港口码头主数据${this.$dayjs().format('YYYY-MM-DD HH:mm:ss')}.xlsx`); }) .finally(() => { NProgress.done(); diff --git a/src/views/base/railway-station.vue b/src/views/base/railway-station.vue index 9764d73..37d1bc3 100644 --- a/src/views/base/railway-station.vue +++ b/src/views/base/railway-station.vue @@ -335,15 +335,6 @@ export default { addDisplay: false, editDisplay: false, }, - { - label: '行政区划编号', - prop: 'regionCode', - minWidth: 160, - overHidden: false, - addDisplay: false, - editDisplay: false, - rules: [{ max: 32, message: '行政区划编码不能超过32字', trigger: 'blur' }], - }, { label: '详细地址', prop: 'detailAddress', @@ -373,20 +364,13 @@ export default { rules: [{ validator: validateLatitude, trigger: 'blur' }], }, { - label: '数据来源', - prop: 'dataSource', - type: 'select', - search: true, - minWidth: 120, + label: '行政区划编号', + prop: 'regionCode', + minWidth: 160, overHidden: false, addDisplay: false, editDisplay: false, - dicData: [ - { label: '全部', value: '' }, - { label: '初始化导入', value: '初始化导入' }, - { label: '批量', value: '批量' }, - { label: '手动', value: '手动' }, - ], + rules: [{ max: 32, message: '行政区划编码不能超过32字', trigger: 'blur' }], }, { label: '启停状态', @@ -446,6 +430,22 @@ export default { display: false, minWidth: 160, }, + { + label: '数据来源', + prop: 'dataSource', + type: 'select', + search: true, + minWidth: 120, + overHidden: false, + addDisplay: false, + editDisplay: false, + dicData: [ + { label: '全部', value: '' }, + { label: '初始化导入', value: '初始化导入' }, + { label: '批量', value: '批量' }, + { label: '手动', value: '手动' }, + ], + }, ], }, excelOption: { diff --git a/src/views/base/region.vue b/src/views/base/region.vue index 31f8673..394bf84 100644 --- a/src/views/base/region.vue +++ b/src/views/base/region.vue @@ -11,6 +11,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + 搜索 + 清空 + + { const parentCode = node.level === 0 ? ROOT_PARENT_CODE : node.data.id; - getLazyTree(parentCode).then(res => { + getLazyTree(parentCode, this.searchForm).then(res => { resolve( res.data.data.map(item => { return { @@ -402,7 +440,7 @@ export default { methods: { initTree() { this.treeData = []; - getLazyTree(this.topCode).then(res => { + getLazyTree(this.topCode, this.searchForm).then(res => { this.treeData = res.data.data.map(item => { return { ...item, @@ -411,6 +449,20 @@ export default { }); }); }, + handleSearch() { + this.initTree(); + this.regionForm = {}; + }, + handleSearchReset() { + this.searchForm = { + code: '', + name: '', + regionLevel: undefined, + dataSource: '', + status: undefined, + }; + this.handleSearch(); + }, nodeClick(data) { this.setRegionColumnDisplay('code', true); this.treeCode = data.id; @@ -624,20 +676,18 @@ export default { type: 'warning', }).then(() => { NProgress.start(); - exportBlob( - `/blade-system/region/export-region?${this.website.tokenHeader}=${getToken()}`, - { feedback: true } - ).then(res => { + exportBlob(`/blade-system/region/export-region?${this.website.tokenHeader}=${getToken()}`, { + feedback: true, + }).then(res => { downloadXls(res.data, `行政区划数据${this.$dayjs().format('YYYY-MM-DD HH:mm:ss')}.xlsx`); NProgress.done(); }); }); }, handleTemplate() { - exportBlob( - `/blade-system/region/export-template?${this.website.tokenHeader}=${getToken()}`, - { feedback: true } - ).then(res => { + exportBlob(`/blade-system/region/export-template?${this.website.tokenHeader}=${getToken()}`, { + feedback: true, + }).then(res => { downloadXls(res.data, '行政区划模板.xlsx'); }); }, diff --git a/src/views/business/components/business-crud-page.vue b/src/views/business/components/business-crud-page.vue index 2d27a2c..37dc93e 100644 --- a/src/views/business/components/business-crud-page.vue +++ b/src/views/business/components/business-crud-page.vue @@ -18,6 +18,7 @@ @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" + @search-icon-change="handleSearchIconChange" @on-load="onLoad" >