更新采购申请流程结束时,自动更新状态
This commit is contained in:
@@ -529,11 +529,11 @@
|
|||||||
if (elTabs) {
|
if (elTabs) {
|
||||||
let find = elTabs.find(f => f.isSave !== true);
|
let find = elTabs.find(f => f.isSave !== true);
|
||||||
// 这里测试流程,临时屏蔽判断 todo
|
// 这里测试流程,临时屏蔽判断 todo
|
||||||
// if (find) useMessage().info(find.formName + ' 未保存')
|
if (find) useMessage().info(find.formName + ' 未保存')
|
||||||
// else {
|
else {
|
||||||
methods.timeoutLoading()
|
methods.timeoutLoading()
|
||||||
btnMethods.onHandleJob(jobBtn)
|
btnMethods.onHandleJob(jobBtn)
|
||||||
// }
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
methods.timeoutLoading()
|
methods.timeoutLoading()
|
||||||
|
|||||||
@@ -27,7 +27,8 @@
|
|||||||
<el-input
|
<el-input
|
||||||
v-model="dataForm.projectName"
|
v-model="dataForm.projectName"
|
||||||
placeholder="请输入采购项目名称"
|
placeholder="请输入采购项目名称"
|
||||||
clearable />
|
clearable
|
||||||
|
:disabled="flowFieldDisabled('projectName')" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12" class="mb16">
|
<el-col :span="12" class="mb16">
|
||||||
@@ -38,7 +39,8 @@
|
|||||||
placeholder="请选择填报日期"
|
placeholder="请选择填报日期"
|
||||||
format="YYYY-MM-DD"
|
format="YYYY-MM-DD"
|
||||||
value-format="YYYY-MM-DD"
|
value-format="YYYY-MM-DD"
|
||||||
style="width: 100%" />
|
style="width: 100%"
|
||||||
|
:disabled="flowFieldDisabled('applyDate')" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@@ -49,7 +51,8 @@
|
|||||||
v-model="dataForm.fundSource"
|
v-model="dataForm.fundSource"
|
||||||
placeholder="请选择资金来源"
|
placeholder="请选择资金来源"
|
||||||
clearable
|
clearable
|
||||||
style="width: 100%">
|
style="width: 100%"
|
||||||
|
:disabled="flowFieldDisabled('fundSource')">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in fundSourceList"
|
v-for="item in fundSourceList"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
@@ -67,7 +70,8 @@
|
|||||||
:precision="2"
|
:precision="2"
|
||||||
placeholder="请输入金额"
|
placeholder="请输入金额"
|
||||||
:controls="false"
|
:controls="false"
|
||||||
style="width: 100%" />
|
style="width: 100%"
|
||||||
|
:disabled="flowFieldDisabled('budget')" />
|
||||||
<span class="budget-unit">元</span>
|
<span class="budget-unit">元</span>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -80,7 +84,8 @@
|
|||||||
v-model="dataForm.isCentralized"
|
v-model="dataForm.isCentralized"
|
||||||
placeholder="请选择是否集采"
|
placeholder="请选择是否集采"
|
||||||
clearable
|
clearable
|
||||||
style="width: 100%">
|
style="width: 100%"
|
||||||
|
:disabled="flowFieldDisabled('isCentralized')">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in isCentralizedList"
|
v-for="item in isCentralizedList"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
@@ -95,7 +100,8 @@
|
|||||||
v-model="dataForm.isSpecial"
|
v-model="dataForm.isSpecial"
|
||||||
placeholder="请选择是否特殊情况"
|
placeholder="请选择是否特殊情况"
|
||||||
clearable
|
clearable
|
||||||
style="width: 100%">
|
style="width: 100%"
|
||||||
|
:disabled="flowFieldDisabled('isSpecial')">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in isSpecialList"
|
v-for="item in isSpecialList"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
@@ -117,6 +123,7 @@
|
|||||||
filterable
|
filterable
|
||||||
:show-all-levels="true"
|
:show-all-levels="true"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
|
:disabled="flowFieldDisabled('categoryCode')"
|
||||||
@change="handleCategoryChange" />
|
@change="handleCategoryChange" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -138,7 +145,8 @@
|
|||||||
:maxlength="1000"
|
:maxlength="1000"
|
||||||
show-word-limit
|
show-word-limit
|
||||||
placeholder="请输入采购内容(限制1000字)"
|
placeholder="请输入采购内容(限制1000字)"
|
||||||
clearable />
|
clearable
|
||||||
|
:disabled="flowFieldDisabled('projectContent')" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12" class="mb16">
|
<el-col :span="12" class="mb16">
|
||||||
@@ -147,7 +155,7 @@
|
|||||||
v-model="dataForm.purchaseType"
|
v-model="dataForm.purchaseType"
|
||||||
placeholder="请选择采购方式"
|
placeholder="请选择采购方式"
|
||||||
clearable
|
clearable
|
||||||
:disabled="isAutoSelectPurchaseType"
|
:disabled="(isFlowEmbed && isPurchaseCenter) ? false : isAutoSelectPurchaseType"
|
||||||
style="width: 100%">
|
style="width: 100%">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in purchaseTypeDeptList"
|
v-for="item in purchaseTypeDeptList"
|
||||||
@@ -159,24 +167,24 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12" class="mb16" v-if="isPurchaseType(DEPT_PURCHASE_TYPE.BUSINESS_NEGOTIATION)">
|
<el-col :span="12" class="mb16" v-if="isPurchaseType(DEPT_PURCHASE_TYPE.BUSINESS_NEGOTIATION)">
|
||||||
<el-form-item label="商务洽谈表" prop="businessNegotiationTable" required class="mb16">
|
<el-form-item label="商务洽谈表" prop="businessNegotiationTable" required class="mb16">
|
||||||
<upload-file v-model="dataForm.businessNegotiationTable" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.businessNegotiationTable }" upload-file-url="/purchase/purchasingfiles/upload" />
|
<upload-file v-model="dataForm.businessNegotiationTable" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.businessNegotiationTable }" upload-file-url="/purchase/purchasingfiles/upload" :disabled="flowFieldDisabled('businessNegotiationTable')" />
|
||||||
<el-button type="primary" link icon="Download" size="small" @click="downloadTemplate('business_negotiation')" style="margin-top: 8px; display: inline-block">下载商务洽谈表模版</el-button>
|
<el-button type="primary" link icon="Download" size="small" @click="downloadTemplate('business_negotiation')" style="margin-top: 8px; display: inline-block">下载商务洽谈表模版</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12" class="mb16" v-if="isPurchaseType(DEPT_PURCHASE_TYPE.MARKET_PURCHASE)">
|
<el-col :span="12" class="mb16" v-if="isPurchaseType(DEPT_PURCHASE_TYPE.MARKET_PURCHASE)">
|
||||||
<el-form-item label="市场采购纪要" prop="marketPurchaseMinutes" required class="mb16">
|
<el-form-item label="市场采购纪要" prop="marketPurchaseMinutes" required class="mb16">
|
||||||
<upload-file v-model="dataForm.marketPurchaseMinutes" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.marketPurchaseMinutes }" upload-file-url="/purchase/purchasingfiles/upload" />
|
<upload-file v-model="dataForm.marketPurchaseMinutes" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.marketPurchaseMinutes }" upload-file-url="/purchase/purchasingfiles/upload" :disabled="flowFieldDisabled('marketPurchaseMinutes')" />
|
||||||
<el-button type="primary" link icon="Download" size="small" @click="downloadTemplate('market_purchase_minutes')" style="margin-top: 8px; display: inline-block">下载市场采购纪要模版</el-button>
|
<el-button type="primary" link icon="Download" size="small" @click="downloadTemplate('market_purchase_minutes')" style="margin-top: 8px; display: inline-block">下载市场采购纪要模版</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12" class="mb16" v-if="isPurchaseType(DEPT_PURCHASE_TYPE.ONLINE_MALL)">
|
<el-col :span="12" class="mb16" v-if="isPurchaseType(DEPT_PURCHASE_TYPE.ONLINE_MALL)">
|
||||||
<el-form-item label="网上商城采购相关材料" prop="onlineMallMaterials" required class="mb16">
|
<el-form-item label="网上商城采购相关材料" prop="onlineMallMaterials" required class="mb16">
|
||||||
<upload-file v-model="dataForm.onlineMallMaterials" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.onlineMallMaterials }" upload-file-url="/purchase/purchasingfiles/upload" />
|
<upload-file v-model="dataForm.onlineMallMaterials" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.onlineMallMaterials }" upload-file-url="/purchase/purchasingfiles/upload" :disabled="flowFieldDisabled('onlineMallMaterials')" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12" class="mb16" v-if="isInquiryPurchaseType">
|
<el-col :span="12" class="mb16" v-if="isInquiryPurchaseType">
|
||||||
<el-form-item label="询价模板" prop="inquiryTemplate" required class="mb16">
|
<el-form-item label="询价模板" prop="inquiryTemplate" required class="mb16">
|
||||||
<upload-file v-model="dataForm.inquiryTemplate" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.inquiryTemplate }" upload-file-url="/purchase/purchasingfiles/upload" />
|
<upload-file v-model="dataForm.inquiryTemplate" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.inquiryTemplate }" upload-file-url="/purchase/purchasingfiles/upload" :disabled="flowFieldDisabled('inquiryTemplate')" />
|
||||||
<el-button type="primary" link icon="Download" size="small" @click="downloadTemplate('inquiry')" style="margin-top: 8px; display: inline-block">下载《部门采购询价模版》模版</el-button>
|
<el-button type="primary" link icon="Download" size="small" @click="downloadTemplate('inquiry')" style="margin-top: 8px; display: inline-block">下载《部门采购询价模版》模版</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -199,7 +207,7 @@
|
|||||||
"
|
"
|
||||||
>
|
>
|
||||||
<el-form-item label="是否有供应商" prop="hasSupplier" class="mb16">
|
<el-form-item label="是否有供应商" prop="hasSupplier" class="mb16">
|
||||||
<el-radio-group v-model="dataForm.hasSupplier">
|
<el-radio-group v-model="dataForm.hasSupplier" :disabled="flowFieldDisabled('hasSupplier')">
|
||||||
<el-radio label="1">有</el-radio>
|
<el-radio label="1">有</el-radio>
|
||||||
<el-radio label="0">无</el-radio>
|
<el-radio label="0">无</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
@@ -207,25 +215,25 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12" class="mb16" v-if="isPurchaseType(DEPT_PURCHASE_TYPE.ENTRUST_CENTER) && dataForm.entrustCenterType === 'service_online' && categoryCodePath && categoryCodePath[0] === 'C' && dataForm.hasSupplier === '1'">
|
<el-col :span="12" class="mb16" v-if="isPurchaseType(DEPT_PURCHASE_TYPE.ENTRUST_CENTER) && dataForm.entrustCenterType === 'service_online' && categoryCodePath && categoryCodePath[0] === 'C' && dataForm.hasSupplier === '1'">
|
||||||
<el-form-item label="需求文件" prop="serviceDirectSelect" required class="mb16">
|
<el-form-item label="需求文件" prop="serviceDirectSelect" required class="mb16">
|
||||||
<upload-file v-model="dataForm.serviceDirectSelect" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.serviceDirectSelect }" upload-file-url="/purchase/purchasingfiles/upload" />
|
<upload-file v-model="dataForm.serviceDirectSelect" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.serviceDirectSelect }" upload-file-url="/purchase/purchasingfiles/upload" :disabled="flowFieldDisabled('serviceDirectSelect')" />
|
||||||
<el-button type="primary" link icon="Download" size="small" @click="downloadTemplate('direct_select')" style="margin-top: 8px; display: inline-block">下载《服务商城项目需求模板(直选)》模版</el-button>
|
<el-button type="primary" link icon="Download" size="small" @click="downloadTemplate('direct_select')" style="margin-top: 8px; display: inline-block">下载《服务商城项目需求模板(直选)》模版</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12" class="mb16" v-if="isPurchaseType(DEPT_PURCHASE_TYPE.ENTRUST_CENTER) && dataForm.entrustCenterType === 'service_online' && categoryCodePath && categoryCodePath[0] === 'C' && dataForm.hasSupplier === '0'">
|
<el-col :span="12" class="mb16" v-if="isPurchaseType(DEPT_PURCHASE_TYPE.ENTRUST_CENTER) && dataForm.entrustCenterType === 'service_online' && categoryCodePath && categoryCodePath[0] === 'C' && dataForm.hasSupplier === '0'">
|
||||||
<el-form-item label="需求文件" prop="serviceInviteSelect" required class="mb16">
|
<el-form-item label="需求文件" prop="serviceInviteSelect" required class="mb16">
|
||||||
<upload-file v-model="dataForm.serviceInviteSelect" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.serviceInviteSelect }" upload-file-url="/purchase/purchasingfiles/upload" />
|
<upload-file v-model="dataForm.serviceInviteSelect" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.serviceInviteSelect }" upload-file-url="/purchase/purchasingfiles/upload" :disabled="flowFieldDisabled('serviceInviteSelect')" />
|
||||||
<el-button type="primary" link icon="Download" size="small" @click="downloadTemplate('public_select')" style="margin-top: 8px; display: inline-block">下载《服务商城项目需求模板(公开比选)》模版</el-button>
|
<el-button type="primary" link icon="Download" size="small" @click="downloadTemplate('public_select')" style="margin-top: 8px; display: inline-block">下载《服务商城项目需求模板(公开比选)》模版</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12" class="mb16" v-if="isPurchaseType(DEPT_PURCHASE_TYPE.ENTRUST_CENTER) && dataForm.entrustCenterType === 'other' && categoryCodePath && categoryCodePath[0] === 'A'">
|
<el-col :span="12" class="mb16" v-if="isPurchaseType(DEPT_PURCHASE_TYPE.ENTRUST_CENTER) && dataForm.entrustCenterType === 'other' && categoryCodePath && categoryCodePath[0] === 'A'">
|
||||||
<el-form-item label="需求模板" prop="purchaseRequirementTemplate" required class="mb16">
|
<el-form-item label="需求模板" prop="purchaseRequirementTemplate" required class="mb16">
|
||||||
<upload-file v-model="dataForm.purchaseRequirementTemplate" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.purchaseRequirementTemplate }" upload-file-url="/purchase/purchasingfiles/upload" />
|
<upload-file v-model="dataForm.purchaseRequirementTemplate" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.purchaseRequirementTemplate }" upload-file-url="/purchase/purchasingfiles/upload" :disabled="flowFieldDisabled('purchaseRequirementTemplate')" />
|
||||||
<el-button type="primary" link icon="Download" size="small" @click="downloadTemplate('purchase_requirement')" style="margin-top: 8px; display: inline-block">下载《表1:需求模板》模版</el-button>
|
<el-button type="primary" link icon="Download" size="small" @click="downloadTemplate('purchase_requirement')" style="margin-top: 8px; display: inline-block">下载《表1:需求模板》模版</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12" class="mb16" v-if="showAutoInviteSelect">
|
<el-col :span="12" class="mb16" v-if="showAutoInviteSelect">
|
||||||
<el-form-item label="是否有推荐供应商" prop="hasSupplier" class="mb16">
|
<el-form-item label="是否有推荐供应商" prop="hasSupplier" class="mb16">
|
||||||
<el-radio-group v-model="dataForm.hasSupplier">
|
<el-radio-group v-model="dataForm.hasSupplier" :disabled="flowFieldDisabled('hasSupplier')">
|
||||||
<el-radio label="1">有</el-radio>
|
<el-radio label="1">有</el-radio>
|
||||||
<el-radio label="0">无</el-radio>
|
<el-radio label="0">无</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
@@ -239,98 +247,99 @@
|
|||||||
</el-col> -->
|
</el-col> -->
|
||||||
<el-col :span="12" class="mb16" v-if="showAutoInviteSelect && dataForm.hasSupplier === '1'">
|
<el-col :span="12" class="mb16" v-if="showAutoInviteSelect && dataForm.hasSupplier === '1'">
|
||||||
<el-form-item label="服务商城项目需求模板(邀请比选)" prop="serviceInviteSelect" required class="mb16">
|
<el-form-item label="服务商城项目需求模板(邀请比选)" prop="serviceInviteSelect" required class="mb16">
|
||||||
<upload-file v-model="dataForm.serviceInviteSelect" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.serviceInviteSelect }" upload-file-url="/purchase/purchasingfiles/upload" />
|
<upload-file v-model="dataForm.serviceInviteSelect" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.serviceInviteSelect }" upload-file-url="/purchase/purchasingfiles/upload" :disabled="flowFieldDisabled('serviceInviteSelect')" />
|
||||||
<el-button type="primary" link icon="Download" size="small" @click="downloadTemplate('invite_select')" style="margin-top: 8px; display: inline-block">下载《服务商城项目需求模板(邀请比选)》模版</el-button>
|
<el-button type="primary" link icon="Download" size="small" @click="downloadTemplate('invite_select')" style="margin-top: 8px; display: inline-block">下载《服务商城项目需求模板(邀请比选)》模版</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12" class="mb16" v-if="showAutoInviteSelect && dataForm.hasSupplier === '0'">
|
<el-col :span="12" class="mb16" v-if="showAutoInviteSelect && dataForm.hasSupplier === '0'">
|
||||||
<el-form-item label="服务商城项目需求模板(公开比选)" prop="servicePublicSelectAuto" required class="mb16">
|
<el-form-item label="服务商城项目需求模板(公开比选)" prop="servicePublicSelectAuto" required class="mb16">
|
||||||
<upload-file v-model="dataForm.servicePublicSelectAuto" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.servicePublicSelectAuto }" upload-file-url="/purchase/purchasingfiles/upload" />
|
<upload-file v-model="dataForm.servicePublicSelectAuto" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.servicePublicSelectAuto }" upload-file-url="/purchase/purchasingfiles/upload" :disabled="flowFieldDisabled('servicePublicSelectAuto')" />
|
||||||
<el-button type="primary" link icon="Download" size="small" @click="downloadTemplate('public_select')" style="margin-top: 8px; display: inline-block">下载《服务商城项目需求模板(公开比选)》模版</el-button>
|
<el-button type="primary" link icon="Download" size="small" @click="downloadTemplate('public_select')" style="margin-top: 8px; display: inline-block">下载《服务商城项目需求模板(公开比选)》模版</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12" class="mb16">
|
<el-col :span="12" class="mb16">
|
||||||
<el-form-item label="其他材料" prop="otherMaterials" class="mb16">
|
<el-form-item label="其他材料" prop="otherMaterials" class="mb16">
|
||||||
<upload-file v-model="dataForm.otherMaterials" :limit="1" :file-type="['zip']" :data="{ fileType: FILE_TYPE_MAP.otherMaterials }" upload-file-url="/purchase/purchasingfiles/upload" />
|
<upload-file v-model="dataForm.otherMaterials" :limit="1" :file-type="['zip']" :data="{ fileType: FILE_TYPE_MAP.otherMaterials }" upload-file-url="/purchase/purchasingfiles/upload" :disabled="flowFieldDisabled('otherMaterials')" />
|
||||||
<div class="template-note">支持上传zip格式的压缩包文件</div>
|
<div class="template-note">支持上传zip格式的压缩包文件</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 分支二:学校统一采购(单行两列流式布局,条件显示的项自动填满两列) -->
|
<!-- 分支二:学校统一采购(单行两列流式布局);申请时隐藏采购方式,由审批环节采购中心补充 -->
|
||||||
<div class="mb20" v-else>
|
<div class="mb20" v-else>
|
||||||
<div class="step-title mb16">学校统一采购</div>
|
<div class="step-title mb16">学校统一采购</div>
|
||||||
<el-row :gutter="24">
|
<el-row :gutter="24">
|
||||||
<el-col :span="12" class="mb16">
|
<el-col :span="12" class="mb16">
|
||||||
<el-form-item label="采购形式" prop="purchaseMode">
|
<el-form-item label="采购形式" prop="purchaseMode">
|
||||||
<el-radio-group v-model="dataForm.purchaseMode">
|
<el-radio-group v-model="dataForm.purchaseMode" :disabled="flowFieldDisabled('purchaseMode')">
|
||||||
<el-radio v-for="item in purchaseModeSchoolList" :key="item.value" :label="item.value">{{ item.label }}</el-radio>
|
<el-radio v-for="item in purchaseModeSchoolList" :key="item.value" :label="item.value">{{ item.label }}</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12" class="mb16">
|
<!-- 学校统一采购时申请阶段不显示采购方式;审批环节(流程嵌入)时显示,由采购中心补充选择、其他节点只读 -->
|
||||||
|
<el-col :span="12" class="mb16" v-if="isDeptPurchase || isFlowEmbed">
|
||||||
<el-form-item label="采购方式" prop="purchaseType" :required="!isDeptPurchase">
|
<el-form-item label="采购方式" prop="purchaseType" :required="!isDeptPurchase">
|
||||||
<el-select v-model="dataForm.purchaseType" placeholder="请选择采购方式" clearable :disabled="isAutoSelectPurchaseTypeUnion" style="width: 100%">
|
<el-select v-model="dataForm.purchaseType" placeholder="请选择采购方式" clearable :disabled="(isFlowEmbed && isPurchaseCenter) ? false : (isAutoSelectPurchaseTypeUnion || flowFieldDisabled('purchaseType'))" style="width: 100%">
|
||||||
<el-option v-for="item in purchaseTypeUnionList" :key="item.value" :label="item.label" :value="item.value" />
|
<el-option v-for="item in purchaseTypeUnionList" :key="item.value" :label="item.label" :value="item.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12" class="mb16">
|
<el-col :span="12" class="mb16">
|
||||||
<el-form-item label="业务分管处室" prop="deptClassifyUserId" :required="!isDeptPurchase">
|
<el-form-item label="业务分管处室" prop="deptClassifyUserId" :required="!isDeptPurchase">
|
||||||
<el-select v-model="dataForm.deptClassifyUserId" placeholder="请选择业务分管处室" clearable filterable @change="handleBusinessDeptChange" style="width: 100%">
|
<el-select v-model="dataForm.deptClassifyUserId" placeholder="请选择业务分管处室" clearable filterable @change="handleBusinessDeptChange" style="width: 100%" :disabled="flowFieldDisabled('deptClassifyUserId')">
|
||||||
<el-option v-for="item in businessDeptList" :key="item.id" :label="item.deptName" :value="item.userId" />
|
<el-option v-for="item in businessDeptList" :key="item.id" :label="item.deptName" :value="item.userId" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12" class="mb16">
|
<el-col :span="12" class="mb16">
|
||||||
<el-form-item label="分管校领导" prop="schoolLeaderUserId" :required="!isDeptPurchase">
|
<el-form-item label="分管校领导" prop="schoolLeaderUserId" :required="!isDeptPurchase">
|
||||||
<el-select v-model="dataForm.schoolLeaderUserId" placeholder="请选择分管校领导" clearable filterable @change="handleSchoolLeaderChange" style="width: 100%">
|
<el-select v-model="dataForm.schoolLeaderUserId" placeholder="请选择分管校领导" clearable filterable @change="handleSchoolLeaderChange" style="width: 100%" :disabled="flowFieldDisabled('schoolLeaderUserId')">
|
||||||
<el-option v-for="item in schoolLeaderList" :key="item.id" :label="item.name" :value="item.userId" />
|
<el-option v-for="item in schoolLeaderList" :key="item.id" :label="item.name" :value="item.userId" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12" class="mb16" v-if="dataForm.budget && dataForm.budget >= 300000">
|
<el-col :span="12" class="mb16" v-if="dataForm.budget && dataForm.budget >= 300000">
|
||||||
<el-form-item label="项目可行性论证报告" prop="feasibilityReport" required>
|
<el-form-item label="项目可行性论证报告" prop="feasibilityReport" required>
|
||||||
<upload-file v-model="dataForm.feasibilityReport" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.feasibilityReport }" upload-file-url="/purchase/purchasingfiles/upload" />
|
<upload-file v-model="dataForm.feasibilityReport" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.feasibilityReport }" upload-file-url="/purchase/purchasingfiles/upload" :disabled="flowFieldDisabled('feasibilityReport')" />
|
||||||
<el-button type="primary" link icon="Download" size="small" @click="downloadTemplate('feasibility_report')" style="margin-top: 8px; display: inline-block">下载《项目可行性论证报告模板.doc》</el-button>
|
<el-button type="primary" link icon="Download" size="small" @click="downloadTemplate('feasibility_report')" style="margin-top: 8px; display: inline-block">下载《项目可行性论证报告模板.doc》</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12" class="mb16" v-if="dataForm.budget && dataForm.budget >= 300000 && !isUrgentSpecial && !isSpecialType('2') && !isSpecialType('3')">
|
<el-col :span="12" class="mb16" v-if="dataForm.budget && dataForm.budget >= 300000 && !isUrgentSpecial && !isSpecialType('2') && !isSpecialType('3')">
|
||||||
<el-form-item label="会议纪要" prop="meetingMinutes" required>
|
<el-form-item label="会议纪要" prop="meetingMinutes" required>
|
||||||
<upload-file v-model="dataForm.meetingMinutes" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.meetingMinutes }" upload-file-url="/purchase/purchasingfiles/upload" />
|
<upload-file v-model="dataForm.meetingMinutes" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.meetingMinutes }" upload-file-url="/purchase/purchasingfiles/upload" :disabled="flowFieldDisabled('meetingMinutes')" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12" class="mb16" v-if="isUrgentSpecial">
|
<el-col :span="12" class="mb16" v-if="isUrgentSpecial">
|
||||||
<el-form-item label="会议纪要" prop="meetingMinutesUrgent" required>
|
<el-form-item label="会议纪要" prop="meetingMinutesUrgent" required>
|
||||||
<upload-file v-model="dataForm.meetingMinutesUrgent" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.meetingMinutesUrgent }" upload-file-url="/purchase/purchasingfiles/upload" />
|
<upload-file v-model="dataForm.meetingMinutesUrgent" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.meetingMinutesUrgent }" upload-file-url="/purchase/purchasingfiles/upload" :disabled="flowFieldDisabled('meetingMinutesUrgent')" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12" class="mb16" v-if="isSpecialType('2')">
|
<el-col :span="12" class="mb16" v-if="isSpecialType('2')">
|
||||||
<el-form-item label="单一来源论专家证附件" prop="singleSourceProof" required>
|
<el-form-item label="单一来源论专家证附件" prop="singleSourceProof" required>
|
||||||
<upload-file v-model="dataForm.singleSourceProof" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.singleSourceProof }" upload-file-url="/purchase/purchasingfiles/upload" />
|
<upload-file v-model="dataForm.singleSourceProof" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.singleSourceProof }" upload-file-url="/purchase/purchasingfiles/upload" :disabled="flowFieldDisabled('singleSourceProof')" />
|
||||||
<el-button type="primary" link icon="Download" size="small" @click="downloadTemplate('single_source')" style="margin-top: 8px; display: inline-block">下载《单一来源论专家证附件.docx》</el-button>
|
<el-button type="primary" link icon="Download" size="small" @click="downloadTemplate('single_source')" style="margin-top: 8px; display: inline-block">下载《单一来源论专家证附件.docx》</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12" class="mb16" v-if="isSpecialType('2')">
|
<el-col :span="12" class="mb16" v-if="isSpecialType('2')">
|
||||||
<el-form-item label="会议纪要" prop="meetingMinutesSingle" required>
|
<el-form-item label="会议纪要" prop="meetingMinutesSingle" required>
|
||||||
<upload-file v-model="dataForm.meetingMinutesSingle" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.meetingMinutesSingle }" upload-file-url="/purchase/purchasingfiles/upload" />
|
<upload-file v-model="dataForm.meetingMinutesSingle" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.meetingMinutesSingle }" upload-file-url="/purchase/purchasingfiles/upload" :disabled="flowFieldDisabled('meetingMinutesSingle')" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12" class="mb16" v-if="isSpecialType('3')">
|
<el-col :span="12" class="mb16" v-if="isSpecialType('3')">
|
||||||
<el-form-item label="进口产品申请及专家论证意见表" prop="importApplication" required>
|
<el-form-item label="进口产品申请及专家论证意见表" prop="importApplication" required>
|
||||||
<upload-file v-model="dataForm.importApplication" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.importApplication }" upload-file-url="/purchase/purchasingfiles/upload" />
|
<upload-file v-model="dataForm.importApplication" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.importApplication }" upload-file-url="/purchase/purchasingfiles/upload" :disabled="flowFieldDisabled('importApplication')" />
|
||||||
<el-button type="primary" link icon="Download" size="small" @click="downloadTemplate('import_application')" style="margin-top: 8px; display: inline-block">下载《进口产品申请及专家论证意见表.doc》</el-button>
|
<el-button type="primary" link icon="Download" size="small" @click="downloadTemplate('import_application')" style="margin-top: 8px; display: inline-block">下载《进口产品申请及专家论证意见表.doc》</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12" class="mb16" v-if="isSpecialType('3')">
|
<el-col :span="12" class="mb16" v-if="isSpecialType('3')">
|
||||||
<el-form-item label="会议纪要" prop="meetingMinutesImport" required>
|
<el-form-item label="会议纪要" prop="meetingMinutesImport" required>
|
||||||
<upload-file v-model="dataForm.meetingMinutesImport" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.meetingMinutesImport }" upload-file-url="/purchase/purchasingfiles/upload" />
|
<upload-file v-model="dataForm.meetingMinutesImport" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.meetingMinutesImport }" upload-file-url="/purchase/purchasingfiles/upload" :disabled="flowFieldDisabled('meetingMinutesImport')" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12" class="mb16" v-if="showAutoInviteSelectSchool">
|
<el-col :span="12" class="mb16" v-if="showAutoInviteSelectSchool">
|
||||||
<el-form-item label="是否有推荐供应商" prop="hasSupplier">
|
<el-form-item label="是否有推荐供应商" prop="hasSupplier">
|
||||||
<el-radio-group v-model="dataForm.hasSupplier">
|
<el-radio-group v-model="dataForm.hasSupplier" :disabled="flowFieldDisabled('hasSupplier')">
|
||||||
<el-radio label="1">有</el-radio>
|
<el-radio label="1">有</el-radio>
|
||||||
<el-radio label="0">无</el-radio>
|
<el-radio label="0">无</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
@@ -338,7 +347,7 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
<!-- <el-col :span="12" class="mb16" v-if="showAutoInviteSelectSchool && dataForm.hasSupplier === '1'">
|
<!-- <el-col :span="12" class="mb16" v-if="showAutoInviteSelectSchool && dataForm.hasSupplier === '1'">
|
||||||
<el-form-item label="推荐供应商" prop="suppliers">
|
<el-form-item label="推荐供应商" prop="suppliers">
|
||||||
<el-input v-model="dataForm.suppliers" type="textarea" :rows="2" placeholder="请输入至少三家供应商名称,用逗号或分号分隔" clearable />
|
<el-input v-model="dataForm.suppliers" type="textarea" :rows="2" placeholder="请输入至少三家供应商名称,用逗号或分号分隔" clearable :disabled="flowFieldDisabled('suppliers')" />
|
||||||
<div class="template-note mt5"><el-text type="info" size="small">请输入至少三家供应商名称,用逗号或分号分隔</el-text></div>
|
<div class="template-note mt5"><el-text type="info" size="small">请输入至少三家供应商名称,用逗号或分号分隔</el-text></div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col> -->
|
</el-col> -->
|
||||||
@@ -346,32 +355,32 @@
|
|||||||
<el-form-item label="需求文件" :prop="getRequirementFileProp()" required class="mb16">
|
<el-form-item label="需求文件" :prop="getRequirementFileProp()" required class="mb16">
|
||||||
<template v-if="showAutoInviteSelectSchool">
|
<template v-if="showAutoInviteSelectSchool">
|
||||||
<template v-if="dataForm.hasSupplier === '1'">
|
<template v-if="dataForm.hasSupplier === '1'">
|
||||||
<upload-file v-model="dataForm.serviceInviteSelectSchool" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.serviceInviteSelectSchool }" upload-file-url="/purchase/purchasingfiles/upload" />
|
<upload-file v-model="dataForm.serviceInviteSelectSchool" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.serviceInviteSelectSchool }" upload-file-url="/purchase/purchasingfiles/upload" :disabled="flowFieldDisabled('serviceInviteSelectSchool')" />
|
||||||
<el-button type="primary" link icon="Download" size="small" @click="downloadTemplate('invite_select')" style="margin-top: 8px; display: inline-block">下载《服务商城项目需求模板(邀请比选)》模版</el-button>
|
<el-button type="primary" link icon="Download" size="small" @click="downloadTemplate('invite_select')" style="margin-top: 8px; display: inline-block">下载《服务商城项目需求模板(邀请比选)》模版</el-button>
|
||||||
</template>
|
</template>
|
||||||
<template v-else-if="dataForm.hasSupplier === '0'">
|
<template v-else-if="dataForm.hasSupplier === '0'">
|
||||||
<upload-file v-model="dataForm.servicePublicSelectSchoolAuto" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.servicePublicSelectSchoolAuto }" upload-file-url="/purchase/purchasingfiles/upload" />
|
<upload-file v-model="dataForm.servicePublicSelectSchoolAuto" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.servicePublicSelectSchoolAuto }" upload-file-url="/purchase/purchasingfiles/upload" :disabled="flowFieldDisabled('servicePublicSelectSchoolAuto')" />
|
||||||
<el-button type="primary" link icon="Download" size="small" @click="downloadTemplate('public_select')" style="margin-top: 8px; display: inline-block">下载《服务商城项目需求模板(公开比选)》模版</el-button>
|
<el-button type="primary" link icon="Download" size="small" @click="downloadTemplate('public_select')" style="margin-top: 8px; display: inline-block">下载《服务商城项目需求模板(公开比选)》模版</el-button>
|
||||||
</template>
|
</template>
|
||||||
</template>
|
</template>
|
||||||
<template v-else-if="showAutoPublicSelect">
|
<template v-else-if="showAutoPublicSelect">
|
||||||
<upload-file v-model="dataForm.servicePublicSelectSchool" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.servicePublicSelectSchool }" upload-file-url="/purchase/purchasingfiles/upload" />
|
<upload-file v-model="dataForm.servicePublicSelectSchool" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.servicePublicSelectSchool }" upload-file-url="/purchase/purchasingfiles/upload" :disabled="flowFieldDisabled('servicePublicSelectSchool')" />
|
||||||
<el-button type="primary" link icon="Download" size="small" @click="downloadTemplate('public_select')" style="margin-top: 8px; display: inline-block">下载《服务商城项目需求模板(公开比选)》模版</el-button>
|
<el-button type="primary" link icon="Download" size="small" @click="downloadTemplate('public_select')" style="margin-top: 8px; display: inline-block">下载《服务商城项目需求模板(公开比选)》模版</el-button>
|
||||||
</template>
|
</template>
|
||||||
<template v-else>
|
<template v-else>
|
||||||
<upload-file v-model="dataForm.purchaseRequirement" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.purchaseRequirement }" upload-file-url="/purchase/purchasingfiles/upload" />
|
<upload-file v-model="dataForm.purchaseRequirement" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.purchaseRequirement }" upload-file-url="/purchase/purchasingfiles/upload" :disabled="flowFieldDisabled('purchaseRequirement')" />
|
||||||
<el-button type="primary" link icon="Download" size="small" @click="downloadTemplate('purchase_requirement')" style="margin-top: 8px; display: inline-block">下载《需求模板》模版</el-button>
|
<el-button type="primary" link icon="Download" size="small" @click="downloadTemplate('purchase_requirement')" style="margin-top: 8px; display: inline-block">下载《需求模板》模版</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12" class="mb16" v-if="dataForm.budget && dataForm.budget >= 1000000">
|
<el-col :span="12" class="mb16" v-if="dataForm.budget && dataForm.budget >= 1000000">
|
||||||
<el-form-item label="政府采购意向申请表" prop="governmentPurchaseIntent" required>
|
<el-form-item label="政府采购意向申请表" prop="governmentPurchaseIntent" required>
|
||||||
<upload-file v-model="dataForm.governmentPurchaseIntent" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.governmentPurchaseIntent }" upload-file-url="/purchase/purchasingfiles/upload" />
|
<upload-file v-model="dataForm.governmentPurchaseIntent" :limit="1" :file-type="['doc', 'docx', 'pdf']" :data="{ fileType: FILE_TYPE_MAP.governmentPurchaseIntent }" upload-file-url="/purchase/purchasingfiles/upload" :disabled="flowFieldDisabled('governmentPurchaseIntent')" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12" class="mb16">
|
<el-col :span="12" class="mb16">
|
||||||
<el-form-item label="其他材料" prop="otherMaterials">
|
<el-form-item label="其他材料" prop="otherMaterials">
|
||||||
<upload-file v-model="dataForm.otherMaterials" :limit="1" :file-type="['zip']" :data="{ fileType: FILE_TYPE_MAP.otherMaterials }" upload-file-url="/purchase/purchasingfiles/upload" />
|
<upload-file v-model="dataForm.otherMaterials" :limit="1" :file-type="['zip']" :data="{ fileType: FILE_TYPE_MAP.otherMaterials }" upload-file-url="/purchase/purchasingfiles/upload" :disabled="flowFieldDisabled('otherMaterials')" />
|
||||||
<div class="template-note">支持上传zip格式的压缩包文件</div>
|
<div class="template-note">支持上传zip格式的压缩包文件</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -387,7 +396,8 @@
|
|||||||
type="textarea"
|
type="textarea"
|
||||||
:rows="2"
|
:rows="2"
|
||||||
placeholder="请输入备注"
|
placeholder="请输入备注"
|
||||||
clearable />
|
clearable
|
||||||
|
:disabled="flowFieldDisabled('remark')" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@@ -484,8 +494,12 @@ import other from '/@/utils/other';
|
|||||||
import { Document, Download } from '@element-plus/icons-vue';
|
import { Document, Download } from '@element-plus/icons-vue';
|
||||||
import { fetchList as getBusinessDeptList } from '/@/api/purchase/purchasingBusinessDept';
|
import { fetchList as getBusinessDeptList } from '/@/api/purchase/purchasingBusinessDept';
|
||||||
import { getPage as getSchoolLeaderPage } from '/@/api/finance/purchasingschoolleader';
|
import { getPage as getSchoolLeaderPage } from '/@/api/finance/purchasingschoolleader';
|
||||||
|
import { Session } from '/@/utils/storage';
|
||||||
import * as orderVue from '/@/api/order/order-key-vue';
|
import * as orderVue from '/@/api/order/order-key-vue';
|
||||||
|
|
||||||
|
/** 采购中心角色编码:审批时仅该角色可编辑采购方式/采购形式 */
|
||||||
|
const PURCHASE_CENTER_ROLE_CODE = 'PURCHASE_CENTER';
|
||||||
|
|
||||||
// 兼容流程 dynamic-link 引用:接收 currJob / currElTab,并支持 handleJob 事件
|
// 兼容流程 dynamic-link 引用:接收 currJob / currElTab,并支持 handleJob 事件
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
currJob: { type: Object, default: null },
|
currJob: { type: Object, default: null },
|
||||||
@@ -534,6 +548,14 @@ const pageTitle = computed(() => {
|
|||||||
const flowFormDisabled = ref(false);
|
const flowFormDisabled = ref(false);
|
||||||
const flowSubmitDisabled = ref(false);
|
const flowSubmitDisabled = ref(false);
|
||||||
|
|
||||||
|
/** 流程嵌入时当前节点是否为采购中心(仅采购中心可编辑采购方式/采购形式) */
|
||||||
|
const isPurchaseCenter = ref(false);
|
||||||
|
|
||||||
|
/** 流程嵌入且为采购中心时,除采购方式/采购形式外其余字段均只读 */
|
||||||
|
function flowFieldDisabled(key: string) {
|
||||||
|
return isFlowEmbed.value && isPurchaseCenter.value && !['purchaseType', 'purchaseMode'].includes(key);
|
||||||
|
}
|
||||||
|
|
||||||
// 定义变量内容
|
// 定义变量内容
|
||||||
const formRef = ref();
|
const formRef = ref();
|
||||||
const currentStep = ref(0);
|
const currentStep = ref(0);
|
||||||
@@ -866,8 +888,14 @@ const isAutoSelectPurchaseTypeUnion = computed(() => {
|
|||||||
return budget >= 50000 && budget < 400000 && isSpecialServiceCategory.value;
|
return budget >= 50000 && budget < 400000 && isSpecialServiceCategory.value;
|
||||||
});
|
});
|
||||||
|
|
||||||
// 监听品目编码和预算金额变化,自动设置采购方式
|
// 监听品目编码、预算金额及采购类型变化,自动设置/清空采购方式
|
||||||
watch([() => dataForm.categoryCode, () => dataForm.budget], () => {
|
watch([() => dataForm.categoryCode, () => dataForm.budget, () => isDeptPurchase.value, () => isFlowEmbed.value], () => {
|
||||||
|
// 学校统一采购申请阶段:采购方式隐藏,由审批环节采购中心补充,此处不自动写入且清空已有值
|
||||||
|
if (!isDeptPurchase.value && !isFlowEmbed.value) {
|
||||||
|
dataForm.purchaseType = '';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// 部门自行采购:自动设置网上商城
|
// 部门自行采购:自动设置网上商城
|
||||||
if (isAutoSelectPurchaseType.value && isDeptPurchase.value) {
|
if (isAutoSelectPurchaseType.value && isDeptPurchase.value) {
|
||||||
const onlineMallOption = purchaseTypeDeptList.value.find(item => item.value === DEPT_PURCHASE_TYPE.ONLINE_MALL);
|
const onlineMallOption = purchaseTypeDeptList.value.find(item => item.value === DEPT_PURCHASE_TYPE.ONLINE_MALL);
|
||||||
@@ -876,8 +904,8 @@ watch([() => dataForm.categoryCode, () => dataForm.budget], () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 学校统一采购:自动设置网上商城采购方式
|
// 学校统一采购审批阶段:自动设置网上商城采购方式
|
||||||
if (isAutoSelectPurchaseTypeUnion.value && !isDeptPurchase.value) {
|
if (isAutoSelectPurchaseTypeUnion.value && !isDeptPurchase.value && isFlowEmbed.value) {
|
||||||
const onlineMallOption = purchaseTypeUnionList.value.find(item => item.value === UNION_PURCHASE_TYPE.ONLINE_MALL);
|
const onlineMallOption = purchaseTypeUnionList.value.find(item => item.value === UNION_PURCHASE_TYPE.ONLINE_MALL);
|
||||||
if (onlineMallOption && dataForm.purchaseType !== onlineMallOption.value) {
|
if (onlineMallOption && dataForm.purchaseType !== onlineMallOption.value) {
|
||||||
dataForm.purchaseType = onlineMallOption.value;
|
dataForm.purchaseType = onlineMallOption.value;
|
||||||
@@ -1168,6 +1196,14 @@ const flowMethods = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/** 流程嵌入时采购申请权限:根据前端缓存的角色(cloud-ui:roleCode)判断,非采购中心整表只读,采购中心仅采购方式/采购形式可编辑 */
|
||||||
|
function applyPurchaseApplyFormPerm() {
|
||||||
|
if (!isFlowEmbed.value) return;
|
||||||
|
const roleCode = Session.getRoleCode() || '';
|
||||||
|
isPurchaseCenter.value = roleCode === PURCHASE_CENTER_ROLE_CODE;
|
||||||
|
flowFormDisabled.value = !isPurchaseCenter.value;
|
||||||
|
}
|
||||||
|
|
||||||
/** 流程嵌入时的“保存”回调:校验后调用 editObj,并通知流程已保存 */
|
/** 流程嵌入时的“保存”回调:校验后调用 editObj,并通知流程已保存 */
|
||||||
async function flowSubmitForm() {
|
async function flowSubmitForm() {
|
||||||
if (loading.value) return;
|
if (loading.value) return;
|
||||||
@@ -1484,6 +1520,11 @@ const handleSubmit = async () => {
|
|||||||
...dataForm,
|
...dataForm,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 学校统一采购申请阶段:采购方式由审批环节补充,提交时不写入
|
||||||
|
if (!isFlowEmbed.value && !isDeptPurchase.value) {
|
||||||
|
submitData.purchaseType = '';
|
||||||
|
}
|
||||||
|
|
||||||
// 处理所有文件字段 - 收集所有文件ID到fileIds数组中
|
// 处理所有文件字段 - 收集所有文件ID到fileIds数组中
|
||||||
const fileFields = [
|
const fileFields = [
|
||||||
'businessNegotiationTable', 'marketPurchaseMinutes', 'onlineMallMaterials', 'inquiryTemplate',
|
'businessNegotiationTable', 'marketPurchaseMinutes', 'onlineMallMaterials', 'inquiryTemplate',
|
||||||
@@ -1560,6 +1601,11 @@ const handleTempStore = async () => {
|
|||||||
...dataForm,
|
...dataForm,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 学校统一采购申请阶段:采购方式由审批环节补充,暂存时不写入
|
||||||
|
if (!isFlowEmbed.value && !isDeptPurchase.value) {
|
||||||
|
submitData.purchaseType = '';
|
||||||
|
}
|
||||||
|
|
||||||
// 处理所有文件字段 - 收集所有文件ID到fileIds数组中
|
// 处理所有文件字段 - 收集所有文件ID到fileIds数组中
|
||||||
const fileFields = [
|
const fileFields = [
|
||||||
'businessNegotiationTable', 'marketPurchaseMinutes', 'onlineMallMaterials', 'inquiryTemplate',
|
'businessNegotiationTable', 'marketPurchaseMinutes', 'onlineMallMaterials', 'inquiryTemplate',
|
||||||
@@ -1691,6 +1737,7 @@ onMounted(async () => {
|
|||||||
if (isFlowEmbed.value && props.currJob && props.currElTab?.id) {
|
if (isFlowEmbed.value && props.currJob && props.currElTab?.id) {
|
||||||
orderVue.currElTabIsExist(props.currJob, props.currElTab.id);
|
orderVue.currElTabIsExist(props.currJob, props.currElTab.id);
|
||||||
await orderVue.currElTabIsView(flowMethods, props.currJob, props.currElTab.id, flowSubmitForm);
|
await orderVue.currElTabIsView(flowMethods, props.currJob, props.currElTab.id, flowSubmitForm);
|
||||||
|
applyPurchaseApplyFormPerm();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 新增模式下设置默认值(只有在没有 id 的情况下才设置)
|
// 新增模式下设置默认值(只有在没有 id 的情况下才设置)
|
||||||
|
|||||||
@@ -1,225 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div>
|
|
||||||
<el-form
|
|
||||||
ref="dataFormRef"
|
|
||||||
:model="form"
|
|
||||||
:rules="dataRules"
|
|
||||||
label-width="120px"
|
|
||||||
v-loading="loading"
|
|
||||||
:disabled="operType === 'view'"
|
|
||||||
>
|
|
||||||
<el-row :gutter="24">
|
|
||||||
<el-col :span="12" class="mb20" v-if="!hiddenFields.projectName">
|
|
||||||
<el-form-item label="采购项目名称" prop="projectName">
|
|
||||||
<el-input v-model="form.projectName" placeholder="请输入采购项目名称" :disabled="disabledFields.projectName" />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12" class="mb20" v-if="!hiddenFields.projectType">
|
|
||||||
<el-form-item label="项目类别" prop="projectType">
|
|
||||||
<el-select v-model="form.projectType" placeholder="请选择" :disabled="disabledFields.projectType" clearable style="width: 100%">
|
|
||||||
<el-option label="货物" value="A" />
|
|
||||||
<el-option label="工程" value="B" />
|
|
||||||
<el-option label="服务" value="C" />
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="24" class="mb20" v-if="!hiddenFields.projectContent">
|
|
||||||
<el-form-item label="采购内容" prop="projectContent">
|
|
||||||
<el-input v-model="form.projectContent" type="textarea" :rows="3" placeholder="请输入采购内容" :disabled="disabledFields.projectContent" />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12" class="mb20" v-if="!hiddenFields.applyDate">
|
|
||||||
<el-form-item label="填报日期" prop="applyDate">
|
|
||||||
<el-date-picker
|
|
||||||
v-model="form.applyDate"
|
|
||||||
type="date"
|
|
||||||
value-format="YYYY-MM-DD"
|
|
||||||
placeholder="选择日期"
|
|
||||||
:disabled="disabledFields.applyDate"
|
|
||||||
style="width: 100%"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12" class="mb20" v-if="!hiddenFields.fundSource">
|
|
||||||
<el-form-item label="资金来源" prop="fundSource">
|
|
||||||
<el-input v-model="form.fundSource" placeholder="资金来源" :disabled="disabledFields.fundSource" />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12" class="mb20" v-if="!hiddenFields.budget">
|
|
||||||
<el-form-item label="预算金额(元)" prop="budget">
|
|
||||||
<el-input-number v-model="form.budget" :min="0" :precision="2" :disabled="disabledFields.budget" style="width: 100%" />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12" class="mb20" v-if="!hiddenFields.isCentralized">
|
|
||||||
<el-form-item label="是否集采" prop="isCentralized">
|
|
||||||
<el-select v-model="form.isCentralized" placeholder="请选择" :disabled="disabledFields.isCentralized" clearable style="width: 100%">
|
|
||||||
<el-option label="否" value="0" />
|
|
||||||
<el-option label="是" value="1" />
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12" class="mb20" v-if="!hiddenFields.isSpecial">
|
|
||||||
<el-form-item label="是否特殊情况" prop="isSpecial">
|
|
||||||
<el-select v-model="form.isSpecial" placeholder="请选择" :disabled="disabledFields.isSpecial" clearable style="width: 100%">
|
|
||||||
<el-option label="否" value="0" />
|
|
||||||
<el-option label="紧急" value="1" />
|
|
||||||
<el-option label="单一" value="2" />
|
|
||||||
<el-option label="进口" value="3" />
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12" class="mb20" v-if="!hiddenFields.purchaseMode">
|
|
||||||
<el-form-item label="采购形式" prop="purchaseMode">
|
|
||||||
<el-input v-model="form.purchaseMode" placeholder="采购形式" :disabled="disabledFields.purchaseMode" />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12" class="mb20" v-if="!hiddenFields.purchaseType">
|
|
||||||
<el-form-item label="采购方式" prop="purchaseType">
|
|
||||||
<el-input v-model="form.purchaseType" placeholder="采购方式" :disabled="disabledFields.purchaseType" />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="24" class="mb20" v-if="!hiddenFields.remark">
|
|
||||||
<el-form-item label="备注" prop="remark">
|
|
||||||
<el-input v-model="form.remark" type="textarea" :rows="2" placeholder="备注" :disabled="disabledFields.remark" />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
</el-form>
|
|
||||||
<template v-if="data.submitBtn">
|
|
||||||
<footer class="el-dialog__footer">
|
|
||||||
<span class="dialog-footer">
|
|
||||||
<el-button type="primary" @click="submitForm" :disabled="loading">提交</el-button>
|
|
||||||
</span>
|
|
||||||
</footer>
|
|
||||||
</template>
|
|
||||||
<template v-else>
|
|
||||||
<footer class="el-dialog__footer">
|
|
||||||
<span class="dialog-footer" />
|
|
||||||
</footer>
|
|
||||||
</template>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script setup lang="ts" name="PurchaseApplyFlow">
|
|
||||||
import { useMessage } from '/@/hooks/message'
|
|
||||||
import * as purchaseApply from '/@/api/order/purchase-apply'
|
|
||||||
import * as orderVue from '/@/api/order/order-key-vue'
|
|
||||||
import { handleCustomFormPerm, handleFormPrint } from '/@/flow/utils/form-perm'
|
|
||||||
import { deepClone } from '/@/utils/other'
|
|
||||||
import { initCustomFormMethods } from '/@/views/order/index'
|
|
||||||
|
|
||||||
const emits = defineEmits(['handleJob'])
|
|
||||||
|
|
||||||
const dataFormRef = ref()
|
|
||||||
const loading = ref(false)
|
|
||||||
const operType = ref<'view' | 'flow'>('flow')
|
|
||||||
|
|
||||||
const props = defineProps({
|
|
||||||
currJob: { type: Object, default: null },
|
|
||||||
currElTab: { type: Object, default: () => ({}) }
|
|
||||||
})
|
|
||||||
|
|
||||||
const form = reactive<Record<string, any>>({
|
|
||||||
id: null,
|
|
||||||
code: '',
|
|
||||||
flowKey: 'PURCHASE_APPLY',
|
|
||||||
flowInstId: null,
|
|
||||||
purchaseNo: '',
|
|
||||||
projectName: '',
|
|
||||||
projectType: '',
|
|
||||||
projectContent: '',
|
|
||||||
applyDate: '',
|
|
||||||
fundSource: '',
|
|
||||||
budget: null,
|
|
||||||
isCentralized: '',
|
|
||||||
isSpecial: '',
|
|
||||||
purchaseMode: '',
|
|
||||||
purchaseSchool: '',
|
|
||||||
purchaseType: '',
|
|
||||||
categoryCode: '',
|
|
||||||
fileIds: [],
|
|
||||||
remark: '',
|
|
||||||
runJobId: '',
|
|
||||||
flowVarUser: null
|
|
||||||
})
|
|
||||||
|
|
||||||
const dataRules = ref({
|
|
||||||
projectContent: [{ required: true, message: '请输入采购内容', trigger: 'blur' }],
|
|
||||||
budget: [{ required: true, message: '请输入预算金额', trigger: 'blur' }]
|
|
||||||
})
|
|
||||||
|
|
||||||
const fieldsPerm = {
|
|
||||||
projectName: false,
|
|
||||||
projectType: false,
|
|
||||||
projectContent: false,
|
|
||||||
applyDate: false,
|
|
||||||
fundSource: false,
|
|
||||||
budget: false,
|
|
||||||
isCentralized: false,
|
|
||||||
isSpecial: false,
|
|
||||||
purchaseMode: false,
|
|
||||||
purchaseType: false,
|
|
||||||
remark: false
|
|
||||||
}
|
|
||||||
const hiddenFields = reactive({ ...fieldsPerm })
|
|
||||||
const disabledFields = reactive(deepClone(fieldsPerm))
|
|
||||||
|
|
||||||
const data = reactive({
|
|
||||||
submitBtn: true,
|
|
||||||
elTab: null as any
|
|
||||||
})
|
|
||||||
|
|
||||||
const methods = initCustomFormMethods(data, disabledFields, operType)
|
|
||||||
|
|
||||||
function initJobData() {
|
|
||||||
if (props.currJob?.orderId) handleGetObj(props.currJob.orderId)
|
|
||||||
}
|
|
||||||
|
|
||||||
function handleGetObj(id: string | number) {
|
|
||||||
purchaseApply.getObj(id).then(async (resp: any) => {
|
|
||||||
const formData = resp?.data ?? {}
|
|
||||||
Object.assign(form, formData)
|
|
||||||
form.runJobId = props.currJob?.id ?? ''
|
|
||||||
await initFormPermPrint()
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
async function initFormPermPrint() {
|
|
||||||
const elTab = orderVue.currElTabIsExist(props.currJob, props.currElTab?.id)
|
|
||||||
const res = await handleCustomFormPerm(props, hiddenFields, disabledFields, elTab)
|
|
||||||
await orderVue.currElTabIsView(methods, props.currJob, props.currElTab?.id, submitForm, res?.callback)
|
|
||||||
await handleFormPrint(form, elTab?.type, elTab?.id, '1')
|
|
||||||
data.elTab = elTab
|
|
||||||
}
|
|
||||||
|
|
||||||
async function submitForm() {
|
|
||||||
try {
|
|
||||||
loading.value = true
|
|
||||||
await purchaseApply.putObj(form)
|
|
||||||
orderVue.currElTabIsSave(props.currJob, props.currElTab?.id, true, emits)
|
|
||||||
useMessage().success(form.id ? '修改成功' : '保存成功')
|
|
||||||
} catch (err: any) {
|
|
||||||
useMessage().error(err?.msg ?? '操作失败')
|
|
||||||
} finally {
|
|
||||||
loading.value = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
watch(
|
|
||||||
() => props.currJob?.id,
|
|
||||||
() => { initJobData() }
|
|
||||||
)
|
|
||||||
|
|
||||||
onMounted(() => {
|
|
||||||
initJobData()
|
|
||||||
})
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.el-dialog__footer {
|
|
||||||
text-align: center;
|
|
||||||
.dialog-footer {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
Reference in New Issue
Block a user