diff --git a/src/api/business/contract-manage.js b/src/api/business/contract-manage.js index 875839a..543a825 100644 --- a/src/api/business/contract-manage.js +++ b/src/api/business/contract-manage.js @@ -93,10 +93,10 @@ export const expireStats = params => params, }); -/** 按合同负责部门预览下一合同编号 */ -export const nextContractNo = organizationId => +/** 按平台公司 + 业务部门预览下一合同编号 */ +export const nextContractNo = (organizationId, platformCompanyId) => request({ url: `${baseUrl}/next-contract-no`, method: 'get', - params: { organizationId }, + params: { organizationId, platformCompanyId }, }); diff --git a/src/api/common.js b/src/api/common.js index 7e03551..884286c 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -2,7 +2,7 @@ import request from '@/axios'; import { ElLoading, ElMessage } from 'element-plus'; /** 审核按钮统一超时:审批通过后可能同步推送金蝶等耗时操作,覆盖全局 10s */ -export const APPROVE_TIMEOUT = 30000; +export const APPROVE_TIMEOUT = 60 * 1000; /** * 文件流返回 diff --git a/src/api/system/business-dept-config.js b/src/api/system/business-dept-config.js new file mode 100644 index 0000000..e70fc9a --- /dev/null +++ b/src/api/system/business-dept-config.js @@ -0,0 +1,42 @@ +import request from '@/axios'; + +const baseUrl = '/blade-system/business-dept-config'; + +export const getList = (current, size, params) => + request({ + url: `${baseUrl}/list`, + method: 'get', + params: { + ...params, + current, + size, + }, + }); + +export const getDetail = id => + request({ + url: `${baseUrl}/detail`, + method: 'get', + params: { id }, + }); + +export const submit = row => + request({ + url: `${baseUrl}/submit`, + method: 'post', + data: row, + }); + +export const remove = ids => + request({ + url: `${baseUrl}/remove`, + method: 'post', + params: { ids }, + }); + +export const getByPlatformDept = (platformCompanyId, businessDeptId) => + request({ + url: `${baseUrl}/by-platform-dept`, + method: 'get', + params: { platformCompanyId, businessDeptId }, + }); diff --git a/src/api/system/business-process.js b/src/api/system/business-process.js index 0ea48d5..5f78bf6 100644 --- a/src/api/system/business-process.js +++ b/src/api/system/business-process.js @@ -12,6 +12,7 @@ export const MK_SUBMIT_TIMEOUT = 30000; * @param {string} data.bizId 业务主键(后端生成/复用 formInstanceId) * @param {string} [data.subject] 流程标题 * @param {string} [data.bizType] 业务类型 + * @param {Object} [data.tempVarData] MK 临时变量(如 { projectType }) */ export const processSubmit = data => { return request({ diff --git a/src/api/vehicle/customer-archive.js b/src/api/vehicle/customer-archive.js index 0637e27..150ec85 100644 --- a/src/api/vehicle/customer-archive.js +++ b/src/api/vehicle/customer-archive.js @@ -212,12 +212,11 @@ export const syncKingdee = id => { export const recognizeBusinessLicenseOcr = imageUrl => { return request({ - url: '/blade-transport/baidu-ocr/recognize-url', + url: '/blade-transport/baidu-ocr/business-license', method: 'post', timeout: 60000, params: { imageUrl, - type: 'business_license', }, }); }; diff --git a/src/option/base/measurement-unit.js b/src/option/base/measurement-unit.js index 84609cc..7a952ff 100644 --- a/src/option/base/measurement-unit.js +++ b/src/option/base/measurement-unit.js @@ -38,6 +38,7 @@ export const createOption = () => ({ delBtn: false, selection: true, dialogClickModal: false, + menuWidth: 320, menuFixed: 'right', column: [ { diff --git a/src/option/business/contract-manage.js b/src/option/business/contract-manage.js index ac5fac2..37f11c6 100644 --- a/src/option/business/contract-manage.js +++ b/src/option/business/contract-manage.js @@ -65,10 +65,12 @@ export const config = { ['contractName', '合同名称'], ['projectName', '所属项目'], ['organizationName', '合同负责部门'], + ['platformCompanyName', '平台公司'], ['contractCategory', '合同类别'], ['signType', '签约类型'], ['partyA', '甲方'], ['partyB', '乙方'], + ['partyC', '丙方'], ['handlerUserName', '经办人'], ['signDate', '签订日期'], ['applyDate', '申请日期'], @@ -247,6 +249,15 @@ export const option = createCrudOption([ hide: true, labelWidth: 0, }, + { + label: '客商', + prop: 'partyName', + search: true, + searchOrder: 11, + searchPlaceholder: '请输入', + hide: true, + display: false, + }, { label: '合同编号', prop: 'contractNo', @@ -264,7 +275,7 @@ export const option = createCrudOption([ align: 'left', headerAlign: 'left', search: true, - searchOrder: 7, + searchOrder: 1, searchPlaceholder: '请输入', order: 180, slot: true, @@ -311,6 +322,13 @@ export const option = createCrudOption([ minWidth: 150, rules: selectRule('合同负责部门'), }, + { + label: '平台公司', + prop: 'platformCompanyName', + minWidth: 180, + order: 115, + display: false, + }, { label: '合同类别', prop: 'contractCategory', @@ -337,7 +355,7 @@ export const option = createCrudOption([ rules: selectRule('签约类型'), }, { - label: '生效类型', + label: '合同状态', prop: 'effectiveType', type: 'select', search: true, @@ -350,24 +368,23 @@ export const option = createCrudOption([ { label: '甲方', prop: 'partyA', - type: 'select', - formslot: true, - disabled: true, - order: 160, - filterable: true, minWidth: 160, - rules: selectRule('甲方'), + addDisplay: false, + editDisplay: false, }, { label: '乙方', prop: 'partyB', - type: 'select', - formslot: true, - disabled: true, - order: 150, - filterable: true, minWidth: 160, - rules: selectRule('乙方'), + addDisplay: false, + editDisplay: false, + }, + { + label: '丙方', + prop: 'partyC', + minWidth: 160, + addDisplay: false, + editDisplay: false, }, { label: '合同期限', diff --git a/src/option/settlement/formalSettlement.js b/src/option/settlement/formalSettlement.js index e297129..6fdc26b 100644 --- a/src/option/settlement/formalSettlement.js +++ b/src/option/settlement/formalSettlement.js @@ -16,6 +16,7 @@ import { approvalStatusOptions, invoiceStatusOptions, kingdeeSyncStatusOptions, + kingdeeWriteOffStatusOptions, paymentStatusOptions, } from './formalSettlementSearch'; import { formalSettlementTableColumns } from './formalSettlementTable'; @@ -87,6 +88,7 @@ const COLUMN_EXTRA = { searchPlaceholder: '请选择', }, kingdeeLockStatus: { slot: true }, + kingdeeWriteOffStatus: { slot: true }, kingdeeAssignStatus: { slot: true }, createTime: { width: 180 }, }; @@ -175,4 +177,5 @@ export const formalSettlementOption = (settlementType = '') => ({ }); export const kingdeeSyncName = value => pickLabel(kingdeeSyncStatusOptions, value); +export const kingdeeWriteOffName = value => pickLabel(kingdeeWriteOffStatusOptions, value); export const paymentStatusName = value => pickLabel(paymentStatusOptions, value); diff --git a/src/option/settlement/formalSettlementSearch.js b/src/option/settlement/formalSettlementSearch.js index cd4d811..cd4805f 100644 --- a/src/option/settlement/formalSettlementSearch.js +++ b/src/option/settlement/formalSettlementSearch.js @@ -34,6 +34,11 @@ export const kingdeeSyncStatusOptions = [ { label: '同步失败', value: 'failed' }, ]; +export const kingdeeWriteOffStatusOptions = [ + { label: '未冲销', value: 'unwrittenoff' }, + { label: '已冲销', value: 'writtenoff' }, +]; + export const formalSettlementSearchFields = [ { label: '结算单号', prop: 'formalSettlementNo', type: 'input' }, { label: '预付结算单号', prop: 'preSettlementNo', type: 'input' }, diff --git a/src/option/settlement/formalSettlementTable.js b/src/option/settlement/formalSettlementTable.js index 15ba1cf..9360d50 100644 --- a/src/option/settlement/formalSettlementTable.js +++ b/src/option/settlement/formalSettlementTable.js @@ -25,6 +25,7 @@ export const formalSettlementTableColumns = [ { label: '来源原单号', prop: 'originFormalSettlementNo', minWidth: 170 }, { label: '金蝶单据号', prop: 'kingdeeBillNo', minWidth: 150 }, { label: '金蝶单据状态', prop: 'kingdeeSyncStatus', minWidth: 135 }, + { label: '金蝶冲销状态', prop: 'kingdeeWriteOffStatus', minWidth: 135 }, { label: '金蝶锁状态', prop: 'kingdeeLockStatus', minWidth: 150 }, { label: '已指定应付', prop: 'kingdeeAssignStatus', minWidth: 120 }, { label: '附件同步', prop: 'attachmentSyncStatusName', minWidth: 100 }, diff --git a/src/utils/kingdee.js b/src/utils/kingdee.js index b3f812c..4a4f6ab 100644 --- a/src/utils/kingdee.js +++ b/src/utils/kingdee.js @@ -13,3 +13,12 @@ export const KINGDEE_STATUS_TAG_TYPES = { /** 金蝶单据状态 → el-tag 颜色类型,未映射状态返回 info */ export const kingdeeStatusType = status => KINGDEE_STATUS_TAG_TYPES[status] || 'info'; + +/** 金蝶冲销状态 → el-tag 颜色类型(已冲销=绿、未冲销=黄) */ +export const KINGDEE_WRITEOFF_TAG_TYPES = { + writtenoff: 'success', + unwrittenoff: 'warning', +}; + +/** 金蝶冲销状态 → el-tag 颜色类型,未映射状态(null=未校验)返回 info */ +export const kingdeeWriteOffTagType = status => KINGDEE_WRITEOFF_TAG_TYPES[status] || 'info'; diff --git a/src/utils/mk-approval.js b/src/utils/mk-approval.js index ee1b0ff..475dbf0 100644 --- a/src/utils/mk-approval.js +++ b/src/utils/mk-approval.js @@ -154,6 +154,7 @@ export function isMkApprovedStatus(bizType, approvalStatus) { * @param {string} [options.subjectName] 标题后缀 * @param {string} [options.approvalStatus] 提交前的审批状态 * @param {boolean} [options.mkEnabled] 调用方已知开关时传入,false 时立即跳过 + * @param {Object} [options.tempVarData] 传给 MK 的临时变量(如项目类型 projectType) * @returns {Promise} true=已发起/复用 MK 流程,false=未开启或已跳过 */ export async function submitMkApprovalFlow({ @@ -162,6 +163,7 @@ export async function submitMkApprovalFlow({ subjectName = '', approvalStatus = '', mkEnabled, + tempVarData, } = {}) { const conf = MK_BIZ[bizType]; if (!conf) { @@ -202,12 +204,16 @@ export async function submitMkApprovalFlow({ const subject = subjectName ? `${conf.subjectPrefix}:${subjectName}` : `${conf.subjectPrefix}:${bizIdText}`; - await processSubmit({ + const submitPayload = { templateCode, bizId: bizIdText, subject, bizType, forceNewFormInstance, - }); + }; + if (tempVarData != null && typeof tempVarData === 'object') { + submitPayload.tempVarData = tempVarData; + } + await processSubmit(submitPayload); return true; } diff --git a/src/views/base/airport-master.vue b/src/views/base/airport-master.vue index 9969378..6a99afa 100644 --- a/src/views/base/airport-master.vue +++ b/src/views/base/airport-master.vue @@ -60,6 +60,13 @@ + +