This commit is contained in:
吴红兵
2026-03-05 17:34:02 +08:00
parent f63ce726c1
commit ea7e48fc49
3 changed files with 49 additions and 59 deletions

View File

@@ -1,23 +1,23 @@
<template> <template>
<el-form ref="formRef" :model="form" :rules="rules" label-width="160px" > <el-form ref="formRef" :model="form" :rules="rules" label-width="160px" >
<el-row :gutter="24"> <el-row :gutter="24">
<el-col :span="12" class="mb20"> <!-- <el-col :span="12" class="mb20">-->
<el-form-item label="验收日期" prop="acceptDate"> <!-- <el-form-item label="验收日期" prop="acceptDate">-->
<el-date-picker <!-- <el-date-picker-->
v-model="form.acceptDate" <!-- v-model="form.acceptDate"-->
type="date" <!-- type="date"-->
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="readonly" <!-- :disabled="readonly"-->
/> <!-- />-->
</el-form-item> <!-- </el-form-item>-->
</el-col> <!-- </el-col>-->
<!-- 上传履约验收模版 --> <!-- 上传履约验收模版 -->
<el-col :span="12" class="mb20"> <el-col :span="12" class="mb20">
<el-form-item label="履约验收文件" prop="templateFileIds"> <el-form-item label="履约验收文件" prop="templateFileIds" :required="true">
<upload-file v-model="templateFiles" :limit="1" :file-type="['pdf']" :data="{ purchaseId: purchaseId || '', fileType: '110' }" upload-file-url="/purchase/purchasingfiles/upload" :disabled="readonly" /> <upload-file v-model="templateFiles" :limit="1" :file-type="['pdf']" :data="{ purchaseId: purchaseId || '', fileType: '110' }" upload-file-url="/purchase/purchasingfiles/upload" :disabled="readonly" />
<el-link v-if="!readonly" type="primary" @click="handleDownloadTemplate" style="margin-top: 8px; display: inline-flex; align-items: center;"> <el-link v-if="!readonly" type="primary" @click="handleDownloadTemplate" style="margin-top: 8px; display: inline-flex; align-items: center;">
<el-icon><Download /></el-icon> <el-icon><Download /></el-icon>

View File

@@ -3,12 +3,12 @@
<el-row :gutter="24"> <el-row :gutter="24">
<el-col :span="8" class="mb20"> <el-col :span="8" class="mb20">
<el-form-item label="项目名称"> <el-form-item label="项目名称">
<el-input :model-value="projectName || form.projectName" readonly placeholder="-" /> <el-input :model-value="projectName || form.projectName" readonly placeholder="-" disabled />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8" class="mb20"> <el-col :span="8" class="mb20">
<el-form-item label="需求部门"> <el-form-item label="需求部门">
<el-input :model-value="deptName || form.deptName" readonly placeholder="-" /> <el-input :model-value="deptName || form.deptName" readonly placeholder="-" disabled/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8" class="mb20"> <el-col :span="8" class="mb20">
@@ -110,34 +110,9 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8" class="mb20">
<el-form-item label="资产管理员" prop="assetAdminId">
<el-select
v-model="form.assetAdminId"
placeholder="请输入姓名或工号搜索"
filterable
remote
clearable
reserve-keyword
:remote-method="searchAssetAdmin"
:loading="assetAdminLoading"
style="width: 100%"
@change="onAssetAdminChange"
>
<el-option
v-for="item in assetAdminOptions"
:key="item.teacherNo"
:label="(item.commonDeptName ? item.commonDeptName + ' - ' : '') + (item.realName || item.name) + ' (' + item.teacherNo + ')'"
:value="item.teacherNo"
>
<span>{{ item.commonDeptName ? item.commonDeptName + ' - ' : '' }}{{ item.realName || item.name }}</span>
<span style="color: #999; font-size: 12px; margin-left: 8px;">{{ item.teacherNo }}</span>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8" class="mb20" v-if="form.hasContract === '0'"> <el-col :span="8" class="mb20" v-if="form.hasContract === '0'">
<el-form-item label="成交金额" prop="transactionAmount"> <el-form-item label="成交金额" prop="transactionAmount" :required="form.hasContract === '0'">
<el-input-number <el-input-number
v-model="form.transactionAmount" v-model="form.transactionAmount"
:min="0" :min="0"
@@ -320,6 +295,8 @@ watch(() => form.hasContract, (val) => {
contractOptions.value = [] contractOptions.value = []
contractLoaded.value = false contractLoaded.value = false
} }
// hasContract 变化时触发 transactionAmount 校验
formRef.value?.validateField('transactionAmount')
}) })
// 选择合同后,自动带出合同供应商名称 // 选择合同后,自动带出合同供应商名称
@@ -344,8 +321,22 @@ onMounted(() => {
}) })
const rules: FormRules = { const rules: FormRules = {
hasContract: [{ required: true, message: '请选择是否签订合同', trigger: 'change' }],
isInstallment: [{ required: true, message: '请选择是否分期验收', trigger: 'change' }], isInstallment: [{ required: true, message: '请选择是否分期验收', trigger: 'change' }],
totalPhases: [{ required: true, message: '请输入分期次数', trigger: 'blur' }], totalPhases: [{ required: true, message: '请输入分期次数', trigger: 'blur' }],
transactionAmount: [
{
validator: (rule: any, value: any, callback: any) => {
// 未签订合同时,成交金额为必填
if (form.hasContract === '0' && (value === null || value === undefined || value === '')) {
callback(new Error('未签订合同时,成交金额为必填'))
} else {
callback()
}
},
trigger: 'blur',
},
],
} }
const validate = () => formRef.value?.validate() const validate = () => formRef.value?.validate()

