细节修改

This commit is contained in:
2026-07-08 08:37:05 +08:00
parent fa7be38e7f
commit 2de0a12d44
4 changed files with 104 additions and 39 deletions
+9
View File
@@ -206,6 +206,15 @@ export function downloadLaunchFile(fileName) {
});
}
export function uploadWatermarkFile(id, formData) {
return request({
url: `/contract/launch/${id}/watermark/upload`,
method: "post",
data: formData,
headers: { "Content-Type": "multipart/form-data" },
});
}
export function queryContractLogList(data) {
return request({
url: "/contract/log/list",
@@ -707,15 +707,15 @@
<a-radio-group
v-model:value="detailState.isInvolveHongKongMacaoTaiwan"
>
<a-radio :value="true">是</a-radio>
<a-radio :value="false">否</a-radio>
<a-radio value="1">是</a-radio>
<a-radio value="0">否</a-radio>
</a-radio-group>
</div>
<div class="boolean-row">
<span>是否公开招标</span>
<a-radio-group v-model:value="detailState.isPublicTender">
<a-radio :value="true">是</a-radio>
<a-radio :value="false">否</a-radio>
<a-radio value="1">是</a-radio>
<a-radio value="0">否</a-radio>
</a-radio-group>
</div>
<div class="boolean-row">
@@ -723,8 +723,8 @@
<a-radio-group
v-model:value="detailState.isForeignRelatedSubject"
>
<a-radio :value="true">是</a-radio>
<a-radio :value="false">否</a-radio>
<a-radio value="1">是</a-radio>
<a-radio value="0">否</a-radio>
</a-radio-group>
</div>
<div
@@ -735,22 +735,22 @@
<a-radio-group
v-model:value="detailState.isIncludedInCurrentYearBudget"
>
<a-radio :value="true">是</a-radio>
<a-radio :value="false">否</a-radio>
<a-radio value="1">是</a-radio>
<a-radio value="0">否</a-radio>
</a-radio-group>
</div>
<div class="boolean-row">
<span>是否共享</span>
<a-radio-group v-model:value="detailState.isShared">
<a-radio :value="true">是</a-radio>
<a-radio :value="false">否</a-radio>
<a-radio value="1">是</a-radio>
<a-radio value="0">否</a-radio>
</a-radio-group>
</div>
<div class="boolean-row">
<span>是否重大合同</span>
<a-radio-group v-model:value="detailState.isMajorContract">
<a-radio :value="true">是</a-radio>
<a-radio :value="false">否</a-radio>
<a-radio value="1">是</a-radio>
<a-radio value="0">否</a-radio>
</a-radio-group>
</div>
<div class="boolean-row">
@@ -1043,12 +1043,9 @@ function normalizeFileItem(item = {}) {
}
function normalizeBooleanValue(value) {
if (value === true || value === false) return value;
if (value === 1 || value === "1" || value === "Y" || value === "true")
return true;
if (value === 0 || value === "0" || value === "N" || value === "false")
return false;
return false;
if (value === 1 || value === "1" || value === true || value === "Y" || value === "true")
return "1";
return "0";
}
function pickBooleanSource(source = {}, key) {
@@ -1405,12 +1402,12 @@ function createContractFormData() {
counterpartyList: [],
},
isSingleAgreement: "0",
isInvolveHongKongMacaoTaiwan: false,
isPublicTender: false,
isForeignRelatedSubject: false,
isIncludedInCurrentYearBudget: false,
isShared: false,
isMajorContract: false,
isInvolveHongKongMacaoTaiwan: "0",
isPublicTender: "0",
isForeignRelatedSubject: "0",
isIncludedInCurrentYearBudget: "0",
isShared: "0",
isMajorContract: "0",
needAmendments: "0",
extraAmounts: {
depositEnabled: false,
@@ -2172,9 +2169,9 @@ function validateSubmit() {
// 以下为 pushContract 必填项补充校验(接口文档要求)
if (detailState.value.isMajorContract === undefined || detailState.value.isMajorContract === null || detailState.value.isMajorContract === "")
return "请选择是否重大合同";
if (detailState.value.isPublicTender === undefined || detailState.value.isPublicTender === null)
if (detailState.value.isPublicTender === undefined || detailState.value.isPublicTender === null || detailState.value.isPublicTender === "")
return "请选择是否公开招标";
if (detailState.value.isInvolveHongKongMacaoTaiwan === undefined || detailState.value.isInvolveHongKongMacaoTaiwan === null)
if (detailState.value.isInvolveHongKongMacaoTaiwan === undefined || detailState.value.isInvolveHongKongMacaoTaiwan === null || detailState.value.isInvolveHongKongMacaoTaiwan === "")
return "请选择是否涉及港澳台";
if (!detailState.value.paymentDirection) return "请选择收支方向";
if (!detailState.value.contractTypeCode) return "请选择合同类型编码";
@@ -2376,12 +2373,12 @@ function buildLaunchRecord() {
isElectron: detailState.value.isElectron || "1",
isSingleAgreement: detailState.value.isSingleAgreement || "0",
paymentDirection: detailState.value.paymentDirection || "0",
isMajorContract: detailState.value.isMajorContract ? 1 : 0,
isOpenBidding: detailState.value.isPublicTender ? 1 : 0,
isYearBudget: detailState.value.isIncludedInCurrentYearBudget ? 1 : 0,
isShare: detailState.value.isShared ? "1" : "0",
contractNature: detailState.value.isForeignRelatedSubject ? "1" : "0",
isSgat: detailState.value.isInvolveHongKongMacaoTaiwan ? "1" : "0",
isMajorContract: detailState.value.isMajorContract,
isOpenBidding: detailState.value.isPublicTender,
isYearBudget: detailState.value.isIncludedInCurrentYearBudget,
isShare: detailState.value.isShared,
contractNature: detailState.value.isForeignRelatedSubject,
isSgat: detailState.value.isInvolveHongKongMacaoTaiwan,
biddingNo: detailState.value.isPublicTender
? detailState.value.biddingNo || ""
: "",
@@ -455,12 +455,12 @@ function createContractFormData() {
isSingleAgreement: "0",
// 合同属性
isInvolveHongKongMacaoTaiwan: false, // 是否涉及港澳台
isPublicTender: false, // 是否公开招标
isForeignRelatedSubject: false, // 签约主体是否涉外
isIncludedInCurrentYearBudget: false, // 是否列入当年预算
isShared: false, // 是否共享
isMajorContract: false, // 是否重大合同
isInvolveHongKongMacaoTaiwan: "0", // 是否涉及港澳台
isPublicTender: "0", // 是否公开招标
isForeignRelatedSubject: "0", // 签约主体是否涉外
isIncludedInCurrentYearBudget: "0", // 是否列入当年预算
isShared: "0", // 是否共享
isMajorContract: "0", // 是否重大合同
// 额外金额
extraAmounts: {
+60 -1
View File
@@ -323,6 +323,7 @@ import {
getLaunchDetail,
getLawApproveCallbackSample,
mockApproveLaunch,
uploadWatermarkFile,
mockRejectLaunch,
finishLaunchSeal,
queryApproveViewUrl,
@@ -1039,12 +1040,16 @@ function handleUploadSigned(row) {
}
function handleOnlineSign(row) {
getLaunchDetail(row.id).then((res) => {
getLaunchDetail(row.id).then(async (res) => {
if (!isSuccessResponse(res) || !getDataResult(res)) {
message.error(getResponseMessage(res, "获取合同详情失败"));
return;
}
const detail = getDataResult(res);
if (!detail.contractTextFilePath) {
await handleWatermarkUpload(row);
return;
}
mixedSignModalRef.value?.showModal({
...detail,
contractId: detail.sealContractId,
@@ -1052,6 +1057,60 @@ function handleOnlineSign(row) {
});
}
async function handleWatermarkUpload(row) {
let file
const ok = await new Promise((resolve) => {
Modal.confirm({
title: "法务水印文件缺失",
content: h("div", [
h("p", { style: "margin-bottom: 12px" }, "法务审批回调未带回带水印的合同文件请手动上传带水印的合同文件后继续在线签订"),
h("input", {
type: "file",
accept: ".pdf,.doc,.docx",
style: "margin-top: 8px; width: 100%",
onChange(e) {
file = e.target.files?.[0]
},
}),
]),
okText: "上传并继续",
cancelText: "取消",
async onOk() {
if (!file) {
message.warning("请先选择文件")
return false
}
const formData = new FormData()
formData.append("file", file)
try {
const res = await uploadWatermarkFile(row.id, formData)
if (!isSuccessResponse(res)) {
message.error(getResponseMessage(res, "上传水印文件失败"))
return false
}
message.success("水印文件上传成功")
resolve(true)
} catch {
message.error("上传水印文件失败")
return false
}
},
onCancel() {
resolve(false)
},
})
})
if (!ok) return
getLaunchDetail(row.id).then((res) => {
if (!isSuccessResponse(res) || !getDataResult(res)) return
const detail = getDataResult(res)
mixedSignModalRef.value?.showModal({
...detail,
contractId: detail.sealContractId,
})
})
}
function handleSignBusinessUpdated() {
getList();
}