feat(ctr): 添加选择招标计划功能

- 弹出对话框显示招标计划列表
- 列表包含序号、名称、合同额、分包内容、中标单位等信息
- 添加选择按钮,点击后将招标计划信息回填到合同表单中
- 优化合同表单,增加招标计划相关字段
This commit is contained in:
tcy
2025-08-21 15:52:33 +08:00
parent 396dcd5748
commit bc0c9e3a90

View File

@ -129,7 +129,27 @@
</el-form>
</template>
</div>
<el-dialog v-model="dialogVisible" title="选择招标计划" width="45%">
<el-table :data="planList">
<el-table-column type="index" width="50" label="序号" />
<el-table-column label="名称" align="center" prop="name" />
<el-table-column label="合同额" align="center" prop="contractPrice" />
<el-table-column label="分包内容" align="center" prop="content" />
<el-table-column label="中标单位" align="center" prop="winningBidder" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-button type="primary" @click="handleChooseData(scope.row)">选择</el-button>
</template>
</el-table-column>
</el-table>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="dialogVisible = false">
关闭
</el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script setup>
@ -153,6 +173,7 @@ const fileRef = ref(null);
const incomeContractFormRef = ref(null);
const expensesContractFormRef = ref(null);
const payMentRef = ref(null);
const dialogVisible = ref(false);
const incomeContractFormRules = {
contractCode: [{ required: true, message: '请输入合同编号', trigger: 'blur' }],
contractType: [{ required: true, message: '请选择合同类型', trigger: 'change' }],
@ -316,13 +337,27 @@ const handleChoose = async () => {
}
const formData = {
projectId: userStore.selectedProject.id,
dictName: form.value.contractType
dictName: form.value.contractType,
status: 1
}
const { data } = await getTenderPlan(formData)
if (data.length === 0) {
ElMessage.warning('当前没有招标计划,请先创建招标计划');
return;
}
planList.value = data
dialogVisible.value = true;
}
const handleChooseData = (row) => {
form.value.tenderId = row.id;
form.value.name = row.name;
form.value.contractPrice = row.contractPrice;
form.value.content = row.content;
form.value.winningBidder = row.winningBidder;
dialogVisible.value = false;
};
watch(form, (val) => {
localStorage.setItem("tempContractForm", JSON.stringify({ ...val, fileList: fileList.value }));
}, { deep: true });