diff --git a/src/views/finance/purchasingrequisition/add.vue b/src/views/finance/purchasingrequisition/add.vue index d1b84ed..7e76142 100644 --- a/src/views/finance/purchasingrequisition/add.vue +++ b/src/views/finance/purchasingrequisition/add.vue @@ -699,6 +699,8 @@ const DEPT_PURCHASE_TYPE = { BUSINESS_NEGOTIATION: '3', ENTRUST_CENTER: '4', INQUIRY: '5', + /** 公开招标(部门自行采购下委托采购中心采购时可选择) */ + OPEN_TENDERING: '100', } as const; // 学校统一采购方式字典 value(与 PurchaseTypeEnum 一致) diff --git a/src/views/finance/purchasingrequisition/implement.vue b/src/views/finance/purchasingrequisition/implement.vue index 2bf6c94..07298e2 100644 --- a/src/views/finance/purchasingrequisition/implement.vue +++ b/src/views/finance/purchasingrequisition/implement.vue @@ -3,8 +3,8 @@
- 自行组织采购 - 委托代理采购 + 自行组织采购 + 委托代理采购 @@ -81,9 +81,41 @@ import { useMessage } from '/@/hooks/message' import { Session } from '/@/utils/storage' import * as orderVue from '/@/api/order/order-key-vue' +// ==================== 常量定义(与后端枚举保持一致) ==================== + /** 部门审核角色编码:仅该角色下显示采购代表相关页面和功能,流转至部门审核时需填写采购代表 */ const PURCHASE_DEPT_AUDIT_ROLE_CODE = 'PURCHASE_DEPT_AUDIT' +/** 实施采购方式(与后端 ImplementTypeEnum 一致) */ +const IMPLEMENT_TYPE = { + /** 自行组织采购 */ + SELF_ORGANIZED: '1', + /** 委托代理采购 */ + ENTRUST_AGENT: '2', +} as const + +/** 采购形式(与后端 PurchaseModeEnum 一致) */ +const PURCHASE_MODE = { + /** 部门自行采购 */ + DEPT_SELF: '1', + /** 学校统一采购 */ + SCHOOL_UNIFIED: '2', +} as const + +/** 采购途径(与后端 PurchaseChannelEnum 一致) */ +const PURCHASE_CHANNEL = { + /** 自行采购 */ + SELF: '1', + /** 委托采购中心采购 */ + ENTRUST_CENTER: '2', +} as const + +/** 是否标识(与后端 CommonConstants.YES/NO 一致) */ +const YES_NO = { + NO: '0', + YES: '1', +} as const + const roleCode = computed(() => Session.getRoleCode() || '') const isDeptAuditRole = computed(() => roleCode.value === PURCHASE_DEPT_AUDIT_ROLE_CODE) @@ -117,7 +149,7 @@ const applyIdRaw = computed(() => { }) const applyRow = ref(null) -const implementType = ref('1') +const implementType = ref(IMPLEMENT_TYPE.SELF_ORGANIZED) const implementSubmitting = ref(false) const representorMode = ref<'single' | 'multi'>('single') @@ -139,20 +171,22 @@ let rollInterval: ReturnType | null = null /** 是否可以分配代理:委托代理采购 且 (学校统一采购 或 部门自行采购且委托采购中心采购) */ const canAssignAgent = computed(() => { // 自行组织采购不需要分配代理 - if (implementType.value !== '2') return false + if (implementType.value !== IMPLEMENT_TYPE.ENTRUST_AGENT) return false const row = applyRow.value if (!row) return false - return row.purchaseMode === '2' || (row.purchaseMode === '0' && row.purchaseType === '4') + // 学校统一采购 或 部门自行采购且委托采购中心采购 + return row.purchaseMode === PURCHASE_MODE.SCHOOL_UNIFIED + || (row.purchaseMode === PURCHASE_MODE.DEPT_SELF && row.purchaseChannel === PURCHASE_CHANNEL.ENTRUST_CENTER) }) /** 是否可以发送招标代理:委托代理采购 且 已分配代理 且 未发送 */ const canSendToAgent = computed(() => { // 自行组织采购不需要发送 - if (implementType.value !== '2') return false + if (implementType.value !== IMPLEMENT_TYPE.ENTRUST_AGENT) return false const row = applyRow.value if (!row) return false // 已分配代理 且 未发送 - return !!row.agentId && row.agentSent !== '1' + return !!row.agentId && row.agentSent !== YES_NO.YES }) const loadAgentList = async () => { diff --git a/src/views/finance/purchasingrequisition/index.vue b/src/views/finance/purchasingrequisition/index.vue index 4d4625f..0b6b6ad 100644 --- a/src/views/finance/purchasingrequisition/index.vue +++ b/src/views/finance/purchasingrequisition/index.vue @@ -581,6 +581,7 @@ const handleSubmit = async (row: any) => { /** 操作栏「更多」菜单项配置 */ const getActionMenuItems = (row: any) => { const isTemp = row?.status === '-1'; + const isCompleted = row?.status === '1'; const items = [ { command: 'edit', @@ -610,19 +611,19 @@ const getActionMenuItems = (row: any) => { command: 'implement', label: '实施采购', icon: Upload, - visible: () => hasAuth('purchase_implement'), + visible: () => isCompleted && hasAuth('purchase_implement'), }, { command: 'archive', label: '文件归档', icon: FolderOpened, - visible: () => hasAuth('purchase_archive'), + visible: () => isCompleted && hasAuth('purchase_archive'), }, { command: 'downloadApply', label: '下载审批表', icon: Download, - visible: () => true, + visible: () => isCompleted, }, { command: 'representor',