1.1.53 合同激活终版合同附件改为可以上传多个附件

dev
yinq 3 weeks ago
parent 76eaacef35
commit 93c4adf174

@ -117,7 +117,7 @@ export interface ContractChangeInfoVO {
/** /**
* *
*/ */
signatureAppendix: number; signatureAppendix: string;
/** /**
* () * ()
@ -315,7 +315,7 @@ export interface ContractChangeInfoForm extends BaseEntity {
/** /**
* *
*/ */
signatureAppendix?: number; signatureAppendix?: string;
/** /**
* () * ()
@ -509,7 +509,7 @@ export interface ContractChangeInfoQuery extends PageQuery {
/** /**
* *
*/ */
signatureAppendix?: number; signatureAppendix?: string;
/** /**
* () * ()

@ -180,9 +180,9 @@ export interface ContractInfoVO {
paymentMethod: string; paymentMethod: string;
/** /**
* * OSS ID
*/ */
signatureAppendix: number; signatureAppendix: string;
/** /**
* SAP erp_contract_info.internal_contract_code * SAP erp_contract_info.internal_contract_code
@ -458,9 +458,9 @@ export interface ContractInfoForm extends BaseEntity {
paymentMethod?: string; paymentMethod?: string;
/** /**
* * OSS ID
*/ */
signatureAppendix?: number; signatureAppendix?: string;
/** /**
* *
@ -734,9 +734,9 @@ export interface ContractInfoQuery extends PageQuery {
paymentMethod?: string; paymentMethod?: string;
/** /**
* * OSS ID
*/ */
signatureAppendix?: number; signatureAppendix?: string;
/** /**
* *

@ -157,7 +157,7 @@
<el-table-column label="付款方式" align="center" prop="paymentMethod" v-if="columns[21].visible" /> <el-table-column label="付款方式" align="center" prop="paymentMethod" v-if="columns[21].visible" />
<el-table-column label="签字合同附件" align="center" prop="signatureAppendix" v-if="columns[22].visible" /> <el-table-column label="签字合同附件" align="center" prop="signatureAppendix" v-if="columns[22].visible" />
<el-table-column label="合同税率(预留)" align="center" prop="taxRate" v-if="columns[23].visible" /> <el-table-column label="合同税率(预留)" align="center" prop="taxRate" v-if="columns[23].visible" />
<el-table-column label="终版合同" align="center" width="100" v-if="columns[32].visible"> <el-table-column label="终版合同" align="center" width="120" v-if="columns[32].visible">
<template #default="scope"> <template #default="scope">
<el-button <el-button
v-if="scope.row.signatureAppendix" v-if="scope.row.signatureAppendix"
@ -165,7 +165,8 @@
type="primary" type="primary"
icon="Download" icon="Download"
@click="downloadFinalContract(scope.row.signatureAppendix)" @click="downloadFinalContract(scope.row.signatureAppendix)"
>下载 >
下载{{ getFinalContractFileCount(scope.row.signatureAppendix) > 1 ? `(${getFinalContractFileCount(scope.row.signatureAppendix)})` : '' }}
</el-button> </el-button>
<span v-else style="color: #999">未上传</span> <span v-else style="color: #999">未上传</span>
</template> </template>
@ -282,7 +283,7 @@
</el-select> </el-select>
</el-form-item> --> </el-form-item> -->
<el-form-item label="签字合同附件" prop="oss" required> <el-form-item label="签字合同附件" prop="oss" required>
<fileUpload v-model="uploadDialog.form.oss" :limit="1" /> <fileUpload v-model="uploadDialog.form.oss" :limit="10" />
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -814,14 +815,14 @@ const confirmUploadFinal = async () => {
} }
const { contractId, contractDeptId, oss, contractStatus } = uploadDialog.form; const { contractId, contractDeptId, oss, contractStatus } = uploadDialog.form;
const ossStr = oss as unknown as string | string[]; const ossStr = oss as unknown as string | string[];
const finalOss = Array.isArray(ossStr) ? (ossStr[0] ?? '') : (ossStr ?? ''); const finalOss = Array.isArray(ossStr) ? ossStr.filter(Boolean).join(',') : String(ossStr ?? '').trim();
uploadDialog.loading = true; uploadDialog.loading = true;
try { try {
await updateContractInfo({ await updateContractInfo({
contractId, contractId,
contractDeptId, contractDeptId,
contractStatus, contractStatus,
signatureAppendix: finalOss signatureAppendix: finalOss || undefined
} as any); } as any);
proxy?.$modal.msgSuccess('合同已激活!'); proxy?.$modal.msgSuccess('合同已激活!');
uploadDialog.visible = false; uploadDialog.visible = false;
@ -831,9 +832,25 @@ const confirmUploadFinal = async () => {
} }
}; };
// /** 解析终版合同附件 OSS ID 列表 */
const downloadFinalContract = (ossId: string | number) => { const parseFinalContractOssIds = (ossIds: string | number | undefined): string[] => {
download.oss(ossId); if (ossIds === undefined || ossIds === null || ossIds === '') return [];
return String(ossIds)
.split(',')
.map((id) => id.trim())
.filter(Boolean);
};
const getFinalContractFileCount = (ossIds: string | number | undefined) => parseFinalContractOssIds(ossIds).length;
//
const downloadFinalContract = (ossIds: string | number) => {
const ids = parseFinalContractOssIds(ossIds);
if (ids.length === 0) {
proxy?.$modal.msgWarning('该合同暂无终版合同附件');
return;
}
ids.forEach((id) => download.oss(id));
}; };
// //

@ -221,7 +221,7 @@
<el-form-item label="终版合同上传" prop="ossId"> <el-form-item label="终版合同上传" prop="ossId">
<FileUpload <FileUpload
v-model="ossIdString" v-model="ossIdString"
:limit="1" :limit="10"
:fileSize="20" :fileSize="20"
:fileType="['doc', 'docx', 'pdf', 'xls', 'xlsx']" :fileType="['doc', 'docx', 'pdf', 'xls', 'xlsx']"
:disabled="routeParams.type === 'view' || routeParams.type === 'approval'" :disabled="routeParams.type === 'view' || routeParams.type === 'approval'"
@ -1108,8 +1108,10 @@ const fillContractExtraFields = (contractData: any) => {
form.value.contractTerritorialFlag = contractData?.contractTerritorialFlag; form.value.contractTerritorialFlag = contractData?.contractTerritorialFlag;
form.value.settlementCurrency = contractData?.settlementCurrency; form.value.settlementCurrency = contractData?.settlementCurrency;
form.value.rmbExchangeRate = contractData?.rmbExchangeRate; form.value.rmbExchangeRate = contractData?.rmbExchangeRate;
// //
if (contractData?.effectiveCustomerOrderFlag === '1' && contractData?.ossId) { if (contractData?.signatureAppendix) {
form.value.ossId = contractData.signatureAppendix;
} else if (contractData?.effectiveCustomerOrderFlag === '1' && contractData?.ossId) {
form.value.ossId = contractData.ossId; form.value.ossId = contractData.ossId;
} }
}; };
@ -1132,6 +1134,10 @@ const loadContractInfo = async () => {
if (form.value.peopleId && typeof form.value.peopleId === 'string') { if (form.value.peopleId && typeof form.value.peopleId === 'string') {
form.value.peopleId = (form.value.peopleId as string).split(',').map((id) => String(id.trim())) as any; form.value.peopleId = (form.value.peopleId as string).split(',').map((id) => String(id.trim())) as any;
} }
const contractRes = await getContractInfo(contractId);
if (contractRes?.data) {
fillContractExtraFields(contractRes.data);
}
await getPlanStageList(); await getPlanStageList();
} else { } else {
// //

@ -783,11 +783,17 @@ const handleDownloadFinalContract = async (row: any) => {
const res = await getContractInfo(row.contractId); const res = await getContractInfo(row.contractId);
const contractData = res?.data as any; const contractData = res?.data as any;
const signatureAppendix = contractData?.signatureAppendix; const signatureAppendix = contractData?.signatureAppendix;
if (!signatureAppendix) { const ossIds = signatureAppendix
? String(signatureAppendix)
.split(',')
.map((id) => id.trim())
.filter(Boolean)
: [];
if (ossIds.length === 0) {
proxy?.$modal.msgWarning('该合同暂无终版合同附件'); proxy?.$modal.msgWarning('该合同暂无终版合同附件');
return; return;
} }
proxy?.$download.oss(signatureAppendix); ossIds.forEach((id) => proxy?.$download.oss(id));
} catch (error) { } catch (error) {
console.error('下载终版合同附件失败:', error); console.error('下载终版合同附件失败:', error);
proxy?.$modal.msgError('下载终版合同附件失败'); proxy?.$modal.msgError('下载终版合同附件失败');

Loading…
Cancel
Save