采购申请调整为单页显示
This commit is contained in:
@@ -19,8 +19,8 @@
|
|||||||
:disabled="isViewMode || flowFormDisabled"
|
:disabled="isViewMode || flowFormDisabled"
|
||||||
class="compact-form">
|
class="compact-form">
|
||||||
|
|
||||||
<!-- 第一步:基本信息(查看/流程嵌入时单页展示,否则按步骤切换) -->
|
<!-- 基本信息(与采购详情同页展示) -->
|
||||||
<div v-show="isViewMode || isFlowEmbed || currentStep === 0">
|
<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="projectName">
|
<el-form-item label="采购项目名称" prop="projectName">
|
||||||
@@ -130,10 +130,13 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 第二步:采购详情(查看/流程嵌入时单页展示,否则按步骤切换) -->
|
<!-- 采购详情(新增时需先填是否特殊情况、是否集采、预算金额后才显示) -->
|
||||||
<div v-show="isViewMode || isFlowEmbed || currentStep === 1">
|
<div>
|
||||||
|
<el-alert v-if="!showPurchaseDetailBlocks" type="info" :closable="false" class="mb16" show-icon>
|
||||||
|
请先填写上方「是否特殊情况」「是否集采」「预算金额」,系统将根据填写结果展示「部门自行采购」或「学校统一采购」表单。
|
||||||
|
</el-alert>
|
||||||
<!-- 分支一:部门自行采购(单行两列流式布局,条件显示的项自动填满两列) -->
|
<!-- 分支一:部门自行采购(单行两列流式布局,条件显示的项自动填满两列) -->
|
||||||
<div class="mb20" v-if="isDeptPurchase">
|
<div class="mb20" v-if="showPurchaseDetailBlocks && isDeptPurchase">
|
||||||
<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">
|
||||||
@@ -267,7 +270,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 分支二:学校统一采购(单行两列流式布局);申请时隐藏采购方式,由审批环节采购中心补充 -->
|
<!-- 分支二:学校统一采购(单行两列流式布局);申请时隐藏采购方式,由审批环节采购中心补充 -->
|
||||||
<div class="mb20" v-else>
|
<div class="mb20" v-if="showPurchaseDetailBlocks && !isDeptPurchase">
|
||||||
<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">
|
||||||
@@ -389,7 +392,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<el-row :gutter="24" v-if="currentStep === 1 || isFlowEmbed">
|
<el-row :gutter="24">
|
||||||
<el-col :span="12" class="mb16">
|
<el-col :span="12" class="mb16">
|
||||||
<el-form-item label="备注" prop="remark" class="mb16">
|
<el-form-item label="备注" prop="remark" class="mb16">
|
||||||
<el-input
|
<el-input
|
||||||
@@ -462,30 +465,19 @@
|
|||||||
</template>
|
</template>
|
||||||
<template v-else>
|
<template v-else>
|
||||||
<el-button v-if="!isFlowEmbed" @click="handleCancel">取消</el-button>
|
<el-button v-if="!isFlowEmbed" @click="handleCancel">取消</el-button>
|
||||||
<el-button v-if="!isFlowEmbed && currentStep > 0" @click="prevStep">上一步</el-button>
|
|
||||||
<el-button
|
<el-button
|
||||||
v-if="!isFlowEmbed && currentStep < 1"
|
v-if="!isEditMode && !flowSubmitDisabled"
|
||||||
type="primary"
|
type="warning"
|
||||||
@click="nextStep"
|
@click="handleTempStore"
|
||||||
:disabled="loading">
|
:disabled="loading">
|
||||||
下一步
|
暂存
|
||||||
</el-button>
|
</el-button>
|
||||||
<template v-if="currentStep === 1 || isFlowEmbed">
|
<!-- <el-button -->
|
||||||
<el-button
|
<!-- type="primary" -->
|
||||||
v-if="!isEditMode && !flowSubmitDisabled"
|
<!-- @click="handleSubmit" -->
|
||||||
type="warning"
|
<!-- :disabled="loading">-->
|
||||||
@click="handleTempStore"
|
<!-- {{ isEditMode ? '保存' : '提交' }}-->
|
||||||
:disabled="loading">
|
<!-- </el-button>-->
|
||||||
暂存
|
|
||||||
</el-button>
|
|
||||||
<!-- <el-button -->
|
|
||||||
<!-- v-if="currentStep === 1" -->
|
|
||||||
<!-- type="primary" -->
|
|
||||||
<!-- @click="handleSubmit" -->
|
|
||||||
<!-- :disabled="loading">-->
|
|
||||||
<!-- {{ isEditMode ? '保存' : '提交' }}-->
|
|
||||||
<!-- </el-button>-->
|
|
||||||
</template>
|
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -570,7 +562,6 @@ function flowFieldDisabled(key: string) {
|
|||||||
|
|
||||||
// 定义变量内容
|
// 定义变量内容
|
||||||
const formRef = ref();
|
const formRef = ref();
|
||||||
const currentStep = ref(0);
|
|
||||||
const dataForm = reactive({
|
const dataForm = reactive({
|
||||||
id: '',
|
id: '',
|
||||||
projectName: '',
|
projectName: '',
|
||||||
@@ -723,6 +714,16 @@ const isDeptPurchase = computed(() => {
|
|||||||
dataForm.budget && dataForm.budget < 50000);
|
dataForm.budget && dataForm.budget < 50000);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 是否已填入“是否特殊情况”“是否集采”“预算金额”,从而能明确是部门自行采购还是学校统一采购(新增时先隐藏采购详情,填完后再显示)
|
||||||
|
const isPurchaseTypeDetermined = computed(() => {
|
||||||
|
return dataForm.isSpecial !== '' && dataForm.isCentralized !== '' &&
|
||||||
|
dataForm.budget != null && Number(dataForm.budget) > 0;
|
||||||
|
});
|
||||||
|
// 是否显示“部门自行采购/学校统一采购”区块:查看/编辑/流程嵌入/已保存过 时直接显示;新增时仅当类型已明确后显示
|
||||||
|
const showPurchaseDetailBlocks = computed(() => {
|
||||||
|
return !!isViewMode.value || !!isFlowEmbed.value || !!(dataForm.id) || isPurchaseTypeDetermined.value;
|
||||||
|
});
|
||||||
|
|
||||||
// 学校统一采购时采购形式默认值(不由用户选择):>=100万→政府采购('1');5万~100万且集采=否→学校自主('2');5万~100万且集采=政府集中采购→政府采购('1');5万~100万且集采=学校集中采购→学校自主('2')
|
// 学校统一采购时采购形式默认值(不由用户选择):>=100万→政府采购('1');5万~100万且集采=否→学校自主('2');5万~100万且集采=政府集中采购→政府采购('1');5万~100万且集采=学校集中采购→学校自主('2')
|
||||||
const schoolUnifiedPurchaseFormDefault = computed(() => {
|
const schoolUnifiedPurchaseFormDefault = computed(() => {
|
||||||
if (isDeptPurchase.value || dataForm.budget == null) return null;
|
if (isDeptPurchase.value || dataForm.budget == null) return null;
|
||||||
@@ -1064,32 +1065,6 @@ const dataRules = reactive({
|
|||||||
],
|
],
|
||||||
});
|
});
|
||||||
|
|
||||||
// 下一步
|
|
||||||
const nextStep = async () => {
|
|
||||||
try {
|
|
||||||
const fieldsToValidate = ['projectName', 'applyDate', 'fundSource', 'budget', 'isCentralized', 'isSpecial', 'categoryCode'];
|
|
||||||
await formRef.value?.validateField(fieldsToValidate);
|
|
||||||
|
|
||||||
// 打印品目编码的值
|
|
||||||
console.log('品目编码值 (categoryCode):', dataForm.categoryCode);
|
|
||||||
console.log('品目编码路径 (categoryCodePath):', categoryCodePath.value);
|
|
||||||
console.log('品目编码完整信息:', {
|
|
||||||
code: dataForm.categoryCode,
|
|
||||||
path: categoryCodePath.value,
|
|
||||||
categoryInfo: getCategoryInfo()
|
|
||||||
});
|
|
||||||
|
|
||||||
currentStep.value = 1;
|
|
||||||
} catch (error) {
|
|
||||||
useMessage().warning('请完善第一步信息');
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// 上一步
|
|
||||||
const prevStep = () => {
|
|
||||||
currentStep.value = 0;
|
|
||||||
};
|
|
||||||
|
|
||||||
// 取消
|
// 取消
|
||||||
const handleCancel = () => {
|
const handleCancel = () => {
|
||||||
// 流程嵌入时由流程页处理返回,不 postMessage
|
// 流程嵌入时由流程页处理返回,不 postMessage
|
||||||
@@ -1164,7 +1139,6 @@ async function loadDetail(applyId: string | number) {
|
|||||||
agentName: detail.agentName ?? '',
|
agentName: detail.agentName ?? '',
|
||||||
});
|
});
|
||||||
setCategoryCodePath();
|
setCategoryCodePath();
|
||||||
currentStep.value = 0;
|
|
||||||
try {
|
try {
|
||||||
const fileRes = await getApplyFiles(String(applyId));
|
const fileRes = await getApplyFiles(String(applyId));
|
||||||
const fileList: { id: string; fileType: string; fileTitle?: string }[] = fileRes?.data ?? [];
|
const fileList: { id: string; fileType: string; fileTitle?: string }[] = fileRes?.data ?? [];
|
||||||
|
|||||||
Reference in New Issue
Block a user