This commit is contained in:
Teo
2025-08-22 23:31:19 +08:00
43 changed files with 3520 additions and 1724 deletions

View File

@ -27,7 +27,7 @@
class="upload-demo"
:http-request="importExcel"
:show-file-list="false"
v-hasPermi="['tender:billofquantitiesLimitList:importExcelFile']"
v-hasPermi="['tender:tenderPlanLimitList:importExcelFile']"
>
<template #trigger>
<el-button type="primary">导入excel</el-button>
@ -35,7 +35,7 @@
</el-upload>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleExport()" v-hasPermi="['tender:billofquantitiesLimitList:export']">导出excel</el-button>
<el-button type="primary" @click="handleExport()" v-hasPermi="['tender:tenderPlanLimitList:export']">导出excel</el-button>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleAudit('update')" v-if="versionsData.status == 'draft'">审核</el-button>
@ -75,7 +75,7 @@
size="small"
@click="handleSave(scope.row)"
v-if="scope.row.quantity && scope.row.quantity != 0"
v-hasPermi="['tender:billofquantitiesLimitList:edit']"
v-hasPermi="['tender:tenderPlanLimitList:edit']"
>确定</el-button
>
</template>

View File

@ -19,7 +19,29 @@
<h3 class="text-lg font-semibold text-gray-800">招标一览</h3>
</div>
<div class="p-6">
<el-table ref="tableRef" v-loading="loading" :data="tableData" row-key="id" border lazy default-expand-all>
<el-form
ref="leaveFormRef"
v-loading="loading"
:disabled="routeParams.type === 'view' || form.status == 'waiting'"
:model="form"
:rules="rules"
label-width="100px"
class="space-y-4"
>
<div class="grid grid-cols-1 gap-4">
<el-row>
<el-col :span="12">
<el-form-item label="版本号" prop="formNo">
<el-input disabled v-model="form.versions" placeholder="请输入文件名称" />
</el-form-item>
<el-form-item label="表名" prop="formNo">
<el-input disabled v-model="form.sheet" placeholder="请输入文件名称" />
</el-form-item>
</el-col>
</el-row>
</div>
</el-form>
<el-table :data="tableData" style="width: 100%; margin-bottom: 20px; height: calc(100vh - 305px)" row-key="id" default-expand-all border>
<el-table-column prop="num" label="编号" />
<el-table-column prop="name" label="工程或费用名称" />
<el-table-column prop="unit" label="单位" />
@ -73,7 +95,7 @@ import SubmitVerify from '@/components/Process/submitVerify.vue';
import ApprovalRecord from '@/components/Process/approvalRecord.vue';
import ApprovalButton from '@/components/Process/approvalButton.vue';
import { StartProcessBo } from '@/api/workflow/workflowCommon/types';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { proxy } = getCurrentInstance() as any;
import { useUserStoreHook } from '@/store/modules/user';
const { design_change_reason_type } = toRefs<any>(proxy?.useDict('design_change_reason_type'));
import { getKnowledgeDocument } from '@/api/design/technicalStandard';
@ -89,6 +111,7 @@ const buttonLoading = ref(false);
const loading = ref(true);
//路由参数
const routeParams = ref<Record<string, any>>({});
const flowCode = ref<string>('');
const status = ref<string>('');
const dialogVisible = reactive<DialogOption>({
@ -205,10 +228,10 @@ const submitFlow = async () => {
dialogVisible.visible = false;
};
//提交申请
const handleStartWorkFlow = async (data: LeaveForm) => {
const handleStartWorkFlow = async (data: any) => {
try {
submitFormData.value.flowCode = flowCode.value;
submitFormData.value.businessId = data.id;
submitFormData.value.businessId = data.versions + '_xianjiayilan';
//流程变量
taskVariables.value = {
// leave4/5 使用的流程变量
@ -265,6 +288,8 @@ onMounted(() => {
console.log('🚀 ~ proxy.$route.query:', proxy.$route.query);
reset();
loading.value = false;
console.log(routeParams.value);
if (routeParams.value.type === 'update' || routeParams.value.type === 'view' || routeParams.value.type === 'approval') {
if (routeParams.value.type === 'approval') {
form.value.versions = routeParams.value.id.split('_')[0];

View File

@ -1,77 +1,245 @@
<template>
<el-dialog v-model="dialogVisible" title="招标文件" width="500" draggable @close="closeDialog">
<el-form ref="ruleFormRef" style="max-width: 600px" :model="ruleForm" :rules="rules" label-width="auto">
<el-form-item label="招标文件" prop="name">
<file-upload
:fileSize="100"
:auto-upload="false"
uploadUrl="/tender/biddingPlan/uploadBiddingDocuments"
method="put"
ref="fileUploadRef"
:data="{
projectId: currentProject?.id,
type: planType,
fileType: '1',
bidStatus: '0',
id: row.id
}"
showFileList
/>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button @click="closeDialog()"> 取消 </el-button>
<el-button type="primary" @click="submitForm()">确定</el-button>
</div>
</template>
</el-dialog>
<div class="p-2">
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
<el-card shadow="always">
<el-form :model="queryForm" :inline="true">
<el-form-item label="表名" prop="sheet">
<el-select v-model="queryForm.sheet" placeholder="选择表名" @change="changeSheet">
<el-option v-for="item in sheets" :key="item" :label="item" :value="item" />
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="toggleExpandAll">{{ isExpandAll ? '一键收起' : '一键展开' }}</el-button>
</el-form-item>
<el-form-item>
<el-upload
ref="uploadRef"
class="upload-demo"
:http-request="importExcel"
:show-file-list="false"
v-hasPermi="['bidding:biddingLimitList:importExcelFile']"
>
<template #trigger>
<el-button type="primary">导入excel</el-button>
</template>
</el-upload>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleExport()" v-hasPermi="['bidding:biddingLimitList:export']">导出excel</el-button>
</el-form-item>
</el-form>
</el-card>
</transition>
<el-card shadow="never" class="mb8">
<el-table ref="tableRef" v-loading="loading" :data="tableData" row-key="id" border lazy default-expand-all>
<el-table-column prop="num" label="编号" />
<el-table-column prop="name" label="工程或费用名称" />
<el-table-column prop="unit" label="单位" />
<el-table-column prop="quantity" label="数量" />
<el-table-column prop="remark" label="单价" align="center">
<template #default="scope">
<el-input-number
:model-value="scope.row.unitPrice"
@change="(val) => (scope.row.unitPrice = val)"
:precision="2"
:step="0.1"
:controls="false"
v-if="scope.row.quantity && scope.row.quantity != 0"
/>
</template>
</el-table-column>
<el-table-column prop="price" label="总价" align="center">
<template #default="scope">
{{ scope.row.price }}
</template>
</el-table-column>
<el-table-column prop="price" label="操作" align="center">
<template #default="scope">
<el-button
type="primary"
size="small"
@click="handleSave(scope.row)"
v-if="scope.row.quantity && scope.row.quantity != 0"
v-hasPermi="['bidding:biddingLimitList:edit']"
>修改</el-button
>
</template>
</el-table-column>
</el-table>
</el-card>
</div>
</template>
<script setup lang="ts">
import { useUserStoreHook } from '@/store/modules/user';
import { obtainAllVersionNumbers } from '@/api/contract/index';
import { BiddingImportExcelFile, getTreeLimit, biddingLimitListUpdate, sheetList } from '@/api/bidding/biddingLimit';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const userStore = useUserStoreHook();
const currentProject = computed(() => userStore.selectedProject);
const dialogVisible = ref(false);
const row = ref<any>();
const planType = ref<any>('');
const fileUploadRef = ref<any>();
const ruleForm = ref<any>();
const rules = ref({
costEstimationFile: [{ required: true, message: '请上传招标文件', trigger: ['blur'] }]
const queryForm = ref({
versions: '',
sheet: ''
});
const emit = defineEmits(['success']);
const form = ref({
costEstimationFile: ''
const loading = ref(false);
const options = ref<any[]>([]);
const sheets = ref<any[]>([]);
const tableData = ref<any[]>([]);
const isExpandAll = ref(true);
// 接受父组件传递的参数
const props = defineProps({
type: {
type: String,
default: ''
}
});
const closeDialog = () => {
dialogVisible.value = false;
emit('success');
//获取版本号
const getVersionNums = async () => {
try {
const params = {
projectId: currentProject.value?.id,
pageSize: 1000,
pageNum: 1
};
const res = await obtainAllVersionNumbers(params);
if (res.code == 200) {
options.value = res.data;
if (res.data.length > 0) {
queryForm.value.versions = res.data[0];
getSheetName();
} else {
queryForm.value.versions = '';
}
}
} catch (error) {
console.log(error);
}
};
//选择版本号
const changeVersions = () => {
getSheetName();
};
const open = (rows: any, type: string) => {
dialogVisible.value = true;
console.log(rows, type);
row.value = rows;
planType.value = type;
//选择表名
const changeSheet = () => {
getTableData();
};
const resetForm = () => {};
const submitForm = () => {
fileUploadRef.value.submitUpload().then((res) => {
if (res == 'noFile') {
//获取表名
const getSheetName = async () => {
try {
const params = {
projectId: currentProject.value?.id
// versions: queryForm.value.versions
};
const res = await sheetList(params);
if (res.code == 200) {
sheets.value = res.data;
if (res.data.length > 0) {
queryForm.value.sheet = res.data[0];
} else {
queryForm.value.sheet = '';
}
getTableData();
}
} catch (error) {}
};
//获取表格
const getTableData = async () => {
loading.value = true;
const params = {
projectId: currentProject.value?.id,
sheet: queryForm.value.sheet,
type: props.type
};
const res = await getTreeLimit(params);
loading.value = false;
if (res.code == 200) {
tableData.value = [res.data[0]];
}
console.log(loading.value);
};
//修改单价
const handleSave = (row: any) => {
try {
if (!row.unitPrice) {
ElMessage({
message: '请上传招标文件',
message: '请输入单价',
type: 'warning'
});
return;
}
dialogVisible.value = false;
emit('success');
loading.value = true;
biddingLimitListUpdate(row).then((res) => {
if (res.code == 200) {
ElMessage({
message: '修改成功',
type: 'success'
});
getTableData();
}
});
} catch (error) {
ElMessage({
message: '修改失败',
type: 'error'
});
}
};
const tableRef = ref<any>();
const toggleExpandAll = () => {
isExpandAll.value = !isExpandAll.value;
console.log(isExpandAll.value);
tableData.value.forEach((row) => {
tableRef.value.toggleRowExpansion(row, isExpandAll.value);
});
};
defineExpose({
open
//导入
const importExcel = (options: any): any => {
let formData = new FormData();
formData.append('file', options.file);
loading.value = true;
BiddingImportExcelFile({ projectId: currentProject.value?.id }, formData)
.then((res) => {
const { code } = res;
if (code == 200) {
proxy.$modal.msgSuccess(res.msg || '导入成功');
getTableData();
}
})
.catch((err) => {})
.finally(() => {
loading.value = false;
});
};
//监听项目id刷新数据
const listeningProject = watch(
() => currentProject.value?.id,
(nid, oid) => {
getVersionNums();
}
);
const handleExport = () => {
proxy?.download(
'/bidding/biddingLimitList/export',
{
projectId: currentProject.value?.id,
sheet: queryForm.value.sheet
},
`限价一览表${queryForm.value.sheet}.xlsx`
);
};
onUnmounted(() => {
listeningProject();
});
onMounted(() => {
getSheetName();
});
</script>
<style scoped lang="scss"></style>
<style scoped></style>

View File

@ -1,112 +0,0 @@
<template>
<el-dialog v-model="dialogVisible" title="招标文件" width="500" draggable @close="closeDialog">
<el-form ref="ruleFormRef" style="max-width: 600px" :model="form" :rules="rules" label-width="auto">
<el-form-item label="中标单位" prop="winningBidder">
<el-select v-model="form.winningBidder" filterable placeholder="请选择单位" style="width: 240px">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="招标文件" prop="name">
<file-upload
v-model="form.costEstimationFile"
:fileSize="100"
:auto-upload="false"
uploadUrl="/tender/biddingPlan/uploadBiddingDocuments"
method="put"
ref="fileUploadRef"
:limit="1"
:data="{
projectId: currentProject?.id,
type: planType,
fileType: '0',
bidStatus: '0',
id: row.id,
winningBidderId: form.winningBidder
}"
showFileList
/>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button @click="closeDialog()"> 取消 </el-button>
<el-button type="primary" @click="submitForm()">确定</el-button>
</div>
</template>
</el-dialog>
</template>
<script setup lang="ts">
import { getUnitList } from '@/api/tender/index';
import { useUserStoreHook } from '@/store/modules/user';
const userStore = useUserStoreHook();
const currentProject = computed(() => userStore.selectedProject);
const dialogVisible = ref(false);
const row = ref<any>();
const planType = ref<any>('');
const fileUploadRef = ref<any>();
const ruleForm = ref<any>();
const options = ref<any>([]);
const rules = ref({
costEstimationFile: [{ required: true, message: '请上传招标文件', trigger: ['blur'] }]
});
const emit = defineEmits(['success']);
const form = ref({
costEstimationFile: '',
winningBidder: ''
});
const open = (rows: any, type: string) => {
dialogVisible.value = true;
console.log(rows, type);
row.value = rows;
planType.value = type;
getUnitListData();
};
const closeDialog = () => {
dialogVisible.value = false;
form.value.winningBidder = '';
emit('success');
};
const getUnitListData = async () => {
let res = await getUnitList({
projectId: currentProject.value?.id
});
if (res.code == 200) {
options.value = res.data.map((item: any) => {
return {
label: item.supplierName,
value: item.id
};
});
}
console.log(res);
};
const resetForm = () => {};
const submitForm = () => {
if (!form.value.winningBidder) {
ElMessage({
message: '请选择中标单位',
type: 'warning'
});
return;
}
fileUploadRef.value.submitUpload().then((res) => {
if (res == 'noFile') {
ElMessage({
message: '请上传招标文件',
type: 'warning'
});
return;
}
dialogVisible.value = false;
emit('success');
});
};
defineExpose({
open
});
</script>
<style scoped lang="scss"></style>

View File

@ -10,11 +10,10 @@
<el-form-item label="内容" prop="sheet">
<el-input v-model="queryForm.content" placeholder="请输入内容" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
<el-button type="primary" plain :icon="Plus" @click="openDialog" v-hasPermi="['tender:segmentedIndicatorPlanning:add']">新增</el-button>
<el-button type="primary" plain :icon="Plus" @click="openDialog" v-hasPermi="['tender:biddingPlan:add']">新增</el-button>
</el-form-item>
</el-form>
</el-card>
@ -26,27 +25,19 @@
</el-table-column>
<el-table-column prop="name" label="名称" />
<el-table-column prop="content" label="内容" />
<el-table-column prop="price" label="限价" />
<el-table-column prop="bidd" label="招标文件">
<template #default="scope">
<el-button
type="primary"
:disabled="scope.row.bidStatus == 1"
link
v-hasPermi="['tender:segmentedIndicatorPlanning:getMore']"
@click="biddView(scope.row)"
>查看文件</el-button
>
<el-button type="primary" link v-hasPermi="['tender:biddingPlan:getAnnex']" @click="biddView(scope.row)">查看文件</el-button>
</template>
</el-table-column>
<el-table-column prop="winningBidder" label="中标单位" />
<el-table-column prop="bidFileName" label="中标文件">
<template #default="scope">
<el-button type="primary" link :disabled="scope.row.bidStatus == 1" @click="openPdf(scope.row.bidFile)"
>{{ scope.row.bidFileName }}
</el-button>
<el-button type="primary" link @click="openPdf(scope.row.bidFile)">{{ scope.row.bidFileName }} </el-button>
</template>
</el-table-column>
<el-table-column prop="plannedBiddingTime" label="计划招标时间" align="center">
<el-table-column prop="plannedBiddingTime" label="计划招标时间" align="center" width="250">
<template #default="scope">
<el-date-picker
v-model="scope.row.plannedBiddingTime"
@ -59,28 +50,48 @@
value-format="YYYY-MM-DD"
placeholder="选择时间"
:disabled="scope.row.bidStatus == 1"
v-hasPermi="['tender:biddingPlan:edit']"
/>
</template>
</el-table-column>
<el-table-column prop="price" label="操作" align="center">
<el-table-column prop="contractPrice" label="合同金额" align="center" width="200">
<template #default="scope">
<el-input-number
:model-value="scope.row.contractPrice"
@change="
(val) => {
scope.row.contractPrice = val;
changeContractPrice(val, scope.row);
}
"
:precision="2"
:step="1"
:controls="false"
:disabled="scope.row.bidStatus == 1"
v-hasPermi="['tender:biddingPlan:edit']"
/>
</template>
</el-table-column>
<el-table-column prop="price" label="操作" align="center" width="400">
<template #default="scope">
<el-button
type="primary"
link
icon="FolderOpened"
@click="handleSave(scope.row)"
v-hasPermi="['tender:segmentedIndicatorPlanning:edit']"
v-hasPermi="['tender:biddingPlan:uploadBiddingDocuments']"
:disabled="scope.row.bidStatus == 1"
>上传投标资料
>招标上传
</el-button>
<el-button
type="primary"
link
icon="FolderOpened"
@click="handleWinTheBid(scope.row)"
v-hasPermi="['tender:segmentedIndicatorPlanning:edit']"
v-hasPermi="['tender:biddingPlan:uploadBiddingDocuments']"
:disabled="scope.row.bidStatus == 1"
>上传中标资料
>中标上传
</el-button>
<!-- <el-button type="primary" link icon="Edit" @click="handleSave(scope.row)" v-hasPermi="['tender:segmentedIndicatorPlanning:edit']"
>信息
@ -91,7 +102,7 @@
icon="View"
@click="handleDetail(scope.row)"
:disabled="scope.row.bidStatus == 1"
v-hasPermi="['tender:segmentedIndicatorPlanning:getMore']"
v-hasPermi="['tender:biddingPlan:getMore']"
>详情</el-button
>
@ -101,9 +112,18 @@
icon="Delete"
@click="delHandle(scope.row)"
:disabled="scope.row.bidStatus == 1"
v-hasPermi="['tender:segmentedIndicatorPlanning:remove']"
v-hasPermi="['tender:biddingPlan:remove']"
>删除</el-button
>
<el-button
type="primary"
link
icon="Lock"
@click="editStatusBtn(scope.row)"
:disabled="scope.row.bidStatus == 1"
v-hasPermi="['tender:biddingPlan:editStatus']"
>确定</el-button
>
</template>
</el-table-column>
</el-table>
@ -189,7 +209,7 @@
</el-row>
<template #footer>
<el-button @click="closeDialog">取消</el-button>
<el-button type="primary" @click="submitForm(formRef)" :loading="subLoading">确定</el-button>
<el-button type="primary" @click="submitForm(formRef)">确定</el-button>
</template>
</el-dialog>
<el-dialog title="详情" v-model="detailDialog" width="75%" draggable>
@ -213,7 +233,15 @@
<el-table-column prop="price" label="操作" align="center">
<template #default="scope">
<el-button type="primary" link icon="View" @click="openPdf(scope.row.url)">查看</el-button>
<el-button type="primary" link icon="Delete" @click="delHandlebidd(scope.row)">删除</el-button>
<el-button
type="primary"
link
icon="Delete"
@click="delHandlebidd(scope.row)"
v-if="scope.row.bidStatus != 1"
v-hasPermi="['tender:biddingPlanAnnex:remove']"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
@ -229,8 +257,6 @@ import { useUserStoreHook } from '@/store/modules/user';
import { getDicts } from '@/api/system/dict/data';
import { Plus } from '@element-plus/icons-vue';
import { FormInstance } from 'element-plus';
import information from './comm/planPage.vue';
import winTheBid from './comm/winTheBid.vue';
import {
sheetList,
tenderPlanList,
@ -241,9 +267,11 @@ import {
getTenderPlanDetail,
obtainAllVersionNumbers,
biddViewLook,
delBiddView
delBiddView,
editStatus
} from '@/api/tender/index';
const { proxy } = getCurrentInstance();
import { it } from 'element-plus/es/locale/index.mjs';
const userStore = useUserStoreHook();
const currentProject = computed(() => userStore.selectedProject);
const tabList = ref<any[]>([]);
@ -487,14 +515,12 @@ const getTreeList = async () => {
treeLoading.value = false;
}
};
const subLoading = ref(false);
const submitForm = async (formEl: FormInstance | undefined) => {
if (!formEl) return;
await formEl.validate(async (valid, fields) => {
if (valid) {
try {
subLoading.value = true;
if (selectionData.value.length == 0) {
ElMessage({
message: '请选择项目材料',
@ -529,10 +555,8 @@ const submitForm = async (formEl: FormInstance | undefined) => {
});
closeDialog();
getList();
subLoading.value = false;
}
} catch (error) {
subLoading.value = false;
console.log(error);
}
} else {
@ -540,6 +564,7 @@ const submitForm = async (formEl: FormInstance | undefined) => {
}
});
};
//修改计划时间
const changeBiddingTime = (value: any, row: any) => {
updateTenderPlan({
...row
@ -553,6 +578,21 @@ const changeBiddingTime = (value: any, row: any) => {
}
});
};
//修改合同金额
const changeContractPrice = (value: any, row: any) => {
updateTenderPlan({
...row
}).then((res) => {
if (res.code == 200) {
ElMessage({
message: '修改成功',
type: 'success'
});
getList();
}
});
};
//上传投标文件
const handleSave = (row: any) => {
informationRef.value.open(row, planType.value);
@ -613,6 +653,7 @@ const biddView = async (row: any) => {
};
const res = await biddViewLook(params);
if (res.code == 200) {
res.data.forEach((item) => (item.bidStatus = biddViewRow.value.bidStatus));
biddViewData.value = res.data;
}
};
@ -631,6 +672,20 @@ const delHandlebidd = (row: any) => {
}
});
};
//修改状态
const editStatusBtn = (row: any) => {
editStatus({
...row
}).then((res) => {
if (res.code == 200) {
ElMessage({
message: '修改成功',
type: 'success'
});
getList();
}
});
};
//查看文件
const openPdf = (url: any) => {

View File

@ -323,18 +323,21 @@
<script setup name="SupplierInput" lang="ts">
import { ComponentInternalInstance, getCurrentInstance, onMounted, ref, reactive, toRefs, computed } from 'vue';
import { ElFormInstance } from 'element-plus';
import { listSupplierInput, getSupplierInput, delSupplierInput } from '@/api/supplierInput/supplierInput';
import { listSupplierInput, getSupplierInput, delSupplierInput } from '@/api/supplierInput/supplierInput/index';
import { SupplierInputVO, SupplierInputQuery, SupplierInputForm, PageData, DialogOption } from '@/api/supplierInput/supplierInput/types';
import Pagination from '@/components/Pagination/index.vue';
import RightToolbar from '@/components/RightToolbar/index.vue';
import FileUpload from '@/components/FileUpload/index.vue';
import { useUserStoreHook } from '@/store/modules/user';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { wf_business_status } = toRefs<any>(proxy?.useDict('wf_business_status'));
// 组件引用
const fileUploadRef = ref<InstanceType<typeof FileUpload> | null>(null);
const queryFormRef = ref<ElFormInstance>();
const supplierInputFormRef = ref<ElFormInstance>();
// 获取用户 store
const userStore = useUserStoreHook();
const currentProject = computed(() => userStore.selectedProject);
// 基础数据
const supplierInputList = ref<SupplierInputVO[]>([]);
const buttonLoading = ref(false);
@ -393,6 +396,7 @@ const initFormData: any = {
const data = reactive<PageData<SupplierInputForm, SupplierInputQuery>>({
form: { ...initFormData },
queryParams: {
projectId: currentProject.value?.id,
pageNum: 1,
pageSize: 10,
supplierType: undefined,
@ -506,7 +510,7 @@ const cancel = () => {
/** 表单重置:清空所有字段 */
const reset = () => {
form.value = { ...initFormData };
form.value = { ...initFormData, projectId: currentProject.value?.id };
fileUrl.value = '';
form.value.inputFile = '';
supplierInputFormRef.value?.resetFields();
@ -606,8 +610,6 @@ const handleUpdate = async (row?: SupplierInputVO) => {
/** 提交表单 */
const submitForm = () => {
console.log(1);
supplierInputFormRef.value?.validate(async (valid: boolean) => {
if (!valid) return;
if (form.value.supplierType === '劳务') {
@ -662,10 +664,29 @@ const handleDelete = async (row?: SupplierInputVO) => {
const handleExport = () => {
proxy?.download('supplierInput/supplierInput/export', { ...queryParams.value }, `supplierInput_${new Date().getTime()}.xlsx`);
};
/** 页面挂载时查询列表 */
//调用projectId并获取列表
onMounted(() => {
getList();
// 若需要依赖项目ID可先判断项目是否已选中再调用接口
if (currentProject.value?.id) {
queryParams.value.projectId = currentProject.value.id;
form.value.projectId = currentProject.value.id;
getList(); // 首次进入自动调取listSupplierInput接口
} else {
// 若项目未选中,可提示或后续监听项目变化时再加载(已有监听逻辑)
getList();
}
});
// 监听项目id刷新数据
const listeningProject = watch(
() => currentProject.value?.id,
(nid, oid) => {
queryParams.value.projectId = nid;
form.value.projectId = nid;
getList();
}
);
onUnmounted(() => {
listeningProject();
});
</script>

View File

@ -437,9 +437,7 @@ onMounted(() => {
.el-input__inner,
.el-select .el-input__inner {
border-radius: 4px;
transition:
border-color 0.2s,
box-shadow 0.2s;
transition: border-color 0.2s, box-shadow 0.2s;
&:focus {
border-color: var(--primary-light);
@ -449,9 +447,7 @@ onMounted(() => {
.el-textarea__inner {
border-radius: 4px;
transition:
border-color 0.2s,
box-shadow 0.2s;
transition: border-color 0.2s, box-shadow 0.2s;
&:focus {
border-color: var(--primary-light);