View File

@@ -135,6 +135,21 @@
<el-alert v-if="!showPurchaseDetailBlocks" type="info" :closable="false" class="mb16" show-icon> <el-alert v-if="!showPurchaseDetailBlocks" type="info" :closable="false" class="mb16" show-icon>
请先填写上方是否特殊情况是否集采预算金额系统将根据填写结果展示部门自行采购学校统一采购表单 请先填写上方是否特殊情况是否集采预算金额系统将根据填写结果展示部门自行采购学校统一采购表单
</el-alert> </el-alert>
<!-- 部门采购会议纪要预算超过2000元必须上传不区分部门自行采购/学校统一采购 -->
<el-row :gutter="16" v-if="showPurchaseDetailBlocks && dataForm.budget != null && dataForm.budget >= BUDGET_DEPT_SELF_MEETING_MINUTES">
<el-col :span="8" class="mb12">
<el-form-item label="部门采购会议纪要" prop="deptSelfMeetingMinutes" required>
<upload-file
v-model="dataForm.deptSelfMeetingMinutes"
:limit="1"
:file-type="['doc', 'docx', 'pdf', 'jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp']"
:data="{ fileType: FILE_TYPE_MAP.deptSelfMeetingMinutes }"
upload-file-url="/purchase/purchasingfiles/upload"
:disabled="flowFieldDisabled('deptSelfMeetingMinutes')"
/>
</el-form-item>
</el-col>
</el-row>
<!-- 分支一部门自行采购三列紧凑textarea 单独一行 --> <!-- 分支一部门自行采购三列紧凑textarea 单独一行 -->
<div class="mb20 form-section-compact" v-if="showPurchaseDetailBlocks && isDeptPurchase"> <div class="mb20 form-section-compact" v-if="showPurchaseDetailBlocks && isDeptPurchase">
<div class="step-title mb12">部门自行采购</div> <div class="step-title mb12">部门自行采购</div>
@@ -275,22 +290,6 @@
</el-button> </el-button>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col
:span="8"
class="mb12"
v-if="dataForm.budget != null && dataForm.budget >= BUDGET_DEPT_SELF_MEETING_MINUTES"
>
<el-form-item label="部门自行采购会议纪要" prop="deptSelfMeetingMinutes" required>
<upload-file
v-model="dataForm.deptSelfMeetingMinutes"
:limit="1"
:file-type="['doc', 'docx', 'pdf', 'jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp']"
:data="{ fileType: FILE_TYPE_MAP.deptSelfMeetingMinutes }"
upload-file-url="/purchase/purchasingfiles/upload"
:disabled="flowFieldDisabled('deptSelfMeetingMinutes')"
/>
</el-form-item>
</el-col>
<el-col <el-col
:span="8" :span="8"
class="mb12" class="mb12"