投标管理
This commit is contained in:
@ -5,7 +5,7 @@ VITE_APP_TITLE = 煤科建管平台
|
||||
VITE_APP_ENV = 'development'
|
||||
|
||||
# 开发环境
|
||||
VITE_APP_BASE_API = 'http://192.168.110.180:8899'
|
||||
VITE_APP_BASE_API = 'http://192.168.110.149:8899'
|
||||
|
||||
# 无人机接口地址
|
||||
|
||||
|
31
src/api/bidding/appointment/index.ts
Normal file
31
src/api/bidding/appointment/index.ts
Normal file
@ -0,0 +1,31 @@
|
||||
import request from '@/utils/request';
|
||||
|
||||
/**
|
||||
* 查询招标人员列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const biddingGetUser = (query) => {
|
||||
return request({
|
||||
url: '/bidding/biddingUser/getUser',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 新增招投标人员
|
||||
export const AddbiddingUser = (data) => {
|
||||
return request({
|
||||
url: '/bidding/biddingUser',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
};
|
||||
// 新增招投标人员
|
||||
export const biddingUserList = (projectId) => {
|
||||
return request({
|
||||
url: '/bidding/biddingUser/list',
|
||||
method: 'get',
|
||||
params: { projectId }
|
||||
});
|
||||
};
|
63
src/api/bidding/biddingLimitList/index.ts
Normal file
63
src/api/bidding/biddingLimitList/index.ts
Normal file
@ -0,0 +1,63 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import { BiddingLimitListVO, BiddingLimitListForm, BiddingLimitListQuery } from '@/api/bidding/biddingLimitList/types';
|
||||
|
||||
/**
|
||||
* 查询成本-投标列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listBiddingLimitList = (query?: BiddingLimitListQuery): AxiosPromise<BiddingLimitListVO[]> => {
|
||||
return request({
|
||||
url: '/bidding/biddingLimitList/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询成本-投标详细
|
||||
* @param id
|
||||
*/
|
||||
export const getBiddingLimitList = (id: string | number): AxiosPromise<BiddingLimitListVO> => {
|
||||
return request({
|
||||
url: '/bidding/biddingLimitList/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增成本-投标
|
||||
* @param data
|
||||
*/
|
||||
export const addBiddingLimitList = (data: BiddingLimitListForm) => {
|
||||
return request({
|
||||
url: '/bidding/biddingLimitList',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改成本-投标
|
||||
* @param data
|
||||
*/
|
||||
export const updateBiddingLimitList = (data: BiddingLimitListForm) => {
|
||||
return request({
|
||||
url: '/bidding/biddingLimitList',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除成本-投标
|
||||
* @param id
|
||||
*/
|
||||
export const delBiddingLimitList = (id: string | number | Array<string | number>) => {
|
||||
return request({
|
||||
url: '/bidding/biddingLimitList/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
201
src/api/bidding/biddingLimitList/types.ts
Normal file
201
src/api/bidding/biddingLimitList/types.ts
Normal file
@ -0,0 +1,201 @@
|
||||
export interface BiddingLimitListVO {
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
id: string | number;
|
||||
|
||||
/**
|
||||
* 项目Id
|
||||
*/
|
||||
projectId: string | number;
|
||||
|
||||
/**
|
||||
* 版本号
|
||||
*/
|
||||
versions: string;
|
||||
|
||||
/**
|
||||
* 表名
|
||||
*/
|
||||
sheet: string;
|
||||
|
||||
/**
|
||||
* 子ID
|
||||
*/
|
||||
sid: string | number;
|
||||
|
||||
/**
|
||||
* 父ID
|
||||
*/
|
||||
pid: string | number;
|
||||
|
||||
/**
|
||||
* 编号
|
||||
*/
|
||||
num: string;
|
||||
|
||||
/**
|
||||
* 名称
|
||||
*/
|
||||
name: string;
|
||||
|
||||
/**
|
||||
* 规格
|
||||
*/
|
||||
specification: string;
|
||||
|
||||
/**
|
||||
* 单位
|
||||
*/
|
||||
unit: string;
|
||||
|
||||
/**
|
||||
* 数量
|
||||
*/
|
||||
quantity: number;
|
||||
|
||||
/**
|
||||
* 单价
|
||||
*/
|
||||
unitPrice: number;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
remark: string;
|
||||
|
||||
}
|
||||
|
||||
export interface BiddingLimitListForm extends BaseEntity {
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
id?: string | number;
|
||||
|
||||
/**
|
||||
* 项目Id
|
||||
*/
|
||||
projectId?: string | number;
|
||||
|
||||
/**
|
||||
* 版本号
|
||||
*/
|
||||
versions?: string;
|
||||
|
||||
/**
|
||||
* 表名
|
||||
*/
|
||||
sheet?: string;
|
||||
|
||||
/**
|
||||
* 子ID
|
||||
*/
|
||||
sid?: string | number;
|
||||
|
||||
/**
|
||||
* 父ID
|
||||
*/
|
||||
pid?: string | number;
|
||||
|
||||
/**
|
||||
* 编号
|
||||
*/
|
||||
num?: string;
|
||||
|
||||
/**
|
||||
* 名称
|
||||
*/
|
||||
name?: string;
|
||||
|
||||
/**
|
||||
* 规格
|
||||
*/
|
||||
specification?: string;
|
||||
|
||||
/**
|
||||
* 单位
|
||||
*/
|
||||
unit?: string;
|
||||
|
||||
/**
|
||||
* 数量
|
||||
*/
|
||||
quantity?: number;
|
||||
|
||||
/**
|
||||
* 单价
|
||||
*/
|
||||
unitPrice?: number;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
remark?: string;
|
||||
|
||||
}
|
||||
|
||||
export interface BiddingLimitListQuery extends PageQuery {
|
||||
|
||||
/**
|
||||
* 项目Id
|
||||
*/
|
||||
projectId?: string | number;
|
||||
|
||||
/**
|
||||
* 版本号
|
||||
*/
|
||||
versions?: string;
|
||||
|
||||
/**
|
||||
* 表名
|
||||
*/
|
||||
sheet?: string;
|
||||
|
||||
/**
|
||||
* 子ID
|
||||
*/
|
||||
sid?: string | number;
|
||||
|
||||
/**
|
||||
* 父ID
|
||||
*/
|
||||
pid?: string | number;
|
||||
|
||||
/**
|
||||
* 编号
|
||||
*/
|
||||
num?: string;
|
||||
|
||||
/**
|
||||
* 名称
|
||||
*/
|
||||
name?: string;
|
||||
|
||||
/**
|
||||
* 规格
|
||||
*/
|
||||
specification?: string;
|
||||
|
||||
/**
|
||||
* 单位
|
||||
*/
|
||||
unit?: string;
|
||||
|
||||
/**
|
||||
* 数量
|
||||
*/
|
||||
quantity?: number;
|
||||
|
||||
/**
|
||||
* 单价
|
||||
*/
|
||||
unitPrice?: number;
|
||||
|
||||
/**
|
||||
* 日期范围参数
|
||||
*/
|
||||
params?: any;
|
||||
}
|
||||
|
||||
|
||||
|
63
src/api/bidding/biddingUser/index.ts
Normal file
63
src/api/bidding/biddingUser/index.ts
Normal file
@ -0,0 +1,63 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import { BiddingUserVO, BiddingUserForm, BiddingUserQuery } from '@/api/bidding/biddingUser/types';
|
||||
|
||||
/**
|
||||
* 查询招投标人员列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listBiddingUser = (query?: BiddingUserQuery): AxiosPromise<BiddingUserVO[]> => {
|
||||
return request({
|
||||
url: '/bidding/biddingUser/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询招投标人员详细
|
||||
* @param id
|
||||
*/
|
||||
export const getBiddingUser = (id: string | number): AxiosPromise<BiddingUserVO> => {
|
||||
return request({
|
||||
url: '/bidding/biddingUser/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增招投标人员
|
||||
* @param data
|
||||
*/
|
||||
export const addBiddingUser = (data: BiddingUserForm) => {
|
||||
return request({
|
||||
url: '/bidding/biddingUser',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改招投标人员
|
||||
* @param data
|
||||
*/
|
||||
export const updateBiddingUser = (data: BiddingUserForm) => {
|
||||
return request({
|
||||
url: '/bidding/biddingUser',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除招投标人员
|
||||
* @param id
|
||||
*/
|
||||
export const delBiddingUser = (id: string | number | Array<string | number>) => {
|
||||
return request({
|
||||
url: '/bidding/biddingUser/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
71
src/api/bidding/biddingUser/types.ts
Normal file
71
src/api/bidding/biddingUser/types.ts
Normal file
@ -0,0 +1,71 @@
|
||||
export interface BiddingUserVO {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
id: string | number;
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
projectId: string | number;
|
||||
|
||||
/**
|
||||
* 招投标人员id
|
||||
*/
|
||||
userId: string | number;
|
||||
|
||||
/**
|
||||
* 招投标人员姓名
|
||||
*/
|
||||
userName: string;
|
||||
|
||||
}
|
||||
|
||||
export interface BiddingUserForm extends BaseEntity {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
id?: string | number;
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
projectId?: string | number;
|
||||
|
||||
/**
|
||||
* 招投标人员id
|
||||
*/
|
||||
userId?: string | number;
|
||||
|
||||
/**
|
||||
* 招投标人员姓名
|
||||
*/
|
||||
userName?: string;
|
||||
|
||||
}
|
||||
|
||||
export interface BiddingUserQuery extends PageQuery {
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
projectId?: string | number;
|
||||
|
||||
/**
|
||||
* 招投标人员id
|
||||
*/
|
||||
userId?: string | number;
|
||||
|
||||
/**
|
||||
* 招投标人员姓名
|
||||
*/
|
||||
userName?: string;
|
||||
|
||||
/**
|
||||
* 日期范围参数
|
||||
*/
|
||||
params?: any;
|
||||
}
|
||||
|
||||
|
||||
|
63
src/api/bidding/listOfWinningBids/index.ts
Normal file
63
src/api/bidding/listOfWinningBids/index.ts
Normal file
@ -0,0 +1,63 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import { ListOfWinningBidsVO, ListOfWinningBidsForm, ListOfWinningBidsQuery } from '@/api/bidding/listOfWinningBids/types';
|
||||
|
||||
/**
|
||||
* 查询中标项目一览列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listListOfWinningBids = (query?: ListOfWinningBidsQuery): AxiosPromise<ListOfWinningBidsVO[]> => {
|
||||
return request({
|
||||
url: '/bidding/listOfWinningBids/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询中标项目一览详细
|
||||
* @param id
|
||||
*/
|
||||
export const getListOfWinningBids = (id: string | number): AxiosPromise<ListOfWinningBidsVO> => {
|
||||
return request({
|
||||
url: '/bidding/listOfWinningBids/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增中标项目一览
|
||||
* @param data
|
||||
*/
|
||||
export const addListOfWinningBids = (data: ListOfWinningBidsForm) => {
|
||||
return request({
|
||||
url: '/bidding/listOfWinningBids',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改中标项目一览
|
||||
* @param data
|
||||
*/
|
||||
export const updateListOfWinningBids = (data: ListOfWinningBidsForm) => {
|
||||
return request({
|
||||
url: '/bidding/listOfWinningBids',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除中标项目一览
|
||||
* @param id
|
||||
*/
|
||||
export const delListOfWinningBids = (id: string | number | Array<string | number>) => {
|
||||
return request({
|
||||
url: '/bidding/listOfWinningBids/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
296
src/api/bidding/listOfWinningBids/types.ts
Normal file
296
src/api/bidding/listOfWinningBids/types.ts
Normal file
@ -0,0 +1,296 @@
|
||||
export interface ListOfWinningBidsVO {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
id: string | number;
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
projectId: string | number;
|
||||
|
||||
/**
|
||||
* 项目状态
|
||||
*/
|
||||
projectStatus: string;
|
||||
|
||||
/**
|
||||
* 项目名称
|
||||
*/
|
||||
projectName: string;
|
||||
|
||||
/**
|
||||
* 中标价(原币)
|
||||
*/
|
||||
winningBidOriginal: string | number;
|
||||
|
||||
/**
|
||||
* 汇率
|
||||
*/
|
||||
exchangeRate: number;
|
||||
|
||||
/**
|
||||
* 币种
|
||||
*/
|
||||
currency: string;
|
||||
|
||||
/**
|
||||
* 所属主体
|
||||
*/
|
||||
subject: string;
|
||||
|
||||
/**
|
||||
* 中标价
|
||||
*/
|
||||
winningBid: string | number;
|
||||
|
||||
/**
|
||||
* 中标日期
|
||||
*/
|
||||
bidWinningDate: string | number;
|
||||
|
||||
/**
|
||||
* 投标保证金
|
||||
*/
|
||||
bidDeposit: string | number;
|
||||
|
||||
/**
|
||||
* 是否退还
|
||||
*/
|
||||
whetherSendBack: string;
|
||||
|
||||
/**
|
||||
* 建设单位(客户)
|
||||
*/
|
||||
construction: string;
|
||||
|
||||
/**
|
||||
* 总造价
|
||||
*/
|
||||
totalCost: number;
|
||||
|
||||
/**
|
||||
* 立项申请人
|
||||
*/
|
||||
projectApplicant: string;
|
||||
|
||||
/**
|
||||
* 立项部门
|
||||
*/
|
||||
projectApplicantDept: string;
|
||||
|
||||
/**
|
||||
* 立项申请日期
|
||||
*/
|
||||
projectApplicantTime: string;
|
||||
|
||||
/**
|
||||
* 流程状态
|
||||
*/
|
||||
processStatus: string;
|
||||
|
||||
/**
|
||||
* 项目编号
|
||||
*/
|
||||
projectNumbering: string;
|
||||
|
||||
}
|
||||
|
||||
export interface ListOfWinningBidsForm extends BaseEntity {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
id?: string | number;
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
projectId?: string | number;
|
||||
|
||||
/**
|
||||
* 项目状态
|
||||
*/
|
||||
projectStatus?: string;
|
||||
|
||||
/**
|
||||
* 项目名称
|
||||
*/
|
||||
projectName?: string;
|
||||
|
||||
/**
|
||||
* 中标价(原币)
|
||||
*/
|
||||
winningBidOriginal?: string | number;
|
||||
|
||||
/**
|
||||
* 汇率
|
||||
*/
|
||||
exchangeRate?: number;
|
||||
|
||||
/**
|
||||
* 币种
|
||||
*/
|
||||
currency?: string;
|
||||
|
||||
/**
|
||||
* 所属主体
|
||||
*/
|
||||
subject?: string;
|
||||
|
||||
/**
|
||||
* 中标价
|
||||
*/
|
||||
winningBid?: string | number;
|
||||
|
||||
/**
|
||||
* 中标日期
|
||||
*/
|
||||
bidWinningDate?: string | number;
|
||||
|
||||
/**
|
||||
* 投标保证金
|
||||
*/
|
||||
bidDeposit?: string | number;
|
||||
|
||||
/**
|
||||
* 是否退还
|
||||
*/
|
||||
whetherSendBack?: string;
|
||||
|
||||
/**
|
||||
* 建设单位(客户)
|
||||
*/
|
||||
construction?: string;
|
||||
|
||||
/**
|
||||
* 总造价
|
||||
*/
|
||||
totalCost?: number;
|
||||
|
||||
/**
|
||||
* 立项申请人
|
||||
*/
|
||||
projectApplicant?: string;
|
||||
|
||||
/**
|
||||
* 立项部门
|
||||
*/
|
||||
projectApplicantDept?: string;
|
||||
|
||||
/**
|
||||
* 立项申请日期
|
||||
*/
|
||||
projectApplicantTime?: string;
|
||||
|
||||
/**
|
||||
* 流程状态
|
||||
*/
|
||||
processStatus?: string;
|
||||
|
||||
/**
|
||||
* 项目编号
|
||||
*/
|
||||
projectNumbering?: string;
|
||||
|
||||
}
|
||||
|
||||
export interface ListOfWinningBidsQuery extends PageQuery {
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
projectId?: string | number;
|
||||
|
||||
/**
|
||||
* 项目状态
|
||||
*/
|
||||
projectStatus?: string;
|
||||
|
||||
/**
|
||||
* 项目名称
|
||||
*/
|
||||
projectName?: string;
|
||||
|
||||
/**
|
||||
* 中标价(原币)
|
||||
*/
|
||||
winningBidOriginal?: string | number;
|
||||
|
||||
/**
|
||||
* 汇率
|
||||
*/
|
||||
exchangeRate?: number;
|
||||
|
||||
/**
|
||||
* 币种
|
||||
*/
|
||||
currency?: string;
|
||||
|
||||
/**
|
||||
* 所属主体
|
||||
*/
|
||||
subject?: string;
|
||||
|
||||
/**
|
||||
* 中标价
|
||||
*/
|
||||
winningBid?: string | number;
|
||||
|
||||
/**
|
||||
* 中标日期
|
||||
*/
|
||||
bidWinningDate?: string | number;
|
||||
|
||||
/**
|
||||
* 投标保证金
|
||||
*/
|
||||
bidDeposit?: string | number;
|
||||
|
||||
/**
|
||||
* 是否退还
|
||||
*/
|
||||
whetherSendBack?: string;
|
||||
|
||||
/**
|
||||
* 建设单位(客户)
|
||||
*/
|
||||
construction?: string;
|
||||
|
||||
/**
|
||||
* 总造价
|
||||
*/
|
||||
totalCost?: number;
|
||||
|
||||
/**
|
||||
* 立项申请人
|
||||
*/
|
||||
projectApplicant?: string;
|
||||
|
||||
/**
|
||||
* 立项部门
|
||||
*/
|
||||
projectApplicantDept?: string;
|
||||
|
||||
/**
|
||||
* 立项申请日期
|
||||
*/
|
||||
projectApplicantTime?: string;
|
||||
|
||||
/**
|
||||
* 流程状态
|
||||
*/
|
||||
processStatus?: string;
|
||||
|
||||
/**
|
||||
* 项目编号
|
||||
*/
|
||||
projectNumbering?: string;
|
||||
|
||||
/**
|
||||
* 日期范围参数
|
||||
*/
|
||||
params?: any;
|
||||
}
|
||||
|
||||
|
||||
|
318
src/views/biddingManagemen/appointment/index.vue
Normal file
318
src/views/biddingManagemen/appointment/index.vue
Normal file
@ -0,0 +1,318 @@
|
||||
<template>
|
||||
<div class="p-6 bg-gray-50 main">
|
||||
<div class="appWidth1 mx-auto mt-38 bg-white rounded-xl shadow-sm overflow-hidden transition-all duration-300 hover:shadow-md">
|
||||
<!-- 表单标题区域 -->
|
||||
<div class="bg-gradient-to-r from-blue-500 to-blue-600 text-white p-6">
|
||||
<h2 class="text-2xl font-bold flex items-center"><i class="el-icon-user-circle mr-3"></i>人员配置</h2>
|
||||
<p class="text-blue-100 mt-2 opacity-90">请配置投标管理人员信息</p>
|
||||
<!-- ,带 <span class="text-red-300">*</span> 为必填项 -->
|
||||
<el-button
|
||||
@click="isDisabled = false"
|
||||
class="px-8 py-2.5 transition-all duration-300 font-medium"
|
||||
v-if="isDisabled"
|
||||
v-hasPermi="['cailiaoshebei:purchaseUser:addOrUpdate']"
|
||||
>
|
||||
点击编辑
|
||||
</el-button>
|
||||
</div>
|
||||
|
||||
<!-- 表单内容区域 -->
|
||||
<el-form ref="leaveFormRef" :model="form" :rules="rules" label-width="120px" class="p-6 pt30 space-y-6 h75" :disabled="isDisabled">
|
||||
<!-- 设计负责人 -->
|
||||
<div class="fonts w60% ma">
|
||||
<el-form-item label="招投标专员" prop="userId" class="mb-4">
|
||||
<el-select
|
||||
v-model="form.userId"
|
||||
placeholder="请选择招投标专员"
|
||||
class="w-full transition-all duration-300 border-gray-300 focus:border-blue-400 focus:ring-1 focus:ring-blue-400"
|
||||
>
|
||||
<el-option v-for="item in userList" :key="item.userId" :label="item.userName" :value="item.userId" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<!-- 提交按钮区域 -->
|
||||
<div class="flex justify-center space-x-6 mt-8 pt-6 border-t border-gray-100" v-if="!isDisabled">
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="submitForm"
|
||||
icon="Check"
|
||||
class="px-8 py-2.5 transition-all duration-300 transform hover:scale-105 bg-blue-500 hover:bg-blue-600 text-white font-medium"
|
||||
v-hasPermi="['cailiaoshebei:purchaseUser:addOrUpdate']"
|
||||
>
|
||||
确认提交
|
||||
</el-button>
|
||||
<el-button @click="resetForm" icon="Refresh" class="px-8 py-2.5 transition-all duration-300 border-gray-300 hover:bg-gray-100 font-medium">
|
||||
重置
|
||||
</el-button>
|
||||
</div>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup name="PersonnelForm" lang="ts">
|
||||
import { ref, reactive, computed, onMounted, toRefs } from 'vue';
|
||||
import { getCurrentInstance } from 'vue';
|
||||
import type { ComponentInternalInstance } from 'vue';
|
||||
import { useUserStoreHook } from '@/store/modules/user';
|
||||
import { ElMessage, ElLoading } from 'element-plus';
|
||||
import { biddingGetUser, AddbiddingUser, biddingUserList } from '@/api/bidding/appointment';
|
||||
|
||||
// 获取当前实例
|
||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||
// 获取用户 store
|
||||
const userStore = useUserStoreHook();
|
||||
// 从 store 中获取当前选中的项目
|
||||
const currentProject = computed(() => userStore.selectedProject);
|
||||
// 专业字典数据
|
||||
const { des_user_major } = toRefs<any>(proxy?.useDict('des_user_major'));
|
||||
const isDisabled = ref(false);
|
||||
|
||||
// 表单数据
|
||||
const form = reactive({
|
||||
id: null,
|
||||
projectId: currentProject.value?.id,
|
||||
userId: null // 设计负责人
|
||||
});
|
||||
|
||||
// 表单验证规则
|
||||
const rules = reactive({
|
||||
userId: [{ required: true, message: '请选择招投标专员', trigger: 'change' }]
|
||||
});
|
||||
|
||||
// 用户列表
|
||||
const userList = ref([]);
|
||||
|
||||
// 表单引用
|
||||
const leaveFormRef = ref();
|
||||
|
||||
/** 查询当前部门的所有用户 */
|
||||
const getDeptAllUser = async (deptId: any) => {
|
||||
const res = await biddingGetUser({});
|
||||
userList.value = res.data;
|
||||
};
|
||||
|
||||
/** 查询当前表单数据并回显 */
|
||||
const getBiddingUser = async () => {
|
||||
if (!currentProject.value?.id) return;
|
||||
const loading = ElLoading.service({
|
||||
lock: true,
|
||||
text: '加载配置数据中...',
|
||||
background: 'rgba(255, 255, 255, 0.7)'
|
||||
});
|
||||
try {
|
||||
const res = await biddingUserList(currentProject.value?.id);
|
||||
if (res.code == 200) {
|
||||
if (!res.data) {
|
||||
resetForm();
|
||||
form.id = null;
|
||||
isDisabled.value = false;
|
||||
return;
|
||||
}
|
||||
Object.assign(form, res.data);
|
||||
isDisabled.value = true;
|
||||
}
|
||||
} catch (error) {
|
||||
ElMessage.error('获取配置数据失败');
|
||||
// 添加默认空项
|
||||
} finally {
|
||||
loading.close();
|
||||
}
|
||||
};
|
||||
|
||||
/** 提交表单 */
|
||||
const submitForm = async () => {
|
||||
if (!leaveFormRef.value) return;
|
||||
try {
|
||||
// 表单验证
|
||||
await leaveFormRef.value.validate();
|
||||
let userName = userList.value.find((item) => item.userId === form.userId)?.userName;
|
||||
const data = {
|
||||
projectId: currentProject.value?.id,
|
||||
userId: form.userId,
|
||||
userName,
|
||||
id: form.id
|
||||
};
|
||||
// 提交到后端
|
||||
const res = await AddbiddingUser(data);
|
||||
if (res.code === 200) {
|
||||
ElMessage.success('提交成功');
|
||||
isDisabled.value = true;
|
||||
} else {
|
||||
ElMessage.error(res.msg || '提交失败');
|
||||
}
|
||||
} catch (error) {
|
||||
ElMessage.error('请完善表单信息后再提交');
|
||||
} finally {
|
||||
// 关闭加载状态
|
||||
ElLoading.service().close();
|
||||
}
|
||||
};
|
||||
|
||||
/** 重置表单 */
|
||||
const resetForm = () => {
|
||||
if (leaveFormRef.value) {
|
||||
leaveFormRef.value.resetFields();
|
||||
}
|
||||
};
|
||||
|
||||
// 页面挂载时初始化数据
|
||||
onMounted(() => {
|
||||
// 先获取用户列表,再加载表单数据
|
||||
getDeptAllUser(userStore.deptId).then(() => {
|
||||
getBiddingUser();
|
||||
});
|
||||
});
|
||||
|
||||
//监听项目id刷新数据
|
||||
const listeningProject = watch(
|
||||
() => currentProject.value?.id,
|
||||
(nid, oid) => {
|
||||
getDeptAllUser(userStore.deptId).then(() => {
|
||||
getBiddingUser();
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
onUnmounted(() => {
|
||||
listeningProject();
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.main {
|
||||
height: calc(100vh - 90px);
|
||||
}
|
||||
.appWidth1 {
|
||||
width: 50vw;
|
||||
max-width: 1200px;
|
||||
.el-select__wrapper {
|
||||
width: 16vw !important;
|
||||
}
|
||||
.el-button--small {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.fonts {
|
||||
.el-form-item--default .el-form-item__label {
|
||||
font-size: 18px !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 自定义动画
|
||||
@keyframes fadeIn {
|
||||
from {
|
||||
opacity: 0;
|
||||
transform: translateY(10px);
|
||||
}
|
||||
to {
|
||||
opacity: 1;
|
||||
transform: translateY(0);
|
||||
}
|
||||
}
|
||||
|
||||
.animate-fadeIn {
|
||||
animation: fadeIn 0.3s ease-out forwards;
|
||||
}
|
||||
|
||||
// 表单样式优化
|
||||
::v-deep .el-form {
|
||||
--el-form-item-margin-bottom: 0;
|
||||
}
|
||||
|
||||
::v-deep .el-form-item {
|
||||
margin-bottom: 0;
|
||||
|
||||
&__label {
|
||||
font-weight: 500;
|
||||
color: #4e5969;
|
||||
padding: 0 0 8px 0;
|
||||
}
|
||||
|
||||
&__content {
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
|
||||
::v-deep .el-select {
|
||||
width: 100%;
|
||||
|
||||
.el-input__inner {
|
||||
border-radius: 6px;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
&:hover .el-input__inner {
|
||||
border-color: #66b1ff;
|
||||
}
|
||||
|
||||
&.el-select-focus .el-input__inner {
|
||||
border-color: #409eff;
|
||||
box-shadow: 0 0 0 2px rgba(64, 158, 255, 0.2);
|
||||
}
|
||||
}
|
||||
|
||||
::v-deep .el-button {
|
||||
border-radius: 6px;
|
||||
padding: 8px 16px;
|
||||
|
||||
&--primary {
|
||||
background-color: #409eff;
|
||||
border-color: #409eff;
|
||||
|
||||
&:hover {
|
||||
background-color: #66b1ff;
|
||||
border-color: #66b1ff;
|
||||
}
|
||||
}
|
||||
|
||||
&--danger {
|
||||
background-color: #f56c6c;
|
||||
border-color: #f56c6c;
|
||||
|
||||
&:hover {
|
||||
background-color: #f78989;
|
||||
border-color: #f78989;
|
||||
}
|
||||
|
||||
&:disabled {
|
||||
background-color: #ffcccc;
|
||||
border-color: #ffbbbb;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 响应式网格布局
|
||||
.grid {
|
||||
display: grid;
|
||||
}
|
||||
|
||||
.grid-cols-1 {
|
||||
grid-template-columns: repeat(1, minmax(0, 1fr));
|
||||
}
|
||||
|
||||
.md\:grid-cols-2 {
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
}
|
||||
|
||||
.gap-4 {
|
||||
gap: 1rem;
|
||||
}
|
||||
|
||||
// 适配小屏幕
|
||||
@media (max-width: 768px) {
|
||||
.appWidth1 {
|
||||
width: 95vw;
|
||||
}
|
||||
|
||||
::v-deep .el-form {
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
::v-deep .el-form-item__label {
|
||||
width: 100px;
|
||||
}
|
||||
}
|
||||
</style>
|
342
src/views/biddingManagemen/listOfWinningBids/index.vue
Normal file
342
src/views/biddingManagemen/listOfWinningBids/index.vue
Normal file
@ -0,0 +1,342 @@
|
||||
<template>
|
||||
<div class="p-2">
|
||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||
<div v-show="showSearch" class="mb-[10px]">
|
||||
<el-card shadow="hover">
|
||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true" label-width="110px">
|
||||
<el-form-item label="项目名称" prop="projectName">
|
||||
<el-input v-model="queryParams.projectName" placeholder="请输入项目名称" clearable @keyup.enter="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="建设单位" prop="construction">
|
||||
<el-input v-model="queryParams.construction" placeholder="请输入建设单位" clearable @keyup.enter="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="立项申请人" prop="projectApplicant">
|
||||
<el-input v-model="queryParams.projectApplicant" 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-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
</div>
|
||||
</transition>
|
||||
<el-card shadow="never">
|
||||
<template #header>
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['bidding:listOfWinningBids:add']">新增</el-button>
|
||||
</el-col>
|
||||
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
</template>
|
||||
|
||||
<el-table v-loading="loading" :data="listOfWinningBidsList" @selection-change="handleSelectionChange">
|
||||
<!-- <el-table-column type="selection" width="55" align="center" /> -->
|
||||
<el-table-column label="序号" align="center" type="index" width="60" />
|
||||
<el-table-column label="项目状态" align="center" prop="projectStatus" />
|
||||
<el-table-column label="项目名称" align="center" prop="projectName" />
|
||||
<el-table-column label="中标价" align="center" prop="winningBidOriginal" />
|
||||
<el-table-column label="汇率" align="center" prop="exchangeRate" />
|
||||
<el-table-column label="币种" align="center" prop="currency" />
|
||||
<el-table-column label="所属主体" align="center" prop="subject" />
|
||||
<el-table-column label="中标价" align="center" prop="winningBid" />
|
||||
<el-table-column label="中标日期" align="center" prop="bidWinningDate" width="180">
|
||||
<template #default="scope">
|
||||
<span>{{ parseTime(scope.row.bidWinningDate, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="投标保证金" align="center" prop="bidDeposit" width="120" />
|
||||
<el-table-column label="是否退还" align="center" prop="whetherSendBack" />
|
||||
<el-table-column label="建设单位" align="center" prop="construction" />
|
||||
<el-table-column label="总造价" align="center" prop="totalCost" />
|
||||
<el-table-column label="立项申请人" align="center" prop="projectApplicant" width="120" />
|
||||
<el-table-column label="立项部门" align="center" prop="projectApplicantDept" />
|
||||
<el-table-column label="立项申请日期" align="center" prop="projectApplicantTime" width="160">
|
||||
<template #default="scope">
|
||||
<span>{{ parseTime(scope.row.projectApplicantTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="流程状态" align="center" prop="processStatus" />
|
||||
<el-table-column label="项目编号" align="center" prop="projectNumbering" />
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="200">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['bidding:listOfWinningBids:edit']"
|
||||
>修改</el-button
|
||||
>
|
||||
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['bidding:listOfWinningBids:remove']">
|
||||
删除</el-button
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
|
||||
</el-card>
|
||||
<!-- 添加或修改中标项目一览对话框 -->
|
||||
<el-dialog :title="dialog.title" v-model="dialog.visible" width="800px" append-to-body>
|
||||
<el-form ref="listOfWinningBidsFormRef" :model="form" :rules="rules" label-width="110px">
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="项目名称" prop="projectName"> <el-input v-model="form.projectName" placeholder="请输入项目名称" /> </el-form-item
|
||||
></el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="中标价" prop="winningBidOriginal">
|
||||
<el-input v-model="form.winningBidOriginal" placeholder="请输入中标价" /> </el-form-item
|
||||
></el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="汇率" prop="exchangeRate"> <el-input v-model="form.exchangeRate" placeholder="请输入汇率" /> </el-form-item
|
||||
></el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="币种" prop="currency"> <el-input v-model="form.currency" placeholder="请输入币种" /> </el-form-item
|
||||
></el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="所属主体" prop="subject"> <el-input v-model="form.subject" placeholder="请输入所属主体" /> </el-form-item
|
||||
></el-col>
|
||||
<el-col :span="12"
|
||||
><el-form-item label="中标价" prop="winningBid"> <el-input v-model="form.winningBid" placeholder="请输入中标价" /> </el-form-item
|
||||
></el-col>
|
||||
<el-col :span="12"
|
||||
><el-form-item label="中标日期" prop="bidWinningDate">
|
||||
<el-date-picker
|
||||
clearable
|
||||
v-model="form.bidWinningDate"
|
||||
type="date"
|
||||
format="YYYY-MM-DD"
|
||||
value-format="YYYY-MM-DD"
|
||||
placeholder="请选择中标日期"
|
||||
>
|
||||
</el-date-picker> </el-form-item
|
||||
></el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="投标保证金" prop="bidDeposit"> <el-input v-model="form.bidDeposit" placeholder="请输入投标保证金" /> </el-form-item
|
||||
></el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="是否退还" prop="whetherSendBack">
|
||||
<el-input v-model="form.whetherSendBack" placeholder="请输入是否退还" /> </el-form-item
|
||||
></el-col>
|
||||
<el-col :span="12"
|
||||
><el-form-item label="建设单位" prop="construction"> <el-input v-model="form.construction" placeholder="请输入建设单位" /> </el-form-item
|
||||
></el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="总造价" prop="totalCost"> <el-input v-model="form.totalCost" placeholder="请输入总造价" /> </el-form-item
|
||||
></el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="立项申请人" prop="projectApplicant">
|
||||
<el-input v-model="form.projectApplicant" placeholder="请输入立项申请人" /> </el-form-item
|
||||
></el-col>
|
||||
<el-col :span="12"
|
||||
><el-form-item label="立项部门" prop="projectApplicantDept">
|
||||
<el-input v-model="form.projectApplicantDept" placeholder="请输入立项部门" /> </el-form-item
|
||||
></el-col>
|
||||
<el-col :span="12"
|
||||
><el-form-item label="立项申请日期" prop="projectApplicantTime">
|
||||
<el-date-picker
|
||||
clearable
|
||||
v-model="form.projectApplicantTime"
|
||||
type="date"
|
||||
format="YYYY-MM-DD"
|
||||
value-format="YYYY-MM-DD"
|
||||
placeholder="请选择立项申请日期"
|
||||
>
|
||||
</el-date-picker> </el-form-item
|
||||
></el-col>
|
||||
<el-col :span="12"
|
||||
><el-form-item label="项目编号" prop="projectNumbering">
|
||||
<el-input v-model="form.projectNumbering" placeholder="请输入项目编号" /> </el-form-item
|
||||
></el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup name="ListOfWinningBids" lang="ts">
|
||||
import {
|
||||
listListOfWinningBids,
|
||||
getListOfWinningBids,
|
||||
delListOfWinningBids,
|
||||
addListOfWinningBids,
|
||||
updateListOfWinningBids
|
||||
} from '@/api/bidding/listOfWinningBids';
|
||||
import { ListOfWinningBidsVO, ListOfWinningBidsQuery, ListOfWinningBidsForm } from '@/api/bidding/listOfWinningBids/types';
|
||||
import { useUserStoreHook } from '@/store/modules/user';
|
||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||
// 获取用户 store
|
||||
const userStore = useUserStoreHook();
|
||||
// 从 store 中获取当前选中的项目
|
||||
const currentProject = computed(() => userStore.selectedProject);
|
||||
const listOfWinningBidsList = ref<ListOfWinningBidsVO[]>([]);
|
||||
const buttonLoading = ref(false);
|
||||
const loading = ref(true);
|
||||
const showSearch = ref(true);
|
||||
const ids = ref<Array<string | number>>([]);
|
||||
const single = ref(true);
|
||||
const multiple = ref(true);
|
||||
const total = ref(0);
|
||||
|
||||
const queryFormRef = ref<ElFormInstance>();
|
||||
const listOfWinningBidsFormRef = ref<ElFormInstance>();
|
||||
|
||||
const dialog = reactive<DialogOption>({
|
||||
visible: false,
|
||||
title: ''
|
||||
});
|
||||
|
||||
const initFormData: ListOfWinningBidsForm = {
|
||||
id: undefined,
|
||||
projectId: currentProject.value?.id,
|
||||
projectStatus: undefined,
|
||||
projectName: undefined,
|
||||
winningBidOriginal: undefined,
|
||||
exchangeRate: undefined,
|
||||
currency: undefined,
|
||||
subject: undefined,
|
||||
winningBid: undefined,
|
||||
bidWinningDate: undefined,
|
||||
bidDeposit: undefined,
|
||||
whetherSendBack: undefined,
|
||||
construction: undefined,
|
||||
totalCost: undefined,
|
||||
projectApplicant: undefined,
|
||||
projectApplicantDept: undefined,
|
||||
projectApplicantTime: undefined,
|
||||
processStatus: undefined,
|
||||
projectNumbering: undefined
|
||||
};
|
||||
const data = reactive<PageData<ListOfWinningBidsForm, ListOfWinningBidsQuery>>({
|
||||
form: { ...initFormData },
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
projectId: currentProject.value?.id,
|
||||
projectStatus: undefined,
|
||||
projectName: undefined,
|
||||
winningBidOriginal: undefined,
|
||||
exchangeRate: undefined,
|
||||
currency: undefined,
|
||||
subject: undefined,
|
||||
winningBid: undefined,
|
||||
bidWinningDate: undefined,
|
||||
bidDeposit: undefined,
|
||||
whetherSendBack: undefined,
|
||||
construction: undefined,
|
||||
totalCost: undefined,
|
||||
projectApplicant: undefined,
|
||||
projectApplicantDept: undefined,
|
||||
projectApplicantTime: undefined,
|
||||
processStatus: undefined,
|
||||
projectNumbering: undefined,
|
||||
params: {}
|
||||
},
|
||||
rules: {
|
||||
id: [{ required: true, message: '不能为空', trigger: 'blur' }],
|
||||
projectId: [{ required: true, message: '项目id不能为空', trigger: 'blur' }]
|
||||
}
|
||||
});
|
||||
|
||||
const { queryParams, form, rules } = toRefs(data);
|
||||
|
||||
/** 查询中标项目一览列表 */
|
||||
const getList = async () => {
|
||||
loading.value = true;
|
||||
const res = await listListOfWinningBids(queryParams.value);
|
||||
listOfWinningBidsList.value = res.rows;
|
||||
total.value = res.total;
|
||||
loading.value = false;
|
||||
};
|
||||
|
||||
/** 取消按钮 */
|
||||
const cancel = () => {
|
||||
reset();
|
||||
dialog.visible = false;
|
||||
};
|
||||
|
||||
/** 表单重置 */
|
||||
const reset = () => {
|
||||
form.value = { ...initFormData };
|
||||
listOfWinningBidsFormRef.value?.resetFields();
|
||||
};
|
||||
|
||||
/** 搜索按钮操作 */
|
||||
const handleQuery = () => {
|
||||
queryParams.value.pageNum = 1;
|
||||
getList();
|
||||
};
|
||||
|
||||
/** 重置按钮操作 */
|
||||
const resetQuery = () => {
|
||||
queryFormRef.value?.resetFields();
|
||||
handleQuery();
|
||||
};
|
||||
|
||||
/** 多选框选中数据 */
|
||||
const handleSelectionChange = (selection: ListOfWinningBidsVO[]) => {
|
||||
ids.value = selection.map((item) => item.id);
|
||||
single.value = selection.length != 1;
|
||||
multiple.value = !selection.length;
|
||||
};
|
||||
|
||||
/** 新增按钮操作 */
|
||||
const handleAdd = () => {
|
||||
reset();
|
||||
dialog.visible = true;
|
||||
dialog.title = '添加中标项目一览';
|
||||
};
|
||||
|
||||
/** 修改按钮操作 */
|
||||
const handleUpdate = async (row?: ListOfWinningBidsVO) => {
|
||||
reset();
|
||||
const _id = row?.id || ids.value[0];
|
||||
const res = await getListOfWinningBids(_id);
|
||||
Object.assign(form.value, res.data);
|
||||
dialog.visible = true;
|
||||
dialog.title = '修改中标项目一览';
|
||||
};
|
||||
|
||||
/** 提交按钮 */
|
||||
const submitForm = () => {
|
||||
listOfWinningBidsFormRef.value?.validate(async (valid: boolean) => {
|
||||
if (valid) {
|
||||
buttonLoading.value = true;
|
||||
if (form.value.id) {
|
||||
await updateListOfWinningBids(form.value).finally(() => (buttonLoading.value = false));
|
||||
} else {
|
||||
await addListOfWinningBids(form.value).finally(() => (buttonLoading.value = false));
|
||||
}
|
||||
proxy?.$modal.msgSuccess('操作成功');
|
||||
dialog.visible = false;
|
||||
await getList();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/** 删除按钮操作 */
|
||||
const handleDelete = async (row?: ListOfWinningBidsVO) => {
|
||||
const _ids = row?.id || ids.value;
|
||||
await proxy?.$modal.confirm('是否确认删除中标项目一览编号为"' + _ids + '"的数据项?').finally(() => (loading.value = false));
|
||||
await delListOfWinningBids(_ids);
|
||||
proxy?.$modal.msgSuccess('删除成功');
|
||||
await getList();
|
||||
};
|
||||
|
||||
/** 导出按钮操作 */
|
||||
const handleExport = () => {
|
||||
proxy?.download(
|
||||
'bidding/listOfWinningBids/export',
|
||||
{
|
||||
...queryParams.value
|
||||
},
|
||||
`listOfWinningBids_${new Date().getTime()}.xlsx`
|
||||
);
|
||||
};
|
||||
|
||||
onMounted(() => {
|
||||
getList();
|
||||
});
|
||||
</script>
|
Reference in New Issue
Block a user