投标管理
This commit is contained in:
@ -5,7 +5,7 @@ VITE_APP_TITLE = 煤科建管平台
|
|||||||
VITE_APP_ENV = 'development'
|
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