From 99baffe114ecb8728ddf25fe691482e27a06699d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=90=B4=E7=BA=A2=E5=85=B5?= <374362909@qq.com>
Date: Mon, 9 Mar 2026 23:35:38 +0800
Subject: [PATCH] =?UTF-8?q?=E9=87=87=E8=B4=AD=E5=90=88=E5=90=8C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/purchase/purchasingcontract.ts | 69 +--
.../PurchaseContractDetailDialog.vue | 220 ++++++++++
.../PurchaseContractDialog.vue | 309 ++++++++++++++
.../purchasingrequisition/contract-audit.vue | 397 ++++++++++++++++++
.../purchase/purchasingrequisition/index.vue | 67 ++-
5 files changed, 1034 insertions(+), 28 deletions(-)
create mode 100644 src/views/purchase/purchasingrequisition/PurchaseContractDetailDialog.vue
create mode 100644 src/views/purchase/purchasingrequisition/PurchaseContractDialog.vue
create mode 100644 src/views/purchase/purchasingrequisition/contract-audit.vue
diff --git a/src/api/purchase/purchasingcontract.ts b/src/api/purchase/purchasingcontract.ts
index 4db0898..91d514f 100644
--- a/src/api/purchase/purchasingcontract.ts
+++ b/src/api/purchase/purchasingcontract.ts
@@ -5,10 +5,6 @@
import request from '/@/utils/request';
-/**
- * 分页查询
- * @param params 查询参数
- */
export function getPage(params?: any) {
return request({
url: '/purchase/purchasingcontract/page',
@@ -17,10 +13,6 @@ export function getPage(params?: any) {
});
}
-/**
- * 通过id查询
- * @param id ID
- */
export function getObj(id: string | number) {
return request({
url: '/purchase/purchasingcontract/' + id,
@@ -28,10 +20,44 @@ export function getObj(id: string | number) {
});
}
-/**
- * 新增采购合同
- * @param obj 对象数据
- */
+export function getByPurchaseId(purchaseId: string | number) {
+ return request({
+ url: '/purchase/purchasingcontract/by-purchase/' + purchaseId,
+ method: 'get',
+ });
+}
+
+export function getDetail(purchaseId: string | number) {
+ return request({
+ url: '/purchase/purchasingcontract/detail/' + purchaseId,
+ method: 'get',
+ });
+}
+
+export function tempStore(data: any) {
+ return request({
+ url: '/purchase/purchasingcontract/temp-store',
+ method: 'post',
+ data,
+ });
+}
+
+export function submit(data: any) {
+ return request({
+ url: '/purchase/purchasingcontract/submit',
+ method: 'post',
+ data,
+ });
+}
+
+export function updateContract(data: any) {
+ return request({
+ url: '/purchase/purchasingcontract/update',
+ method: 'post',
+ data,
+ });
+}
+
export function addObj(obj: any) {
return request({
url: '/purchase/purchasingcontract',
@@ -40,10 +66,6 @@ export function addObj(obj: any) {
});
}
-/**
- * 修改采购合同
- * @param obj 对象数据
- */
export function editObj(obj: any) {
return request({
url: '/purchase/purchasingcontract/edit',
@@ -52,10 +74,6 @@ export function editObj(obj: any) {
});
}
-/**
- * 删除采购合同
- * @param id ID
- */
export function delObj(id: number) {
return request({
url: '/purchase/purchasingcontract/delete',
@@ -64,13 +82,10 @@ export function delObj(id: number) {
});
}
-/**
- * 根据采购申请ID查询合同
- * @param purchaseId 采购申请ID
- */
-export function getByPurchaseId(purchaseId: string | number) {
+export function getByFlowInstId(flowInstId: number) {
return request({
- url: '/purchase/purchasingcontract/by-purchase/' + purchaseId,
+ url: '/purchase/purchasingcontract/getByFlowInstId',
method: 'get',
+ params: { flowInstId },
});
-}
+}
\ No newline at end of file
diff --git a/src/views/purchase/purchasingrequisition/PurchaseContractDetailDialog.vue b/src/views/purchase/purchasingrequisition/PurchaseContractDetailDialog.vue
new file mode 100644
index 0000000..147f492
--- /dev/null
+++ b/src/views/purchase/purchasingrequisition/PurchaseContractDetailDialog.vue
@@ -0,0 +1,220 @@
+
+
+
+ {{ purchaseNo || '-' }}
+ {{ projectName || '-' }}
+
+
+ 合同信息
+
+
+ {{ contractData.contractNo || '-' }}
+ {{ contractData.contractName || '-' }}
+ {{ contractData.money ? Number(contractData.money).toLocaleString() + ' 元' : '-' }}
+
+ 运行中
+ 已完成
+ 已作废
+ -
+
+
+ 是
+ 否
+
+
+ 是
+ 否
+
+
+ 是
+ 否
+
+
+ 是
+ 否
+
+
+ {{ contractData.legalAdviserOpinion || '-' }}
+
+ {{ contractData.remarks || '-' }}
+
+
+
+
+
+ 附件信息
+
+
+
+
+
+
+
+
+ 预览
+ 下载
+
+
+
+
+
+
+
+
+
+
+
+ 预览
+ 下载
+
+
+
+
+
+
+
+ 审核流程
+
+
+
+
+
+ 关闭
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/purchase/purchasingrequisition/PurchaseContractDialog.vue b/src/views/purchase/purchasingrequisition/PurchaseContractDialog.vue
new file mode 100644
index 0000000..78dc6fc
--- /dev/null
+++ b/src/views/purchase/purchasingrequisition/PurchaseContractDialog.vue
@@ -0,0 +1,309 @@
+
+
+
+ {{ applyData.purchaseNo || '-' }}
+ {{ applyData.projectName || '-' }}
+ {{ applyData.budget ? Number(applyData.budget).toLocaleString() + ' 元' : '-' }}
+
+ 已完成
+ {{ applyData.status }}
+
+
+
+ 合同信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 否
+ 是
+
+
+
+
+
+
+
+
+ 否
+ 是
+
+
+
+
+
+
+ 否
+ 是
+
+
+
+
+
+
+
+
+ 否
+ 是
+
+
+
+
+
+
+
+
+
+
+
+
+ 附件上传
+
+
+
+
+ 请上传PDF格式的合同文件
+
+
+
+ 请上传PDF格式的合同补充材料
+
+
+
+
+ 取消
+ 暂存
+ 提交
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/purchase/purchasingrequisition/contract-audit.vue b/src/views/purchase/purchasingrequisition/contract-audit.vue
new file mode 100644
index 0000000..cd3fbf8
--- /dev/null
+++ b/src/views/purchase/purchasingrequisition/contract-audit.vue
@@ -0,0 +1,397 @@
+
+
+
+
+
+
+
+ {{ applyData.purchaseNo || '-' }}
+ {{ applyData.projectName || '-' }}
+ {{ applyData.budget ? Number(applyData.budget).toLocaleString() + ' 元' : '-' }}
+ {{ applyData.createName || '-' }}
+ {{ applyData.deptName || '-' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 否
+ 是
+
+
+
+
+
+
+
+
+ 否
+ 是
+
+
+
+
+
+
+ 否
+ 是
+
+
+
+
+
+
+
+
+ 否
+ 是
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 预览
+ 下载
+
+
+
+
+
+
+
+
+
+
+
+ 预览
+ 下载
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/purchase/purchasingrequisition/index.vue b/src/views/purchase/purchasingrequisition/index.vue
index a3262d2..79b7bab 100644
--- a/src/views/purchase/purchasingrequisition/index.vue
+++ b/src/views/purchase/purchasingrequisition/index.vue
@@ -302,7 +302,35 @@
未知
- 未发起
+未发起
+
+ -
+
+
+
+
+
+
+
+
+
+ 采购合同
+
+
+
+
+ 运行中
+
+ 已完成
+
+ 已作废
+
+ {{ scope.row.contractFlowStatus }}
+
+ 添加合同
-
@@ -374,6 +402,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -459,6 +499,7 @@ import {
OfficeBuilding,
Warning,
DocumentChecked,
+ Tickets,
Edit,
Delete,
Upload,
@@ -492,6 +533,8 @@ const ContractDialog = defineAsyncComponent(() => import('./contract/ContractDia
const SupplementFilesDialog = defineAsyncComponent(() => import('./SupplementFilesDialog.vue'));
const SupplementViewDialog = defineAsyncComponent(() => import('./SupplementViewDialog.vue'));
const DocAuditViewDialog = defineAsyncComponent(() => import('./DocAuditViewDialog.vue'));
+const PurchaseContractDialog = defineAsyncComponent(() => import('./PurchaseContractDialog.vue'));
+const PurchaseContractDetailDialog = defineAsyncComponent(() => import('./PurchaseContractDetailDialog.vue'));
// const DocAuditDialog = defineAsyncComponent(() => import('./docAudit/DocAuditDialog.vue'));
// 字典数据和品目树数据
@@ -526,6 +569,8 @@ const contractDialogRef = ref();
const supplementFilesDialogRef = ref();
const supplementViewDialogRef = ref();
const docAuditViewDialogRef = ref();
+const purchaseContractDialogRef = ref();
+const purchaseContractDetailDialogRef = ref();
/** 采购代表弹窗 */
const representorDialogVisible = ref(false);
@@ -692,6 +737,26 @@ const handleShowSupplement = (row: any) => {
supplementViewDialogRef.value?.open(String(id), row);
};
+/** 点击添加合同:打开采购合同弹窗 */
+const handleAddContract = (row: any) => {
+ const id = row?.id ?? row?.purchaseId;
+ if (!id) {
+ useMessage().warning('无法获取采购申请ID');
+ return;
+ }
+ purchaseContractDialogRef.value?.open(String(id), 'add');
+};
+
+/** 点击采购合同状态:打开采购合同详情弹窗 */
+const handleShowContractDetail = (row: any) => {
+ const id = row?.id ?? row?.purchaseId;
+ if (!id) {
+ useMessage().warning('无法获取采购申请ID');
+ return;
+ }
+ purchaseContractDetailDialogRef.value?.open(String(id));
+};
+
/**
* 打开查看对话框
* @param row - 当前行数据