采购更新

This commit is contained in:
吴红兵
2026-03-01 14:18:55 +08:00
parent e723377c70
commit 17108d542c
3 changed files with 47 additions and 10 deletions

View File

@@ -699,6 +699,8 @@ const DEPT_PURCHASE_TYPE = {
BUSINESS_NEGOTIATION: '3',
ENTRUST_CENTER: '4',
INQUIRY: '5',
/** 公开招标(部门自行采购下委托采购中心采购时可选择) */
OPEN_TENDERING: '100',
} as const;
// 学校统一采购方式字典 value与 PurchaseTypeEnum 一致)

View File

@@ -3,8 +3,8 @@
<div class="implement-form">
<el-form-item label="实施采购方式" required>
<el-radio-group v-model="implementType">
<el-radio label="1">自行组织采购</el-radio>
<el-radio label="2">委托代理采购</el-radio>
<el-radio :label="IMPLEMENT_TYPE.SELF_ORGANIZED">自行组织采购</el-radio>
<el-radio :label="IMPLEMENT_TYPE.ENTRUST_AGENT">委托代理采购</el-radio>
</el-radio-group>
</el-form-item>
@@ -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<any>(null)
const implementType = ref<string>('1')
const implementType = ref<string>(IMPLEMENT_TYPE.SELF_ORGANIZED)
const implementSubmitting = ref(false)
const representorMode = ref<'single' | 'multi'>('single')
@@ -139,20 +171,22 @@ let rollInterval: ReturnType<typeof setInterval> | 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 () => {

View File

@@ -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',