This commit is contained in:
2025-08-22 20:03:33 +08:00
2 changed files with 214 additions and 43 deletions

View File

@ -91,3 +91,34 @@ export const getTenderPlanDetail = (query: any): AxiosPromise<any> => {
params: query params: query
}); });
}; };
//查看招标文件
export const biddViewLook = (query: any): AxiosPromise<any> => {
return request({
url: '/tender/biddingPlan/getAnnex',
method: 'get',
params: query
});
};
//删除招标文件
export const delBiddView = (query: any): AxiosPromise<any> => {
return request({
url: '/tender/biddingPlanAnnex/' + query.ids,
method: 'delete'
});
};
//获取招标单位
export const getUnitList = (query: any): AxiosPromise<any> => {
return request({
url: '/supplierInput/supplierInput/getList',
method: 'get',
params: query
});
};
//修改状态
export const editStatus = (query: any): AxiosPromise<any> => {
return request({
url: '/tender/biddingPlan/editStatus',
method: 'put',
data: query
});
};

View File

@ -27,12 +27,7 @@
<el-table-column prop="content" label="内容" /> <el-table-column prop="content" label="内容" />
<el-table-column prop="bidd" label="招标文件"> <el-table-column prop="bidd" label="招标文件">
<template #default="scope"> <template #default="scope">
<el-button <el-button type="primary" link v-hasPermi="['tender:segmentedIndicatorPlanning:getMore']" @click="biddView(scope.row)"
type="primary"
:disabled="scope.row.bidStatus == 1"
link
v-hasPermi="['tender:segmentedIndicatorPlanning:getMore']"
@click="biddView(scope.row)"
>查看文件</el-button >查看文件</el-button
> >
</template> </template>
@ -40,19 +35,73 @@
<el-table-column prop="winningBidder" label="中标单位" /> <el-table-column prop="winningBidder" label="中标单位" />
<el-table-column prop="bidFileName" label="中标文件"> <el-table-column prop="bidFileName" label="中标文件">
<template #default="scope"> <template #default="scope">
<el-button type="primary" link :disabled="scope.row.bidStatus == 1" @click="openPdf(scope.row.bidFile)" <el-button type="primary" link @click="openPdf(scope.row.bidFile)">{{ scope.row.bidFileName }} </el-button>
>{{ scope.row.bidFileName }} </template>
</el-table-column>
<el-table-column prop="plannedBiddingTime" label="计划招标时间" align="center" width="250">
<template #default="scope">
<el-date-picker
v-model="scope.row.plannedBiddingTime"
@change="
(val: any) => {
changeBiddingTime(val, scope.row);
}
"
type="date"
value-format="YYYY-MM-DD"
placeholder="选择时间"
:disabled="scope.row.bidStatus == 1"
/>
</template>
</el-table-column>
<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"
/>
</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']"
:disabled="scope.row.bidStatus == 1"
>招标上传
</el-button> </el-button>
</template> <el-button
</el-table-column> type="primary"
<el-table-column prop="plannedBiddingTime" label="计划招标时间" align="center"> link
<template #default="scope"> icon="FolderOpened"
<el-date-picker v-model="scope.row.plannedBiddingTime" type="date" value-format="YYYY-MM-DD" placeholder="选择时间" /> @click="handleWinTheBid(scope.row)"
</template> v-hasPermi="['tender:segmentedIndicatorPlanning:edit']"
</el-table-column> :disabled="scope.row.bidStatus == 1"
<el-table-column prop="price" label="操作" align="center"> >中标上传
<template #default="scope"> </el-button>
<el-button type="warning" size="small" @click="handleDetail(scope.row)" v-hasPermi="['tender:segmentedIndicatorPlanning:getMore']" <!-- <el-button type="primary" link icon="Edit" @click="handleSave(scope.row)" v-hasPermi="['tender:segmentedIndicatorPlanning:edit']"
>信息
</el-button> -->
<el-button
type="primary"
link
icon="View"
@click="handleDetail(scope.row)"
:disabled="scope.row.bidStatus == 1"
v-hasPermi="['tender:segmentedIndicatorPlanning:getMore']"
>详情</el-button >详情</el-button
> >
@ -65,6 +114,15 @@
v-hasPermi="['tender:segmentedIndicatorPlanning:remove']" v-hasPermi="['tender:segmentedIndicatorPlanning:remove']"
>删除</el-button >删除</el-button
> >
<el-button
type="primary"
link
icon="Lock"
@click="editStatusBtn(scope.row)"
:disabled="scope.row.bidStatus == 1"
v-hasPermi="['tender:segmentedIndicatorPlanning:remove']"
>确定</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -167,6 +225,21 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-dialog> </el-dialog>
<el-dialog title="查看文件" v-model="biddDialog" width="45%" draggable>
<el-table :data="biddViewData" border>
<el-table-column prop="name" label="文件名" />
<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)" v-if="scope.row.bidStatus != 1">删除</el-button>
</template>
</el-table-column>
</el-table>
</el-dialog>
<information ref="informationRef" @success="getList()" />
<winTheBid ref="winTheBidRef" @success="getList()" />
</div> </div>
</template> </template>
@ -183,9 +256,13 @@ import {
updateTenderPlan, updateTenderPlan,
treeList, treeList,
getTenderPlanDetail, getTenderPlanDetail,
obtainAllVersionNumbers obtainAllVersionNumbers,
biddViewLook,
delBiddView,
editStatus
} from '@/api/tender/index'; } from '@/api/tender/index';
const { proxy } = getCurrentInstance(); import { it } from 'element-plus/es/locale/index.mjs';
const userStore = useUserStoreHook(); const userStore = useUserStoreHook();
const currentProject = computed(() => userStore.selectedProject); const currentProject = computed(() => userStore.selectedProject);
const tabList = ref<any[]>([]); const tabList = ref<any[]>([]);
@ -478,32 +555,43 @@ const submitForm = async (formEl: FormInstance | undefined) => {
} }
}); });
}; };
//确定修改 //修改计划时间
const handleSave = (row: any) => { const changeBiddingTime = (value: any, row: any) => {
try { updateTenderPlan({
if (!row.plannedBiddingTime) { ...row
}).then((res) => {
if (res.code == 200) {
ElMessage({ ElMessage({
message: '请输入计划招标时间', message: '修改成功',
type: 'warning' type: 'success'
}); });
return; getList();
} }
updateTenderPlan({ ...row, type: planType.value }).then((res) => { });
if (res.code == 200) { };
ElMessage({ //修改合同金额
message: '修改成功', const changeContractPrice = (value: any, row: any) => {
type: 'success' updateTenderPlan({
}); ...row
getList(); }).then((res) => {
} if (res.code == 200) {
}); ElMessage({
} catch (error) { message: '修改成功',
console.log(error); type: 'success'
ElMessage({ });
message: '修改失败', getList();
type: 'error' }
}); });
} };
//上传投标文件
const handleSave = (row: any) => {
informationRef.value.open(row, planType.value);
};
const winTheBidRef = ref();
//上传中标文件
const handleWinTheBid = (row: any) => {
winTheBidRef.value.open(row, planType.value);
}; };
//删除 //删除
const delHandle = (row: any) => { const delHandle = (row: any) => {
@ -542,6 +630,58 @@ const getDetails = (row: any) => {
} }
}); });
}; };
const informationRef = ref();
const biddDialog = ref(false);
const biddViewData = ref<any>([]);
const biddViewRow = ref<any>({});
//查看招标文件
const biddView = async (row: any) => {
biddViewRow.value = row;
biddDialog.value = true;
const params = {
id: row.id
};
const res = await biddViewLook(params);
if (res.code == 200) {
res.data.forEach((item) => (item.bidStatus = biddViewRow.value.bidStatus));
biddViewData.value = res.data;
}
};
//删除文件
const delHandlebidd = (row: any) => {
const params = {
ids: row.id
};
delBiddView(params).then((res) => {
if (res.code == 200) {
ElMessage({
message: '删除成功',
type: 'success'
});
biddView(biddViewRow.value);
}
});
};
//修改状态
const editStatusBtn = (row: any) => {
editStatus({
...row
}).then((res) => {
if (res.code == 200) {
ElMessage({
message: '修改成功',
type: 'success'
});
getList();
}
});
};
//查看文件
const openPdf = (url: any) => {
window.open(url);
};
onMounted(() => { onMounted(() => {
getTabsList(); getTabsList();