diff --git a/src/api/purchase/bidfile.ts b/src/api/purchase/bidfile.ts
index a9d58d2..2d4cae5 100644
--- a/src/api/purchase/bidfile.ts
+++ b/src/api/purchase/bidfile.ts
@@ -117,7 +117,17 @@ export function getFlowPurchaseDetail(purchaseId: string) {
});
}
-export function tempStoreBidFile(data: { purchaseId: string; fileId?: string; fileName?: string; fileUrl?: string; comment?: string }) {
+export function tempStoreBidFile(data: {
+ purchaseId: string;
+ fileId?: string;
+ fileName?: string;
+ fileUrl?: string;
+ comment?: string;
+ flowTarget?: string;
+ representorTeacherNo?: string;
+ representors?: string;
+ representorType?: string;
+}) {
return request({
url: '/purchase/purchasingbidfile/tempStore',
method: 'post',
diff --git a/src/views/purchase/purchasingrequisition/bidfile-audit.vue b/src/views/purchase/purchasingrequisition/bidfile-audit.vue
index 5a41980..d57608f 100644
--- a/src/views/purchase/purchasingrequisition/bidfile-audit.vue
+++ b/src/views/purchase/purchasingrequisition/bidfile-audit.vue
@@ -283,11 +283,10 @@
-
-
- 保存参与人信息
-
+
+ 参与人信息将在审核提交时自动保存
+
@@ -311,11 +310,10 @@ import {
getAgentPurchaseDetail,
getFlowPurchaseDetail,
tempStoreBidFile,
- submitBidFile,
} from '/@/api/purchase/bidfile';
import { getRequirementFiles } from '/@/api/purchase/purchasingfiles';
import { currElTabIsSave } from '/@/api/order/order-key-vue';
-import { getDeptMembers, saveRepresentor, randomSelectRepresentor } from '/@/api/purchase/purchasingrequisition';
+import { getDeptMembers, randomSelectRepresentor } from '/@/api/purchase/purchasingrequisition';
// ==================== Props & Emits ====================
@@ -335,11 +333,9 @@ const currentUserRoleCodes = computed(() => userStore.userInfos.roleCodes || [])
const ROLE_LABEL_MAP: Record = {
PURCHASE_AGENT: '招标代理',
- PURCHASE_ASSET: '资产管理处',
- PURCHASE_DEPT_APPLY: '部门经办人',
- PURCHASE_DEPT_AUDIT: '部门负责人',
+ PURCHASE_CENTER: '资产管理科',
+ PURCHASE_DEPT_APPLY: '部门申请人',
PURCHASE_FILE_AUDIT: '内审部门',
- PURCHASE_CENTER: '采购中心',
};
const PURCHASE_TYPE_MAP: Record = {
@@ -378,29 +374,28 @@ const isViewMode = computed(() => {
// 当前用户角色判断(从用户store获取)
const isAgent = computed(() => currentUserRoleCodes.value.includes('PURCHASE_AGENT'));
-const isAsset = computed(() => currentUserRoleCodes.value.includes('PURCHASE_ASSET'));
+const isCenter = computed(() => currentUserRoleCodes.value.includes('PURCHASE_CENTER'));
const isDeptApply = computed(() => currentUserRoleCodes.value.includes('PURCHASE_DEPT_APPLY'));
-const isDeptAudit = computed(() => currentUserRoleCodes.value.includes('PURCHASE_DEPT_AUDIT'));
const isFileAudit = computed(() => currentUserRoleCodes.value.includes('PURCHASE_FILE_AUDIT'));
// 是否显示上传区域
const showUploadSection = computed(() => {
if (isViewMode.value) return false;
if (isAgent.value) return true;
- if (isAsset.value || isDeptApply.value || isFileAudit.value) return true;
+ if (isCenter.value || isDeptApply.value || isFileAudit.value) return true;
return false;
});
-// 是否显示流转去向选择区域(仅资产管理处在审核时显示)
+// 是否显示流转去向选择区域(仅资产管理科在审核时显示)
const showFlowTargetSection = computed(() => {
if (isViewMode.value) return false;
- return isAsset.value && isFlowEmbed.value;
+ return isCenter.value && isFlowEmbed.value;
});
-// 是否显示部门参与人选择区域(仅部门负责人在审核时显示)
+// 是否显示部门参与人选择区域(仅部门申请人在审核时显示)
const showRepresentorSection = computed(() => {
if (isViewMode.value) return false;
- return isDeptAudit.value && isFlowEmbed.value;
+ return isDeptApply.value && isFlowEmbed.value;
});
// 采购申请数据
@@ -426,9 +421,6 @@ const requirementLoading = ref(false);
const uploadFormRef = ref();
const uploadRef = ref();
const fileList = ref([]);
-const saveLoading = ref(false);
-const tempStoreLoading = ref(false);
-const submitLoading = ref(false);
const isTempStored = ref(false);
const uploadForm = reactive({
fileId: '',
@@ -451,16 +443,8 @@ const selectedRepresentor = ref('');
const randomCandidates = ref([]);
const currentRepresentor = ref(null);
const representorType = ref('purchase_rep');
-const saveRepresentorLoading = ref(false);
const randomSelectLoading = ref(false);
-const canSaveRepresentor = computed(() => {
- if (representorSelectMode.value === 'designate') {
- return !!selectedRepresentor.value;
- }
- return !!currentRepresentor.value;
-});
-
// ==================== 计算属性 ====================
const BID_FILE_TYPE = '130';
@@ -482,11 +466,6 @@ const effectivePurchaseId = computed(() => {
return (route.query.id as string) || (route.query.purchaseId as string) || '';
});
-// 是否可以提交(非查看模式即可提交,不强制要求上传文件)
-const canSubmitFile = computed(() => {
- return !isViewMode.value;
-});
-
// ==================== 方法定义 ====================
// 获取角色标签
@@ -616,24 +595,6 @@ const handleDownload = (row: any) => {
}
};
-// 手动保存上传的招标文件
-const handleSaveBidFile = async () => {
- if (!uploadForm.fileId) {
- ElMessage.warning('请先上传招标文件');
- return;
- }
-
- saveLoading.value = true;
- try {
- const saved = await saveUploadedFile();
- if (saved) {
- ElMessage.success('招标文件保存成功,版本已更新');
- }
- } finally {
- saveLoading.value = false;
- }
-};
-
// 保存上传的招标文件
const saveUploadedFile = async () => {
if (!uploadForm.fileId) {
@@ -657,7 +618,7 @@ const saveUploadedFile = async () => {
if (isAgent.value) {
res = await agentUploadBidFile(params);
- } else if (isAsset.value) {
+ } else if (isCenter.value) {
res = await assetUploadBidFile(params);
} else {
res = await uploadBidFileNewVersion(params);
@@ -691,12 +652,24 @@ const saveUploadedFile = async () => {
// 流程保存回调 - 审核时自动调用暂存接口
const handleFlowSave = async () => {
- // 资产管理处审核时,必须选择流转去向
+ // 资产管理科审核时,必须选择流转去向
if (showFlowTargetSection.value && !flowTarget.value) {
ElMessage.warning('请选择流转去向');
return false;
}
+ // 部门申请人审核时,检查部门参与人是否已选择
+ if (showRepresentorSection.value) {
+ if (representorSelectMode.value === 'designate' && !selectedRepresentor.value) {
+ ElMessage.warning('请选择部门参与人');
+ return false;
+ }
+ if (representorSelectMode.value === 'random' && !currentRepresentor.value) {
+ ElMessage.warning('请先随机抽取部门参与人');
+ return false;
+ }
+ }
+
// 如果有待保存的文件,先保存文件
if (uploadForm.fileId) {
const saved = await saveUploadedFile();
@@ -705,7 +678,7 @@ const handleFlowSave = async () => {
// 自动调用暂存接口(可以没有文件)
try {
- const params = {
+ const params: any = {
purchaseId: effectivePurchaseId.value,
fileId: uploadForm.fileId || '',
fileName: uploadForm.fileName || '',
@@ -714,6 +687,17 @@ const handleFlowSave = async () => {
flowTarget: flowTarget.value || '',
};
+ // 部门参与人信息(仅部门申请人角色)
+ if (showRepresentorSection.value) {
+ if (representorSelectMode.value === 'designate') {
+ params.representorTeacherNo = selectedRepresentor.value;
+ } else {
+ params.representors = randomCandidates.value.join(',');
+ params.representorTeacherNo = currentRepresentor.value?.teacherNo;
+ }
+ params.representorType = representorType.value;
+ }
+
const res = await tempStoreBidFile(params);
if (res.code === 0) {
await loadBidFiles();
@@ -782,45 +766,6 @@ const handleRandomSelect = async () => {
}
};
-const handleSaveRepresentor = async () => {
- if (!canSaveRepresentor.value) {
- ElMessage.warning('请先选择参与人');
- return;
- }
-
- if (!representorType.value) {
- ElMessage.warning('请选择参与人身份');
- return;
- }
-
- try {
- saveRepresentorLoading.value = true;
- let res: any;
-
- if (representorSelectMode.value === 'designate') {
- res = await saveRepresentor(Number(effectivePurchaseId.value), selectedRepresentor.value, undefined, representorType.value);
- } else {
- res = await saveRepresentor(
- Number(effectivePurchaseId.value),
- currentRepresentor.value?.teacherNo,
- randomCandidates.value.join(','),
- representorType.value
- );
- }
-
- if (res.code === 0) {
- ElMessage.success('保存参与人信息成功');
- await loadApplyData();
- } else {
- ElMessage.error(res.msg || '保存失败');
- }
- } catch (e: any) {
- ElMessage.error(e?.msg || '保存失败');
- } finally {
- saveRepresentorLoading.value = false;
- }
-};
-
// ==================== 生命周期 ====================
onMounted(async () => {