This commit is contained in:
2025-08-21 21:39:21 +08:00
parent 1cdd24271c
commit 594de41607
4 changed files with 601 additions and 84 deletions

View File

@ -7,9 +7,22 @@
<div class="bg-blue-50 px-6 py-4 rounded-t-xl mb-0">
<h3 class="el-card__header-title text-lg font-semibold text-blue-800">投标项目信息填写</h3>
<span>{{ currentProject.name }}</span>
<div style="margin-top: 10px">
<el-button @click="isDisabled = false" type="primary" class="px-8 py-2.5 transition-all duration-300 font-medium" v-if="isDisabled">
点击编辑
</el-button>
</div>
</div>
</template>
<el-form ref="listOfWinningBidsFormRef" :model="form" :rules="rules" label-width="150px" class="p-6 pt-4" style="background-color: #ffffff">
<el-form
:disabled="isDisabled"
ref="listOfWinningBidsFormRef"
:model="form"
:rules="rules"
label-width="150px"
class="p-6 pt-4"
style="background-color: #ffffff"
>
<el-row :gutter="32">
<el-col :span="12">
<el-form-item label="中标价(美元)" prop="winningBidOriginal" class="rounded-lg border border-gray-100 p-1 mb-5">
@ -100,14 +113,14 @@
<el-input v-model="form.projectNumbering" placeholder="请输入项目编号" />
</el-form-item>
</el-col>
<el-col :span="12">
<!-- <el-col :span="12">
<el-form-item label="项目状态" prop="projectStatus" class="rounded-lg border border-gray-100 p-1 mb-5">
<el-input v-model="form.projectStatus" placeholder="请输入项目状态(如:进行中/已完成)" />
</el-form-item>
</el-col>
</el-col> -->
</el-row>
<!-- 操作按钮区域 -->
<el-row class="mt-8">
<el-row v-if="!isDisabled" class="mt-8">
<el-col :span="24" class="text-center">
<el-button
:loading="buttonLoading"
@ -129,7 +142,7 @@
<script setup name="ListOfWinningBidsForm" lang="ts">
import { ref, reactive, toRefs, watch, onMounted, onUnmounted, getCurrentInstance, ComponentInternalInstance, computed } from 'vue';
import { addListOfWinningBids, updateListOfWinningBids, getListOfWinningBids } from '@/api/bidding/listOfWinningBids';
import { addListOfWinningBids, updateListOfWinningBids, listListOfWinningBids, getListOfWinningBids } from '@/api/bidding/listOfWinningBids';
import { ListOfWinningBidsVO, ListOfWinningBidsForm } from '@/api/bidding/listOfWinningBids/types';
import { useUserStoreHook } from '@/store/modules/user';
import { ElFormInstance, ElMessage } from 'element-plus';
@ -145,6 +158,7 @@ const currentProject = computed(() => userStore.selectedProject);
const listOfWinningBidsFormRef = ref<ElFormInstance>();
// 加载状态
const buttonLoading = ref(false);
const isDisabled = ref(false);
// 表单初始数据
const initFormData: ListOfWinningBidsForm = {
id: undefined,
@ -189,7 +203,6 @@ const data = reactive({
// 解构响应式数据
const { form, rules } = toRefs(data);
/**
* 计算人民币中标价
* 显式触发的计算函数,确保执行时机可靠
@ -216,16 +229,21 @@ const calculateWinningBid = () => {
const initData = async () => {
try {
if (currentProject.value?.id) {
const res = await getListOfWinningBids(currentProject.value.id);
if (res.data && res.data.id) {
Object.assign(form.value, res.data);
// 初始化时手动触发一次计算
setTimeout(calculateWinningBid, 0);
const res = await listListOfWinningBids({ projectId: currentProject.value.id });
if (res.code == 200) {
console.log(res.data);
resetForm();
if (!res.data) {
isDisabled.value = false;
return;
} else {
Object.assign(form.value, res.data);
}
isDisabled.value = true;
}
}
} catch (error) {
console.error('初始化数据失败:', error);
ElMessage.error('初始化数据失败');
// ElMessage.error('初始化数据失败');
}
};
@ -239,16 +257,10 @@ const submitForm = () => {
try {
// 提交前确保计算正确
calculateWinningBid();
form.value.projectId = currentProject.value?.id;
if (form.value.id) {
await updateListOfWinningBids(form.value);
} else {
await addListOfWinningBids(form.value);
}
await addListOfWinningBids(form.value);
isDisabled.value = true;
ElMessage.success('提交成功');
resetForm();
} catch (error) {
ElMessage.error('提交失败,请重试');
console.error('提交表单失败:', error);
@ -258,7 +270,6 @@ const submitForm = () => {
}
});
};
/**
* 重置表单
*/
@ -266,7 +277,6 @@ const resetForm = () => {
form.value = { ...initFormData, projectId: currentProject.value?.id };
listOfWinningBidsFormRef.value?.resetFields();
};
/**
* 监听项目ID变化 - 重新初始化数据
*/