采购更新

This commit is contained in:
吴红兵
2026-03-11 22:14:38 +08:00
parent 4fe8453fdf
commit ad78c6c70d
4 changed files with 208 additions and 122 deletions

View File

@@ -39,6 +39,14 @@
<el-option label="是" value="1" />
</el-select>
</el-form-item>
<el-form-item label="是否特殊" prop="isSpecial">
<el-select v-model="state.queryForm.isSpecial" placeholder="请选择是否特殊" clearable style="width: 200px">
<el-option label="否" value="0" />
<el-option label="紧急" value="1" />
<el-option label="单一" value="2" />
<el-option label="进口" value="3" />
</el-select>
</el-form-item>
<el-form-item label="采购形式" prop="purchaseMode">
<el-select
v-model="state.queryForm.purchaseMode"
@@ -51,13 +59,25 @@
<el-option label="学校统一采购" value="2" />
</el-select>
</el-form-item>
<el-form-item label="采购方式" prop="purchaseType">
<el-form-item v-if="state.queryForm.purchaseMode === '1'" label="采购途径" prop="purchaseChannel">
<el-select
v-model="state.queryForm.purchaseChannel"
placeholder="请选择采购途径"
clearable
style="width: 200px"
@change="handlePurchaseChannelChange"
>
<el-option label="自行采购" value="1" />
<el-option label="委托采购中心采购" value="2" />
</el-select>
</el-form-item>
<el-form-item v-if="showPurchaseTypeSelect" label="采购方式" prop="purchaseType">
<el-select v-model="state.queryForm.purchaseType" placeholder="请选择采购方式" clearable style="width: 200px">
<el-option v-for="item in purchaseTypeSearchOptions" :key="item.value" :label="item.label" :value="item.value" />
<el-option v-for="item in purchaseTypeOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="需求部门" prop="deptId">
<el-select v-model="state.queryForm.deptId" placeholder="请选择需求部门" clearable filterable style="width: 200px">
<el-select v-model="state.queryForm.deptCode" placeholder="请选择需求部门" clearable filterable style="width: 200px">
<el-option v-for="item in secondDeptList" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
@@ -345,7 +365,14 @@
<template v-if="scope.row.status === '1'">
<el-tooltip v-if="scope.row.contractFlowStatus" content="点击查看合同详情" placement="top">
<el-tag
v-if="scope.row.contractFlowStatus === '0'"
v-if="scope.row.contractFlowStatus === '-1'"
type="info"
class="status-tag-clickable"
@click="handleEditContract(scope.row)"
>已上传
</el-tag>
<el-tag
v-else-if="scope.row.contractFlowStatus === '0'"
type="warning"
class="status-tag-clickable"
@click="handleShowContractDetail(scope.row)"
@@ -365,9 +392,6 @@
@click="handleShowContractDetail(scope.row)"
>已作废
</el-tag>
<el-tag v-else type="info" class="status-tag-clickable" @click="handleShowContractDetail(scope.row)">{{
scope.row.contractFlowStatus
}}</el-tag>
</el-tooltip>
<el-button v-else type="primary" link size="small" @click="handleAddContract(scope.row)">添加合同</el-button>
</template>
@@ -593,45 +617,46 @@ const dictData = ref({
const purchaseTypeDeptDelegationList = ref<any[]>([]); // 委托采购中心采购方式字典
const secondDeptList = ref<any[]>([]); // 二级部门列表
// 采购方式搜索选项(根据采购形式动态变化)
const purchaseTypeSearchOptions = computed(() => {
// 是否显示采购方式选择框
const showPurchaseTypeSelect = computed(() => {
const mode = state.queryForm.purchaseMode;
if (mode === '2') {
// 学校统一采购:使用UNION_PURCHASE_TYPE字典
return dictData.value.purchaseTypeUnionList;
// 学校统一采购:显示采购方式
return true;
} else if (mode === '1') {
// 部门自行采购:合并DEPT_PURCHASE_TYPE和PURCHASE_TYPE_DEPT_DELEGATION
return [...dictData.value.purchaseTypeDeptList, ...purchaseTypeDeptDelegationList.value];
// 部门自行采购:需要先选择采购途径
return !!state.queryForm.purchaseChannel;
}
// 未选择采购形式时,显示所有选项
return [...dictData.value.purchaseTypeDeptList, ...purchaseTypeDeptDelegationList.value, ...dictData.value.purchaseTypeUnionList];
return false;
});
// 采购形式变化时清空采购方式
// 采购方式选项(根据采购形式和采购途径动态变化)
const purchaseTypeOptions = computed(() => {
const mode = state.queryForm.purchaseMode;
if (mode === '2') {
// 学校统一采购:使用 UNION_PURCHASE_TYPE 字典
return dictData.value.purchaseTypeUnionList;
} else if (mode === '1') {
const channel = state.queryForm.purchaseChannel;
if (channel === '1') {
// 自行采购:使用 DEPT_PURCHASE_TYPE 字典
return dictData.value.purchaseTypeDeptList;
} else if (channel === '2') {
// 委托采购中心采购:使用 PURCHASE_TYPE_DEPT_DELEGATION 字典
return purchaseTypeDeptDelegationList.value;
}
}
return [];
});
// 采购形式变化时清空采购途径和采购方式
const handlePurchaseModeChange = () => {
state.queryForm.purchaseChannel = '';
state.queryForm.purchaseType = '';
};
// 搜索条件相关数据
const purchaseTypeDeptDelegationList = ref<any[]>([]); // 委托采购中心采购方式字典
const secondDeptList = ref<any[]>([]); // 二级部门列表
// 采购方式搜索选项(根据采购形式动态变化)
const purchaseTypeSearchOptions = computed(() => {
const mode = state.queryForm.purchaseMode;
if (mode === '2') {
// 学校统一采购使用UNION_PURCHASE_TYPE字典
return dictData.value.purchaseTypeUnionList;
} else if (mode === '1') {
// 部门自行采购合并DEPT_PURCHASE_TYPE和PURCHASE_TYPE_DEPT_DELEGATION
return [...dictData.value.purchaseTypeDeptList, ...purchaseTypeDeptDelegationList.value];
}
// 未选择采购形式时,显示所有选项
return [...dictData.value.purchaseTypeDeptList, ...purchaseTypeDeptDelegationList.value, ...dictData.value.purchaseTypeUnionList];
});
// 采购形式变化时清空采购方式
const handlePurchaseModeChange = () => {
// 采购途径变化时清空采购方式
const handlePurchaseChannelChange = () => {
state.queryForm.purchaseType = '';
};
@@ -726,9 +751,11 @@ const state: BasicTableProps = reactive<BasicTableProps>({
projectType: '',
status: '',
isCentralized: '',
isSpecial: '',
purchaseMode: '',
purchaseChannel: '',
purchaseType: '',
deptId: '',
deptCode: '',
},
createdIsNeed: true,
});
@@ -837,6 +864,16 @@ const handleAddContract = (row: any) => {
purchaseContractDialogRef.value?.open(String(id), 'add');
};
/** 点击已上传合同:打开采购合同编辑弹窗 */
const handleEditContract = (row: any) => {
const id = row?.id ?? row?.purchaseId;
if (!id) {
useMessage().warning('无法获取采购申请ID');
return;
}
purchaseContractDialogRef.value?.open(String(id), 'edit');
};
/** 点击采购合同状态:打开采购合同详情弹窗 */
const handleShowContractDetail = (row: any) => {
const id = row?.id ?? row?.purchaseId;