更新采购申请文件模版下载

This commit is contained in:
吴红兵
2026-03-09 15:22:19 +08:00
parent 5963bbafd6
commit 03f10180dc
22 changed files with 333 additions and 364 deletions

View File

@@ -11,9 +11,9 @@
</div>
</template>
<div v-loading="loading" style="padding-bottom: 20px">
<!-- <div class="form-toolbar mb12" style="text-align: right">-->
<!-- <el-button type="primary" link icon="QuestionFilled" @click="helpDialogVisible = true"> 帮助 </el-button>-->
<!-- </div>-->
<!-- <div class="form-toolbar mb12" style="text-align: right">-->
<!-- <el-button type="primary" link icon="QuestionFilled" @click="helpDialogVisible = true"> 帮助 </el-button>-->
<!-- </div>-->
<el-form
ref="formRef"
:model="dataForm"
@@ -145,7 +145,7 @@
<upload-file
v-model="dataForm.deptSelfMeetingMinutes"
:limit="1"
:file-type="[ 'pdf', 'jpg', 'jpeg', 'png']"
:file-type="['pdf', 'jpg', 'jpeg', 'png']"
:data="{ fileType: FILE_TYPE_MAP.deptSelfMeetingMinutes }"
upload-file-url="/purchase/purchasingfiles/upload"
:disabled="flowFieldDisabled('deptSelfMeetingMinutes')"
@@ -238,9 +238,9 @@
<upload-file
v-model="dataForm.serviceDirectSelect"
:limit="1"
:file-type="[ 'doc', 'docx']"
:file-type="['doc', 'docx']"
:data="{ fileType: FILE_TYPE_MAP.serviceDirectSelect }"
upload-file-url="/purchase/purchasingfiles/upload"
upload-file-url="/purchase/purchasingfiles/upload"
:disabled="flowFieldDisabled('serviceDirectSelect')"
/>
<el-button
@@ -266,7 +266,7 @@ upload-file-url="/purchase/purchasingfiles/upload"
<upload-file
v-model="dataForm.serviceInviteSelect"
:limit="1"
:file-type="[ 'doc', 'docx']"
:file-type="['doc', 'docx']"
:data="{ fileType: FILE_TYPE_MAP.serviceInviteSelect }"
upload-file-url="/purchase/purchasingfiles/upload"
:disabled="flowFieldDisabled('serviceInviteSelect')"
@@ -312,7 +312,7 @@ upload-file-url="/purchase/purchasingfiles/upload"
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="8" class="mb12" v-if="showAutoInviteSelect && dataForm.hasSupplier === '1'">
<el-col :span="8" class="mb12" v-if="showAutoInviteSelect && dataForm.hasSupplier === '1'">
<el-form-item label="服务商城项目需求模板(邀请比选)" prop="serviceInviteSelect" required>
<upload-file
v-model="dataForm.serviceInviteSelect"
@@ -333,7 +333,7 @@ upload-file-url="/purchase/purchasingfiles/upload"
</el-button>
</el-form-item>
</el-col>
<el-col :span="8" class="mb12" v-if="showAutoInviteSelect && dataForm.hasSupplier === '0'">
<el-col :span="8" class="mb12" v-if="showAutoInviteSelect && dataForm.hasSupplier === '0'">
<el-form-item label="服务商城项目需求模板(公开比选)" prop="servicePublicSelectAuto" required>
<upload-file
v-model="dataForm.servicePublicSelectAuto"
@@ -468,7 +468,7 @@ upload-file-url="/purchase/purchasingfiles/upload"
<upload-file
v-model="dataForm.feasibilityReport"
:limit="1"
:file-type="[ 'pdf', 'jpg', 'jpeg', 'png']"
:file-type="['pdf', 'jpg', 'jpeg', 'png']"
:data="{ fileType: FILE_TYPE_MAP.feasibilityReport }"
upload-file-url="/purchase/purchasingfiles/upload"
:disabled="flowFieldDisabled('feasibilityReport')"
@@ -489,7 +489,7 @@ upload-file-url="/purchase/purchasingfiles/upload"
<upload-file
v-model="dataForm.meetingMinutes"
:limit="1"
:file-type="[ 'pdf', 'jpg', 'jpeg', 'png']"
:file-type="['pdf', 'jpg', 'jpeg', 'png']"
:data="{ fileType: FILE_TYPE_MAP.meetingMinutes }"
upload-file-url="/purchase/purchasingfiles/upload"
:disabled="flowFieldDisabled('meetingMinutes')"
@@ -502,7 +502,7 @@ upload-file-url="/purchase/purchasingfiles/upload"
<upload-file
v-model="dataForm.singleSourceProof"
:limit="1"
:file-type="[ 'pdf', 'jpg', 'jpeg', 'png']"
:file-type="['pdf', 'jpg', 'jpeg', 'png']"
:data="{ fileType: FILE_TYPE_MAP.singleSourceProof }"
upload-file-url="/purchase/purchasingfiles/upload"
:disabled="flowFieldDisabled('singleSourceProof')"
@@ -523,7 +523,7 @@ upload-file-url="/purchase/purchasingfiles/upload"
<upload-file
v-model="dataForm.meetingMinutesSingle"
:limit="1"
:file-type="[ 'pdf', 'jpg', 'jpeg', 'png']"
:file-type="['pdf', 'jpg', 'jpeg', 'png']"
:data="{ fileType: FILE_TYPE_MAP.meetingMinutesSingle }"
upload-file-url="/purchase/purchasingfiles/upload"
:disabled="flowFieldDisabled('meetingMinutesSingle')"
@@ -535,7 +535,7 @@ upload-file-url="/purchase/purchasingfiles/upload"
<upload-file
v-model="dataForm.importApplication"
:limit="1"
:file-type="[ 'pdf', 'jpg', 'jpeg', 'png']"
:file-type="['pdf', 'jpg', 'jpeg', 'png']"
:data="{ fileType: FILE_TYPE_MAP.importApplication }"
upload-file-url="/purchase/purchasingfiles/upload"
:disabled="flowFieldDisabled('importApplication')"
@@ -556,7 +556,7 @@ upload-file-url="/purchase/purchasingfiles/upload"
<upload-file
v-model="dataForm.meetingMinutesImport"
:limit="1"
:file-type="[ 'pdf', 'jpg', 'jpeg', 'png']"
:file-type="['pdf', 'jpg', 'jpeg', 'png']"
:data="{ fileType: FILE_TYPE_MAP.meetingMinutesImport }"
upload-file-url="/purchase/purchasingfiles/upload"
:disabled="flowFieldDisabled('meetingMinutesImport')"
@@ -599,7 +599,7 @@ upload-file-url="/purchase/purchasingfiles/upload"
>下载《{{ getTemplateName('invite_select') }}》模版
</el-button>
</template>
<template v-else-if="dataForm.hasSupplier === '0'">
<template v-else-if="dataForm.hasSupplier === '0'">
<upload-file
v-model="dataForm.servicePublicSelectSchoolAuto"
:limit="1"
@@ -619,7 +619,7 @@ upload-file-url="/purchase/purchasingfiles/upload"
</el-button>
</template>
</template>
<template v-else-if="showAutoPublicSelect">
<template v-else-if="showAutoPublicSelect">
<upload-file
v-model="dataForm.servicePublicSelectSchool"
:limit="1"
@@ -638,7 +638,7 @@ upload-file-url="/purchase/purchasingfiles/upload"
>下载《{{ getTemplateName('public_select') }}》模版
</el-button>
</template>
<template v-else>
<template v-else>
<upload-file
v-model="dataForm.purchaseRequirement"
:limit="1"
@@ -664,7 +664,7 @@ upload-file-url="/purchase/purchasingfiles/upload"
<upload-file
v-model="dataForm.governmentPurchaseIntent"
:limit="1"
:file-type="[ 'pdf', 'jpg', 'jpeg', 'png']"
:file-type="['pdf', 'jpg', 'jpeg', 'png']"
:data="{ fileType: FILE_TYPE_MAP.governmentPurchaseIntent }"
upload-file-url="/purchase/purchasingfiles/upload"
:disabled="flowFieldDisabled('governmentPurchaseIntent')"
@@ -963,7 +963,7 @@ const dataForm = reactive({
isSpecial: '',
hasAssets: '0',
purchaseMode: '',
purchaseSchool:'',
purchaseSchool: '',
purchaseType: '',
purchaseTypeUnion: '',
purchaseChannel: '',
@@ -1577,7 +1577,7 @@ watch(
// 学校统一采购:组织采购形式由规则默认选择,随预算与集采变化自动更新
watch(
[ () => isDeptPurchase.value],
[() => isDeptPurchase.value],
() => {
if (isDeptPurchase.value) return;
},
@@ -1586,37 +1586,16 @@ watch(
// 下载模版:统一走后端接口,按原始文件下载(避免前端静态资源被当成 HTML 返回)
const downloadTemplate = async (type: string) => {
// 优先从后台模版列表获取模版名称
// 从后台模版列表获取模版名称templateName 包含原始文件扩展名)
const backendTemplate = templateList.value.find((t: any) => t.templateType === type);
let displayName = '';
if (backendTemplate?.templateTitle) {
displayName = backendTemplate.templateTitle;
} else {
// 后备:使用本地硬编码的名称
const templateMap: Record<string, string> = {
business_negotiation: '商务洽谈表.doc',
market_purchase_minutes: '部门自行采购市场采购纪要.doc',
inquiry: '部门采购询价模版.doc',
direct_select: '服务商城项目需求模板(直选).doc',
public_select: '服务商城项目需求模板(公开比选).doc',
invite_select: '服务商城项目需求模板(邀请比选).doc',
purchase_requirement: '采购需求填报模板.doc',
import_application: '进口产品申请及专家论证意见表.doc',
single_source: '单一来源论专家证附件.docx',
feasibility_report: '项目可行性论证报告模板.doc',
gov_pur_int: '政府采购意向申请表.doc',
};
displayName = templateMap[type] || '';
}
if (!displayName) {
useMessage().error('模版不存在');
if (!backendTemplate?.templateName) {
useMessage().error('模版不存在或未维护模版文件,请联系管理员');
return;
}
try {
await other.downBlobFile(`/purchase/purchasingtemplate/download?type=${encodeURIComponent(type)}`, {}, displayName);
await other.downBlobFile(`/purchase/purchasingtemplate/download?type=${encodeURIComponent(type)}`, {}, backendTemplate.templateName);
useMessage().success('模版下载成功');
} catch (err) {
useMessage().error('模版下载失败,请联系管理员维护模版文件');