投标功能开发

This commit is contained in:
xd 2024-07-14 14:18:21 +08:00
parent 5fe4322b59
commit 34f226fd76
17 changed files with 2748 additions and 3 deletions

View File

@ -0,0 +1,11 @@
#for tests only !
#Sun Jul 14 09:24:48 CST 2024
jco.destination.pool_capacity=10
jco.client.lang=ZH
jco.client.ashost=172.19.0.125
jco.client.saprouter=
jco.client.user=RFC
jco.client.sysnr=00
jco.destination.peak_limit=10
jco.client.passwd=wl1ohKB{(qG12134rfI2_aP1$-R2Li3KI(-4`GAN*gJkQ1]B
jco.client.client=800

View File

@ -0,0 +1,243 @@
package com.ruoyi.web.controller.bid;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.bid.domain.BidFile;
import com.ruoyi.bid.service.IBidFileService;
import com.ruoyi.common.core.domain.entity.SysRole;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.file.FileUploadUtils;
import com.ruoyi.common.utils.file.MinioUtil;
import com.ruoyi.common.utils.uuid.UUID;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.bid.domain.Bid;
import com.ruoyi.bid.service.IBidService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
import org.springframework.web.multipart.MultipartFile;
/**
* 投标信息Controller
*
* @author ruoyi
* @date 2024-07-11
*/
@RestController
@RequestMapping("/bid/bid")
public class BidController extends BaseController
{
@Autowired
private IBidService bidService;
@Autowired
private IBidFileService bidFileService;
/**
* 查询投标信息列表
*/
@PreAuthorize("@ss.hasPermi('bid:bid:list')")
@GetMapping("/list")
public TableDataInfo list(Bid bid)
{
startPage();
List<Bid> list = bidService.selectBidList(bid);
return getDataTable(list);
}
/**
* 导出投标信息列表
*/
@PreAuthorize("@ss.hasPermi('bid:bid:export')")
@Log(title = "投标信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, Bid bid)
{
List<Bid> list = bidService.selectBidList(bid);
ExcelUtil<Bid> util = new ExcelUtil<Bid>(Bid.class);
util.exportExcel(response, list, "投标信息数据");
}
/**
* 获取投标信息详细信息
*/
@PreAuthorize("@ss.hasPermi('bid:bid:query')")
@GetMapping(value = "/{bidId}")
public AjaxResult getInfo(@PathVariable("bidId") String bidId)
{
return success(bidService.selectBidByBidId(bidId));
}
/**
* 新增投标信息
*/
@PreAuthorize("@ss.hasPermi('bid:bid:add')")
@Log(title = "投标信息", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody Bid bid)
{
bid.setBidId(UUID.fastUUID().toString());
String bidCode = bidService.getCode("TBXX");
bid.setBidCode(bidCode);
bid.setCreateBy(getUsername());
bid.setUpdateBy(getUsername());
bidService.insertBid(bid);
return success(bid);
}
/**
* 修改投标信息
*/
@PreAuthorize("@ss.hasPermi('bid:bid:edit')")
@Log(title = "投标信息", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody Bid bid)
{
bid.setUpdateBy(getUsername());
return toAjax(bidService.updateBid(bid));
}
/**
* 上传投标附件
* @param file 文件对象
* @param relation_id 关联业务表Id
* @param file_type 文件类别
* @return
* @throws Exception
*/
@PreAuthorize("@ss.hasAnyPermi('bid:bid:bidYwyFile,bid:bid:bidTbbFile')")
@Log(title = "上传报价附件", businessType = BusinessType.INSERT)
@PostMapping("/bidFile")
public AjaxResult bidFile(@RequestParam("bidFile") MultipartFile file, @RequestParam("relation_id") String relation_id, @RequestParam("file_type") String file_type) throws Exception
{
if(!StringUtils.isEmpty(relation_id)){
if (!file.isEmpty())
{
BidFile bidFile= new BidFile();
bidFile.setFileId(UUID.fastUUID().toString());
String url = FileUploadUtils.uploadMinio(file,"bid-manage", "bid/"+relation_id);
int index = url.lastIndexOf("/")+1;
String fileName = url.substring(index);//获取文件名
int index2 = url.indexOf("/bid/");
String fileBucketName = url.substring(index2);//获取文件对应文件服务器中地址-供后面删除功能用
bidFile.setFileName(fileName);
bidFile.setFileBucketName(fileBucketName);
bidFile.setFileUrl(url);
bidFile.setFileSize(file.getSize());
bidFile.setFileTime(DateUtils.getTime());
bidFile.setFileType(file_type);
bidFile.setRelationId(relation_id);
bidFileService.insertBidFile(bidFile);
}
}else{
return error("系统异常,报价单号为空!");
}
return success("上传成功!");
}
/**
* 查询附件列表
*/
@PreAuthorize("@ss.hasAnyPermi('bid:bid:list')")
@GetMapping("/bidFileList")
public TableDataInfo bidFileList(BidFile bidFile)
{
startPage();
List<BidFile> list = bidFileService.selectBidFileList(bidFile);
return getDataTable(list);
}
/**
* 删除附件列表
*/
@PreAuthorize("@ss.hasAnyPermi('bid:bid:bidYwyFile,bid:bid:bidTbbFile')")
@Log(title = "删除投标信息附件列表", businessType = BusinessType.DELETE)
@PostMapping("/bidFileDelete")
public AjaxResult bidFileDelete(BidFile bidFile) {
String fileId = bidFile.getFileId();
try {
BidFile bidfile = bidFileService.selectBidFileByFileId(fileId);
bidFileService.deleteBidFileByFileId(fileId);//删除文件记录
MinioUtil.removeObject("bid-manage", bidfile.getFileBucketName());//删除文件服务器对应文件
}catch(Exception e){
return error("系统异常!");
}
return success();
}
/**
* 提交OA事业部经理店长/投标办按钮
*/
@PreAuthorize("@ss.hasPermi('bid:bid:commit')")
@Log(title = "提交OA事业部经理、店长/投标办按钮", businessType = BusinessType.OTHER)
@PostMapping("/commitTbxx")
public AjaxResult commitTbxx(@RequestBody Bid bid)
{
try{
// 获取用户角色 --判断是否是核价组角色
Boolean tbbRoleFlag = false;
List<SysRole> roles = SecurityUtils.getLoginUser().getUser().getRoles();
for(SysRole sysRole:roles){
String roleKey = sysRole.getRoleKey();
if("BID".equals(roleKey)){
tbbRoleFlag = true;
break;
}
}
String bid_id = bid.getBidId();
bid.setUpdateBy(getUsername());
// TODO 如果是事业部直营店 则提交OA审核 如果是业务员则提交投标办审批
bid.setBidApprovalStatus("1");
if(StringUtils.isEmpty(bid_id)){
bid.setBidId(UUID.fastUUID().toString());
String bidCode = bidService.getCode("TBXX");
bid.setBidCode(bidCode);
if(tbbRoleFlag){
bid.setCreateBy(bid.getBidSalesmanCode());
}else{
bid.setCreateBy(getUsername());
}
bidService.insertBid(bid);
return success();
}else{
if(tbbRoleFlag){
bid.setUpdateBy(bid.getBidSalesmanCode());
}else{
bid.setUpdateBy(getUsername());
}
bidService.updateBid(bid);
return success();
}
}catch (Exception e){
return error("系统异常");
}
}
/**
* 删除投标信息
*/
@PreAuthorize("@ss.hasPermi('bid:bid:remove')")
@Log(title = "投标信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{bidIds}")
public AjaxResult remove(@PathVariable String[] bidIds)
{
return toAjax(bidService.deleteBidByBidIds(bidIds));
}
}

View File

@ -365,7 +365,7 @@ public class QuotController extends BaseController
* 删除附件列表
*/
@PreAuthorize("@ss.hasAnyPermi('quot:quot:quotXjFile,quot:quot:quotFkFile,quot:quot:quotJsgfFile,jsqr:jsqr:operateTlUploadFile,jsqr:jsqr:operateDyUploadFile,jsqr:jsqr:operateZyUploadFile,jsqr:jsqr:operateQtUploadFile,priceVerification:priceVerification:uploadFile')")
@Log(title = "删除附件列表", businessType = BusinessType.DELETE)
@Log(title = "删除报价单附件列表", businessType = BusinessType.DELETE)
@PostMapping("/quotFileDelete")
public AjaxResult quotFileDelete(QuotFile quotFile) {
String fileId = quotFile.getFileId();

View File

@ -0,0 +1,612 @@
package com.ruoyi.bid.domain;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 投标信息对象 bid
*
* @author ruoyi
* @date 2024-07-11
*/
public class Bid extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** */
private String bidId;
/** 标书编号 */
@Excel(name = "标书编号")
private String bidCode;
/** 业务员账号 */
private String bidSalesmanCode;
/** 业务员编码 */
private String bidSalesmanBm;
/** 业务员 */
@Excel(name = "业务员")
private String bidSalesmanName;
/** 原报名编号 */
@Excel(name = "原报名编号")
private String bidRegistrationNumber;
/** 开标日期 */
@Excel(name = "开标日期")
private String bidOpeningDate;
/** 是否网上报价0-是/1-否) */
private String bidOnlineQuotation;
/** 报价平台网址 */
private String bidWebsite;
/** 招标单位编码 */
private String bidTenderingUnitBm;
/** 招标单位 */
@Excel(name = "招标单位")
private String bidTenderingUnit;
/** 招标代理 */
@Excel(name = "招标代理")
private String bidAgency;
/** 项目名称 */
@Excel(name = "项目名称")
private String bidProject;
/** 授权代表 */
@Excel(name = "授权代表")
private String bidAuthorizedRepresentative;
/** 授权人联系方式 */
private String bidAuthorizedPhone;
/** 招标文件付款方式 */
private String bidFilePaymentMethod;
/** 投标付款偏差 */
private String bidPaymentDeviation;
/** 是否铜价联动0-是/1-否) */
private String bidCopperPriceLinkage;
/** 价格联动方式 */
private String bidPriceLinkageMethod;
/** 其他投标要求 */
private String bidOtherRequire;
/** 中标金额 */
private String bidWinningAmount;
/** 铜电缆金额 */
private String bidCopperCableAmount;
/** 铝电缆金额 */
private String bidAluminumCableAmount;
/** 开闭口1-开口价/2-闭口价) */
private String bidOpenClose;
/** 调价通知 */
private String bidPriceAdjustmentNotice;
/** 投标有效期 */
private String bidValidityPeriod;
/** 铜价 */
private String bidTongPrice;
/** 铝价 */
private String bidLvPrice;
/** 点数 */
private String bidDs;
/** 厂价 */
private String bidFactoryPrice;
/** 投标价 */
private String bidPrice;
/** 业务费结算 */
private String bidBusinessSettlement;
/** 保证金 */
private String bidBond;
/** 中标服务费 */
private String bidWinningServiceFee;
/** 履约保证金 */
private String bidPerformanceBond;
/** 交货期(工期) */
private String bidDeliveryDate;
/** 质保期 */
private String bidWarrantyPeriod;
/** 是否竞价(0-是/1-否) */
private String bidBidding;
/** 评标办法 */
private String bidEvaluationMethod;
/** 技术要求 */
private String bidTechnicalRequire;
/** 价格联动 */
private String bidPriceLinkage;
/** 付款方式 */
private String bidPaymentMethod;
/** 其余事项 */
private String bidOtherMatters;
/** 制标人 */
@Excel(name = "制标人")
private String bidZbr;
/** 校对人 */
@Excel(name = "校对人")
private String bidJdr;
/** 审核人 */
@Excel(name = "审核人")
private String bidShr;
/** 提交状态 */
@Excel(name = "提交状态")
private String bidApprovalStatus;
/** 有无中标通知书0-是/1-否) */
private String bidNotificationAward;
/** 备注 */
private String bidRemark;
/** 驳回原因 */
private String bidReturnRemark;
/** 创建人 */
private String createName;
public void setBidId(String bidId)
{
this.bidId = bidId;
}
public String getBidId()
{
return bidId;
}
public void setBidCode(String bidCode)
{
this.bidCode = bidCode;
}
public String getBidCode()
{
return bidCode;
}
public String getBidSalesmanCode() { return bidSalesmanCode; }
public void setBidSalesmanCode(String bidSalesmanCode) { this.bidSalesmanCode = bidSalesmanCode; }
public String getBidSalesmanBm() { return bidSalesmanBm; }
public void setBidSalesmanBm(String bidSalesmanBm) { this.bidSalesmanBm = bidSalesmanBm; }
public String getBidSalesmanName() { return bidSalesmanName; }
public void setBidSalesmanName(String bidSalesmanName) { this.bidSalesmanName = bidSalesmanName; }
public void setBidRegistrationNumber(String bidRegistrationNumber) { this.bidRegistrationNumber = bidRegistrationNumber; }
public String getBidRegistrationNumber()
{
return bidRegistrationNumber;
}
public void setBidOpeningDate(String bidOpeningDate)
{
this.bidOpeningDate = bidOpeningDate;
}
public String getBidOpeningDate()
{
return bidOpeningDate;
}
public void setBidOnlineQuotation(String bidOnlineQuotation)
{
this.bidOnlineQuotation = bidOnlineQuotation;
}
public String getBidOnlineQuotation()
{
return bidOnlineQuotation;
}
public void setBidWebsite(String bidWebsite)
{
this.bidWebsite = bidWebsite;
}
public String getBidWebsite()
{
return bidWebsite;
}
public String getBidTenderingUnitBm() { return bidTenderingUnitBm; }
public void setBidTenderingUnitBm(String bidTenderingUnitBm) { this.bidTenderingUnitBm = bidTenderingUnitBm; }
public void setBidTenderingUnit(String bidTenderingUnit)
{
this.bidTenderingUnit = bidTenderingUnit;
}
public String getBidTenderingUnit()
{
return bidTenderingUnit;
}
public void setBidAgency(String bidAgency)
{
this.bidAgency = bidAgency;
}
public String getBidAgency()
{
return bidAgency;
}
public void setBidProject(String bidProject)
{
this.bidProject = bidProject;
}
public String getBidProject()
{
return bidProject;
}
public void setBidAuthorizedRepresentative(String bidAuthorizedRepresentative)
{
this.bidAuthorizedRepresentative = bidAuthorizedRepresentative;
}
public String getBidAuthorizedRepresentative()
{
return bidAuthorizedRepresentative;
}
public void setBidAuthorizedPhone(String bidAuthorizedPhone)
{
this.bidAuthorizedPhone = bidAuthorizedPhone;
}
public String getBidAuthorizedPhone()
{
return bidAuthorizedPhone;
}
public void setBidFilePaymentMethod(String bidFilePaymentMethod)
{
this.bidFilePaymentMethod = bidFilePaymentMethod;
}
public String getBidFilePaymentMethod()
{
return bidFilePaymentMethod;
}
public void setBidPaymentDeviation(String bidPaymentDeviation)
{
this.bidPaymentDeviation = bidPaymentDeviation;
}
public String getBidPaymentDeviation()
{
return bidPaymentDeviation;
}
public void setBidCopperPriceLinkage(String bidCopperPriceLinkage)
{
this.bidCopperPriceLinkage = bidCopperPriceLinkage;
}
public String getBidCopperPriceLinkage()
{
return bidCopperPriceLinkage;
}
public void setBidPriceLinkageMethod(String bidPriceLinkageMethod)
{
this.bidPriceLinkageMethod = bidPriceLinkageMethod;
}
public String getBidPriceLinkageMethod()
{
return bidPriceLinkageMethod;
}
public void setBidOtherRequire(String bidOtherRequire)
{
this.bidOtherRequire = bidOtherRequire;
}
public String getBidOtherRequire()
{
return bidOtherRequire;
}
public void setBidWinningAmount(String bidWinningAmount)
{
this.bidWinningAmount = bidWinningAmount;
}
public String getBidWinningAmount()
{
return bidWinningAmount;
}
public void setBidCopperCableAmount(String bidCopperCableAmount)
{
this.bidCopperCableAmount = bidCopperCableAmount;
}
public String getBidCopperCableAmount()
{
return bidCopperCableAmount;
}
public void setBidAluminumCableAmount(String bidAluminumCableAmount)
{
this.bidAluminumCableAmount = bidAluminumCableAmount;
}
public String getBidAluminumCableAmount()
{
return bidAluminumCableAmount;
}
public void setBidOpenClose(String bidOpenClose)
{
this.bidOpenClose = bidOpenClose;
}
public String getBidOpenClose()
{
return bidOpenClose;
}
public void setBidPriceAdjustmentNotice(String bidPriceAdjustmentNotice)
{
this.bidPriceAdjustmentNotice = bidPriceAdjustmentNotice;
}
public String getBidPriceAdjustmentNotice()
{
return bidPriceAdjustmentNotice;
}
public void setBidValidityPeriod(String bidValidityPeriod)
{
this.bidValidityPeriod = bidValidityPeriod;
}
public String getBidValidityPeriod()
{
return bidValidityPeriod;
}
public void setBidTongPrice(String bidTongPrice)
{
this.bidTongPrice = bidTongPrice;
}
public String getBidTongPrice()
{
return bidTongPrice;
}
public void setBidLvPrice(String bidLvPrice)
{
this.bidLvPrice = bidLvPrice;
}
public String getBidLvPrice()
{
return bidLvPrice;
}
public void setBidDs(String bidDs)
{
this.bidDs = bidDs;
}
public String getBidDs()
{
return bidDs;
}
public void setBidFactoryPrice(String bidFactoryPrice)
{
this.bidFactoryPrice = bidFactoryPrice;
}
public String getBidFactoryPrice()
{
return bidFactoryPrice;
}
public void setBidPrice(String bidPrice)
{
this.bidPrice = bidPrice;
}
public String getBidPrice()
{
return bidPrice;
}
public void setBidBusinessSettlement(String bidBusinessSettlement)
{
this.bidBusinessSettlement = bidBusinessSettlement;
}
public String getBidBusinessSettlement()
{
return bidBusinessSettlement;
}
public void setBidBond(String bidBond)
{
this.bidBond = bidBond;
}
public String getBidBond()
{
return bidBond;
}
public void setBidWinningServiceFee(String bidWinningServiceFee)
{
this.bidWinningServiceFee = bidWinningServiceFee;
}
public String getBidWinningServiceFee()
{
return bidWinningServiceFee;
}
public void setBidPerformanceBond(String bidPerformanceBond)
{
this.bidPerformanceBond = bidPerformanceBond;
}
public String getBidPerformanceBond()
{
return bidPerformanceBond;
}
public void setBidDeliveryDate(String bidDeliveryDate)
{
this.bidDeliveryDate = bidDeliveryDate;
}
public String getBidDeliveryDate()
{
return bidDeliveryDate;
}
public void setBidWarrantyPeriod(String bidWarrantyPeriod)
{
this.bidWarrantyPeriod = bidWarrantyPeriod;
}
public String getBidWarrantyPeriod()
{
return bidWarrantyPeriod;
}
public void setBidBidding(String bidBidding)
{
this.bidBidding = bidBidding;
}
public String getBidBidding()
{
return bidBidding;
}
public void setBidEvaluationMethod(String bidEvaluationMethod)
{
this.bidEvaluationMethod = bidEvaluationMethod;
}
public String getBidEvaluationMethod()
{
return bidEvaluationMethod;
}
public void setBidTechnicalRequire(String bidTechnicalRequire)
{
this.bidTechnicalRequire = bidTechnicalRequire;
}
public String getBidTechnicalRequire()
{
return bidTechnicalRequire;
}
public void setBidPriceLinkage(String bidPriceLinkage)
{
this.bidPriceLinkage = bidPriceLinkage;
}
public String getBidPriceLinkage()
{
return bidPriceLinkage;
}
public void setBidPaymentMethod(String bidPaymentMethod)
{
this.bidPaymentMethod = bidPaymentMethod;
}
public String getBidPaymentMethod()
{
return bidPaymentMethod;
}
public void setBidOtherMatters(String bidOtherMatters)
{
this.bidOtherMatters = bidOtherMatters;
}
public String getBidOtherMatters()
{
return bidOtherMatters;
}
public void setBidZbr(String bidZbr)
{
this.bidZbr = bidZbr;
}
public String getBidZbr()
{
return bidZbr;
}
public void setBidJdr(String bidJdr)
{
this.bidJdr = bidJdr;
}
public String getBidJdr()
{
return bidJdr;
}
public void setBidShr(String bidShr)
{
this.bidShr = bidShr;
}
public String getBidShr()
{
return bidShr;
}
public void setBidApprovalStatus(String bidApprovalStatus)
{
this.bidApprovalStatus = bidApprovalStatus;
}
public String getBidApprovalStatus()
{
return bidApprovalStatus;
}
public void setBidNotificationAward(String bidNotificationAward)
{
this.bidNotificationAward = bidNotificationAward;
}
public String getBidNotificationAward()
{
return bidNotificationAward;
}
public String getBidRemark() {
return bidRemark;
}
public void setBidRemark(String bidRemark) {
this.bidRemark = bidRemark;
}
public String getBidReturnRemark() {
return bidReturnRemark;
}
public void setBidReturnRemark(String bidReturnRemark) {
this.bidReturnRemark = bidReturnRemark;
}
public String getCreateName() {
return createName;
}
public void setCreateName(String createName) {
this.createName = createName;
}
}

View File

@ -0,0 +1,113 @@
package com.ruoyi.bid.domain;
import com.ruoyi.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* 投标信息-文件对象 bid_file
*
* @author ruoyi
* @date 2024-04-01
*/
public class BidFile extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** */
private String fileId;
/** 文件名称 */
private String fileName;
/** MINIO文件名称 */
private String fileBucketName;
/** 文件地址 */
private String fileUrl;
/** 文件大小 */
private Long fileSize;
/** 上传时间 */
private String fileTime;
/** 类别 */
private String fileType;
/** */
private String relationId;
public void setFileId(String fileId)
{
this.fileId = fileId;
}
public String getFileId()
{
return fileId;
}
public void setFileName(String fileName)
{
this.fileName = fileName;
}
public String getFileName()
{
return fileName;
}
public String getFileBucketName() {return fileBucketName;}
public void setFileBucketName(String fileBucketName) {this.fileBucketName = fileBucketName;}
public void setFileUrl(String fileUrl)
{
this.fileUrl = fileUrl;
}
public String getFileUrl()
{
return fileUrl;
}
public void setFileSize(Long fileSize)
{
this.fileSize = fileSize;
}
public Long getFileSize()
{
return fileSize;
}
public void setFileTime(String fileTime)
{
this.fileTime = fileTime;
}
public String getFileTime()
{
return fileTime;
}
public String getFileType() {return fileType;}
public void setFileType(String fileType) {this.fileType = fileType;}
public void setRelationId(String relationId)
{
this.relationId = relationId;
}
public String getRelationId()
{
return relationId;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("fileId", getFileId())
.append("fileName", getFileName())
.append("fileUrl", getFileUrl())
.append("fileSize", getFileSize())
.append("fileTime", getFileTime())
.append("relationId", getRelationId())
.toString();
}
}

View File

@ -0,0 +1,46 @@
package com.ruoyi.bid.mapper;
import com.ruoyi.bid.domain.BidFile;
import java.util.List;
/**
* 投标信息-文件Mapper接口
*
* @author ruoyi
* @date 2024-04-01
*/
public interface BidFileMapper
{
/**
* 查询投标信息-文件
*
* @param fileId 投标信息-文件主键
* @return 投标信息-文件
*/
public BidFile selectBidFileByFileId(String fileId);
/**
* 查询投标信息-文件列表
*
* @param bidFile 投标信息-文件
* @return 投标信息-文件集合
*/
public List<BidFile> selectBidFileList(BidFile bidFile);
/**
* 新增投标信息-文件
*
* @param bidFile 投标信息-文件
* @return 结果
*/
public int insertBidFile(BidFile bidFile);
/**
* 删除投标信息-文件
*
* @param fileId 投标信息-文件主键
* @return 结果
*/
public int deleteBidFileByFileId(String fileId);
}

View File

@ -0,0 +1,68 @@
package com.ruoyi.bid.mapper;
import java.util.List;
import com.ruoyi.bid.domain.Bid;
/**
* 投标信息Mapper接口
*
* @author ruoyi
* @date 2024-07-11
*/
public interface BidMapper
{
/**
* 查询投标信息
*
* @param bidId 投标信息主键
* @return 投标信息
*/
public Bid selectBidByBidId(String bidId);
/**
* 查询投标信息列表
*
* @param bid 投标信息
* @return 投标信息集合
*/
public List<Bid> selectBidList(Bid bid);
/**
* 新增投标信息
*
* @param bid 投标信息
* @return 结果
*/
public int insertBid(Bid bid);
/**
* 修改投标信息
*
* @param bid 投标信息
* @return 结果
*/
public int updateBid(Bid bid);
/**
* 删除投标信息
*
* @param bidId 投标信息主键
* @return 结果
*/
public int deleteBidByBidId(String bidId);
/**
* 批量删除投标信息
*
* @param bidIds 需要删除的数据主键集合
* @return 结果
*/
public int deleteBidByBidIds(String[] bidIds);
/**
* 获取单据编号
* @param type
* @return
*/
String getCode(String type);
}

View File

@ -0,0 +1,46 @@
package com.ruoyi.bid.service;
import com.ruoyi.bid.domain.BidFile;
import java.util.List;
/**
* 投标信息-文件Service接口
*
* @author ruoyi
* @date 2024-04-01
*/
public interface IBidFileService
{
/**
* 查询报价单-文件
*
* @param fileId 报价单-文件主键
* @return 报价单-文件
*/
public BidFile selectBidFileByFileId(String fileId);
/**
* 查询报价单-文件列表
*
* @param bidFile 报价单-文件
* @return 报价单-文件集合
*/
public List<BidFile> selectBidFileList(BidFile bidFile);
/**
* 新增报价单-文件
*
* @param bidFile 报价单-文件
* @return 结果
*/
public int insertBidFile(BidFile bidFile);
/**
* 删除报价单-文件信息
*
* @param fileId 报价单-文件主键
* @return 结果
*/
public int deleteBidFileByFileId(String fileId);
}

View File

@ -0,0 +1,68 @@
package com.ruoyi.bid.service;
import java.util.List;
import com.ruoyi.bid.domain.Bid;
/**
* 投标信息Service接口
*
* @author ruoyi
* @date 2024-07-11
*/
public interface IBidService
{
/**
* 查询投标信息
*
* @param bidId 投标信息主键
* @return 投标信息
*/
public Bid selectBidByBidId(String bidId);
/**
* 查询投标信息列表
*
* @param bid 投标信息
* @return 投标信息集合
*/
public List<Bid> selectBidList(Bid bid);
/**
* 新增投标信息
*
* @param bid 投标信息
* @return 结果
*/
public int insertBid(Bid bid);
/**
* 修改投标信息
*
* @param bid 投标信息
* @return 结果
*/
public int updateBid(Bid bid);
/**
* 批量删除投标信息
*
* @param bidIds 需要删除的投标信息主键集合
* @return 结果
*/
public int deleteBidByBidIds(String[] bidIds);
/**
* 删除投标信息信息
*
* @param bidId 投标信息主键
* @return 结果
*/
public int deleteBidByBidId(String bidId);
/**
* 获取单据编号
* @param bjd
* @return
*/
String getCode(String type);
}

View File

@ -0,0 +1,75 @@
package com.ruoyi.bid.service.impl;
import com.ruoyi.bid.domain.BidFile;
import com.ruoyi.bid.mapper.BidFileMapper;
import com.ruoyi.bid.service.IBidFileService;
import com.ruoyi.quot.domain.QuotFile;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* 投标信息-文件Service业务层处理
*
* @author ruoyi
* @date 2024-04-01
*/
@Service
public class BidFileServiceImpl implements IBidFileService
{
@Autowired
private BidFileMapper bidFileMapper;
/**
* 查询报价单-文件
*
* @param fileId 报价单-文件主键
* @return 报价单-文件
*/
@Override
public BidFile selectBidFileByFileId(String fileId)
{
return bidFileMapper.selectBidFileByFileId(fileId);
}
/**
* 查询报价单-文件列表
*
* @param bidFile 报价单-文件
* @return 报价单-文件
*/
@Override
public List<BidFile> selectBidFileList(BidFile bidFile)
{
return bidFileMapper.selectBidFileList(bidFile);
}
/**
* 新增报价单-文件
*
* @param bidFile 报价单-文件
* @return 结果
*/
@Override
@Transactional
public int insertBidFile(BidFile bidFile)
{
return bidFileMapper.insertBidFile(bidFile);
}
/**
* 删除报价单-文件信息
*
* @param fileId 报价单-文件主键
* @return 结果
*/
@Override
@Transactional
public int deleteBidFileByFileId(String fileId)
{
return bidFileMapper.deleteBidFileByFileId(fileId);
}
}

View File

@ -0,0 +1,110 @@
package com.ruoyi.bid.service.impl;
import java.util.List;
import com.ruoyi.common.annotation.DataScope;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.bid.mapper.BidMapper;
import com.ruoyi.bid.domain.Bid;
import com.ruoyi.bid.service.IBidService;
/**
* 投标信息Service业务层处理
*
* @author ruoyi
* @date 2024-07-11
*/
@Service
public class BidServiceImpl implements IBidService
{
@Autowired
private BidMapper bidMapper;
/**
* 查询投标信息
*
* @param bidId 投标信息主键
* @return 投标信息
*/
@Override
public Bid selectBidByBidId(String bidId)
{
return bidMapper.selectBidByBidId(bidId);
}
/**
* 查询投标信息列表
*
* @param bid 投标信息
* @return 投标信息
*/
@Override
@DataScope(deptAlias = "d", userAlias = "u")
public List<Bid> selectBidList(Bid bid)
{
return bidMapper.selectBidList(bid);
}
/**
* 新增投标信息
*
* @param bid 投标信息
* @return 结果
*/
@Override
public int insertBid(Bid bid)
{
bid.setCreateTime(DateUtils.getNowDate());
bid.setUpdateTime(DateUtils.getNowDate());
return bidMapper.insertBid(bid);
}
/**
* 修改投标信息
*
* @param bid 投标信息
* @return 结果
*/
@Override
public int updateBid(Bid bid)
{
bid.setUpdateTime(DateUtils.getNowDate());
return bidMapper.updateBid(bid);
}
/**
* 批量删除投标信息
*
* @param bidIds 需要删除的投标信息主键
* @return 结果
*/
@Override
public int deleteBidByBidIds(String[] bidIds)
{
return bidMapper.deleteBidByBidIds(bidIds);
}
/**
* 删除投标信息信息
*
* @param bidId 投标信息主键
* @return 结果
*/
@Override
public int deleteBidByBidId(String bidId)
{
return bidMapper.deleteBidByBidId(bidId);
}
/**
* 获取单据编号
* @param type
* @return
*/
@Override
public String getCode(String type) {
return bidMapper.getCode(type);
}
}

View File

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.bid.mapper.BidFileMapper">
<resultMap type="BidFile" id="BidFileResult">
<result property="fileId" column="file_id" />
<result property="fileName" column="file_name" />
<result property="fileBucketName" column="file_bucket_name" />
<result property="fileUrl" column="file_url" />
<result property="fileSize" column="file_size" />
<result property="fileTime" column="file_time" />
<result property="fileType" column="file_type" />
<result property="relationId" column="relation_id" />
</resultMap>
<sql id="selectBidFileVo">
select file_id, file_name, file_bucket_name, file_url, file_size, file_time, file_type, relation_id from bid_file
</sql>
<select id="selectBidFileList" parameterType="BidFile" resultMap="BidFileResult">
<include refid="selectBidFileVo"/>
<where>
and relation_id = #{relationId}
and file_type = #{fileType}
</where>
order by file_time desc
</select>
<select id="selectBidFileByFileId" parameterType="String" resultMap="BidFileResult">
<include refid="selectBidFileVo"/>
where file_id = #{fileId}
</select>
<insert id="insertBidFile" parameterType="BidFile">
insert into bid_file
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="fileId != null">file_id,</if>
<if test="fileName != null">file_name,</if>
<if test="fileBucketName != null">file_bucket_name,</if>
<if test="fileUrl != null">file_url,</if>
<if test="fileSize != null">file_size,</if>
<if test="fileTime != null">file_time,</if>
<if test="fileType != null">file_type,</if>
<if test="relationId != null">relation_id,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="fileId != null">#{fileId},</if>
<if test="fileName != null">#{fileName},</if>
<if test="fileBucketName != null">#{fileBucketName},</if>
<if test="fileUrl != null">#{fileUrl},</if>
<if test="fileSize != null">#{fileSize},</if>
<if test="fileTime != null">#{fileTime},</if>
<if test="fileType != null">#{fileType},</if>
<if test="relationId != null">#{relationId},</if>
</trim>
</insert>
<delete id="deleteBidFileByFileId" parameterType="String">
delete from bid_file where file_id = #{fileId}
</delete>
</mapper>

View File

@ -0,0 +1,303 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.bid.mapper.BidMapper">
<resultMap type="Bid" id="BidResult">
<result property="bidId" column="bid_id" />
<result property="bidCode" column="bid_code" />
<result property="bidSalesmanCode" column="bid_salesman_code" />
<result property="bidSalesmanBm" column="bid_salesman_bm" />
<result property="bidSalesmanName" column="bid_salesman_name" />
<result property="bidRegistrationNumber" column="bid_registration_number" />
<result property="bidOpeningDate" column="bid_opening_date" />
<result property="bidOnlineQuotation" column="bid_online_quotation" />
<result property="bidWebsite" column="bid_website" />
<result property="bidTenderingUnitBm" column="bid_tendering_unit_bm" />
<result property="bidTenderingUnit" column="bid_tendering_unit" />
<result property="bidAgency" column="bid_agency" />
<result property="bidProject" column="bid_project" />
<result property="bidAuthorizedRepresentative" column="bid_authorized_representative" />
<result property="bidAuthorizedPhone" column="bid_authorized_phone" />
<result property="bidFilePaymentMethod" column="bid_file_payment_method" />
<result property="bidPaymentDeviation" column="bid_payment_deviation" />
<result property="bidCopperPriceLinkage" column="bid_copper_price_linkage" />
<result property="bidPriceLinkageMethod" column="bid_price_linkage_method" />
<result property="bidOtherRequire" column="bid_other_require" />
<result property="bidWinningAmount" column="bid_winning_amount" />
<result property="bidCopperCableAmount" column="bid_copper_cable_amount" />
<result property="bidAluminumCableAmount" column="bid_aluminum_cable_amount" />
<result property="bidOpenClose" column="bid_open_close" />
<result property="bidPriceAdjustmentNotice" column="bid_price_adjustment_notice" />
<result property="bidValidityPeriod" column="bid_validity_period" />
<result property="bidTongPrice" column="bid_tong_price" />
<result property="bidLvPrice" column="bid_lv_price" />
<result property="bidDs" column="bid_ds" />
<result property="bidFactoryPrice" column="bid_factory_price" />
<result property="bidPrice" column="bid_price" />
<result property="bidBusinessSettlement" column="bid_business_settlement" />
<result property="bidBond" column="bid_bond" />
<result property="bidWinningServiceFee" column="bid_winning_service_fee" />
<result property="bidPerformanceBond" column="bid_performance_bond" />
<result property="bidDeliveryDate" column="bid_delivery_date" />
<result property="bidWarrantyPeriod" column="bid_warranty_period" />
<result property="bidBidding" column="bid_bidding" />
<result property="bidEvaluationMethod" column="bid_evaluation_method" />
<result property="bidTechnicalRequire" column="bid_technical_require" />
<result property="bidPriceLinkage" column="bid_price_linkage" />
<result property="bidPaymentMethod" column="bid_payment_method" />
<result property="bidOtherMatters" column="bid_other_matters" />
<result property="bidZbr" column="bid_zbr" />
<result property="bidJdr" column="bid_jdr" />
<result property="bidShr" column="bid_shr" />
<result property="bidApprovalStatus" column="bid_approval_status" />
<result property="bidNotificationAward" column="bid_notification_award" />
<result property="bidRemark" column="bid_remark" />
<result property="bidReturnRemark" column="bid_returnRemark" />
<result property="createBy" column="create_by" />
<result property="createName" column="create_name" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
</resultMap>
<sql id="quotJoins">
left join sys_user u on u.user_name=a.create_by
left join sys_dept d on u.dept_id = d.dept_id
</sql>
<sql id="selectBidVo">
select a.bid_id, a.bid_code,a.bid_salesman_code, a.bid_salesman_bm, a.bid_salesman_name,
a.bid_registration_number, a.bid_opening_date,
a.bid_online_quotation, a.bid_website, a.bid_tendering_unit_bm,a.bid_tendering_unit, a.bid_agency,
a.bid_project, a.bid_authorized_representative, a.bid_authorized_phone,
a.bid_file_payment_method, a.bid_payment_deviation, a.bid_copper_price_linkage,
a.bid_price_linkage_method, a.bid_other_require, a.bid_winning_amount,
a.bid_copper_cable_amount, a.bid_aluminum_cable_amount, a.bid_open_close,
a.bid_price_adjustment_notice, a.bid_validity_period, a.bid_tong_price,
a.bid_lv_price, a.bid_ds, a.bid_factory_price, a.bid_price, a.bid_business_settlement,
a.bid_bond, a.bid_winning_service_fee, a.bid_performance_bond, a.bid_delivery_date,
a.bid_warranty_period, a.bid_bidding, a.bid_evaluation_method, a.bid_technical_require,
a.bid_price_linkage, a.bid_payment_method, a.bid_other_matters, a.bid_zbr, a.bid_jdr,
a.bid_shr, a.bid_approval_status, a.bid_notification_award, a.bid_remark,a.bid_returnRemark,
a.create_by,u.nick_name create_name, a.create_time,
a.update_by, a.update_time
from bid a
<include refid="quotJoins"/>
</sql>
<select id="selectBidList" parameterType="Bid" resultMap="BidResult">
<include refid="selectBidVo"/>
<where>
<if test="bidCode != null and bidCode != ''"> and bid_code like concat('%', #{bidCode}, '%')</if>
<if test="params.beginBidOpeningDate != null and params.beginBidOpeningDate != '' and params.endBidOpeningDate != null and params.endBidOpeningDate != ''"> and bid_opening_date between #{params.beginBidOpeningDate} and #{params.endBidOpeningDate}</if>
<if test="bidTenderingUnit != null and bidTenderingUnit != ''"> and bid_tendering_unit like concat('%', #{bidTenderingUnit}, '%')</if>
<if test="bidProject != null and bidProject != ''"> and bid_project like concat('%', #{bidProject}, '%')</if>
<if test="bidAuthorizedRepresentative != null and bidAuthorizedRepresentative != ''"> and bid_authorized_representative like concat('%', #{bidAuthorizedRepresentative}, '%')</if>
<if test="bidApprovalStatus != null and bidApprovalStatus != ''"> and bid_approval_status = #{bidApprovalStatus}</if>
<!-- 数据范围过滤 -->
${params.dataScope}
</where>
</select>
<select id="selectBidByBidId" parameterType="String" resultMap="BidResult">
<include refid="selectBidVo"/>
where bid_id = #{bidId}
</select>
<insert id="insertBid" parameterType="Bid">
insert into bid
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="bidId != null">bid_id,</if>
<if test="bidCode != null and bidCode != ''">bid_code,</if>
<if test="bidSalesmanCode != null and bidSalesmanCode != ''">bid_salesman_code,</if>
<if test="bidSalesmanBm != null and bidSalesmanBm != ''">bid_salesman_bm,</if>
<if test="bidSalesmanName != null and bidSalesmanName != ''">bid_salesman_name,</if>
<if test="bidRegistrationNumber != null and bidRegistrationNumber != ''">bid_registration_number,</if>
<if test="bidOpeningDate != null and bidOpeningDate != ''">bid_opening_date,</if>
<if test="bidOnlineQuotation != null and bidOnlineQuotation != ''">bid_online_quotation,</if>
<if test="bidWebsite != null and bidWebsite != ''">bid_website,</if>
<if test="bidTenderingUnitBm != null and bidTenderingUnitBm != ''">bid_tendering_unit_bm,</if>
<if test="bidTenderingUnit != null and bidTenderingUnit != ''">bid_tendering_unit,</if>
<if test="bidAgency != null and bidAgency != ''">bid_agency,</if>
<if test="bidProject != null and bidProject != ''">bid_project,</if>
<if test="bidAuthorizedRepresentative != null and bidAuthorizedRepresentative != ''">bid_authorized_representative,</if>
<if test="bidAuthorizedPhone != null and bidAuthorizedPhone != ''">bid_authorized_phone,</if>
<if test="bidFilePaymentMethod != null and bidFilePaymentMethod != ''">bid_file_payment_method,</if>
<if test="bidPaymentDeviation != null and bidPaymentDeviation != ''">bid_payment_deviation,</if>
<if test="bidCopperPriceLinkage != null and bidCopperPriceLinkage != ''">bid_copper_price_linkage,</if>
<if test="bidPriceLinkageMethod != null and bidPriceLinkageMethod != ''">bid_price_linkage_method,</if>
<if test="bidOtherRequire != null and bidOtherRequire != ''">bid_other_require,</if>
<if test="bidWinningAmount != null and bidWinningAmount != ''">bid_winning_amount,</if>
<if test="bidCopperCableAmount != null and bidCopperCableAmount != ''">bid_copper_cable_amount,</if>
<if test="bidAluminumCableAmount != null and bidAluminumCableAmount != ''">bid_aluminum_cable_amount,</if>
<if test="bidOpenClose != null and bidOpenClose != ''">bid_open_close,</if>
<if test="bidPriceAdjustmentNotice != null and bidPriceAdjustmentNotice != ''">bid_price_adjustment_notice,</if>
<if test="bidValidityPeriod != null and bidValidityPeriod != ''">bid_validity_period,</if>
<if test="bidTongPrice != null and bidTongPrice != ''">bid_tong_price,</if>
<if test="bidLvPrice != null and bidLvPrice != ''">bid_lv_price,</if>
<if test="bidDs != null and bidDs != ''">bid_ds,</if>
<if test="bidFactoryPrice != null and bidFactoryPrice != ''">bid_factory_price,</if>
<if test="bidPrice != null and bidPrice != ''">bid_price,</if>
<if test="bidBusinessSettlement != null and bidBusinessSettlement != ''">bid_business_settlement,</if>
<if test="bidBond != null and bidBond != ''">bid_bond,</if>
<if test="bidWinningServiceFee != null and bidWinningServiceFee != ''">bid_winning_service_fee,</if>
<if test="bidPerformanceBond != null and bidPerformanceBond != ''">bid_performance_bond,</if>
<if test="bidDeliveryDate != null and bidDeliveryDate != ''">bid_delivery_date,</if>
<if test="bidWarrantyPeriod != null and bidWarrantyPeriod != ''">bid_warranty_period,</if>
<if test="bidBidding != null and bidBidding != ''">bid_bidding,</if>
<if test="bidEvaluationMethod != null and bidEvaluationMethod != ''">bid_evaluation_method,</if>
<if test="bidTechnicalRequire != null and bidTechnicalRequire != ''">bid_technical_require,</if>
<if test="bidPriceLinkage != null and bidPriceLinkage != ''">bid_price_linkage,</if>
<if test="bidPaymentMethod != null and bidPaymentMethod != ''">bid_payment_method,</if>
<if test="bidOtherMatters != null and bidOtherMatters != ''">bid_other_matters,</if>
<if test="bidZbr != null and bidZbr != ''">bid_zbr,</if>
<if test="bidJdr != null and bidJdr != ''">bid_jdr,</if>
<if test="bidShr != null and bidShr != ''">bid_shr,</if>
<if test="bidApprovalStatus != null and bidApprovalStatus != ''">bid_approval_status,</if>
<if test="bidNotificationAward != null and bidNotificationAward != ''">bid_notification_award,</if>
<if test="bidRemark != null and bidRemark != ''">bid_remark,</if>
<if test="bidReturnRemark != null and bidReturnRemark != ''">bid_returnRemark,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="bidId != null">#{bidId},</if>
<if test="bidCode != null and bidCode != ''">#{bidCode},</if>
<if test="bidSalesmanCode != null and bidSalesmanCode != ''">#{bidSalesmanCode},</if>
<if test="bidSalesmanBm != null and bidSalesmanBm != ''">#{bidSalesmanBm},</if>
<if test="bidSalesmanName != null and bidSalesmanName != ''">#{bidSalesmanName},</if>
<if test="bidRegistrationNumber != null and bidRegistrationNumber != ''">#{bidRegistrationNumber},</if>
<if test="bidOpeningDate != null and bidOpeningDate != ''">#{bidOpeningDate},</if>
<if test="bidOnlineQuotation != null and bidOnlineQuotation != ''">#{bidOnlineQuotation},</if>
<if test="bidWebsite != null and bidWebsite != ''">#{bidWebsite},</if>
<if test="bidTenderingUnitBm != null and bidTenderingUnitBm != ''">#{bidTenderingUnitBm},</if>
<if test="bidTenderingUnit != null and bidTenderingUnit != ''">#{bidTenderingUnit},</if>
<if test="bidAgency != null and bidAgency != ''">#{bidAgency},</if>
<if test="bidProject != null and bidProject != ''">#{bidProject},</if>
<if test="bidAuthorizedRepresentative != null and bidAuthorizedRepresentative != ''">#{bidAuthorizedRepresentative},</if>
<if test="bidAuthorizedPhone != null and bidAuthorizedPhone != ''">#{bidAuthorizedPhone},</if>
<if test="bidFilePaymentMethod != null and bidFilePaymentMethod != ''">#{bidFilePaymentMethod},</if>
<if test="bidPaymentDeviation != null and bidPaymentDeviation != ''">#{bidPaymentDeviation},</if>
<if test="bidCopperPriceLinkage != null and bidCopperPriceLinkage != ''">#{bidCopperPriceLinkage},</if>
<if test="bidPriceLinkageMethod != null and bidPriceLinkageMethod != ''">#{bidPriceLinkageMethod},</if>
<if test="bidOtherRequire != null and bidOtherRequire != ''">#{bidOtherRequire},</if>
<if test="bidWinningAmount != null and bidWinningAmount != ''">#{bidWinningAmount},</if>
<if test="bidCopperCableAmount != null and bidCopperCableAmount != ''">#{bidCopperCableAmount},</if>
<if test="bidAluminumCableAmount != null and bidAluminumCableAmount != ''">#{bidAluminumCableAmount},</if>
<if test="bidOpenClose != null and bidOpenClose != ''">#{bidOpenClose},</if>
<if test="bidPriceAdjustmentNotice != null and bidPriceAdjustmentNotice != ''">#{bidPriceAdjustmentNotice},</if>
<if test="bidValidityPeriod != null and bidValidityPeriod != ''">#{bidValidityPeriod},</if>
<if test="bidTongPrice != null and bidTongPrice != ''">#{bidTongPrice},</if>
<if test="bidLvPrice != null and bidLvPrice != ''">#{bidLvPrice},</if>
<if test="bidDs != null and bidDs != ''">#{bidDs},</if>
<if test="bidFactoryPrice != null and bidFactoryPrice != ''">#{bidFactoryPrice},</if>
<if test="bidPrice != null and bidPrice != ''">#{bidPrice},</if>
<if test="bidBusinessSettlement != null and bidBusinessSettlement != ''">#{bidBusinessSettlement},</if>
<if test="bidBond != null and bidBond != ''">#{bidBond},</if>
<if test="bidWinningServiceFee != null and bidWinningServiceFee != ''">#{bidWinningServiceFee},</if>
<if test="bidPerformanceBond != null and bidPerformanceBond != ''">#{bidPerformanceBond},</if>
<if test="bidDeliveryDate != null and bidDeliveryDate != ''">#{bidDeliveryDate},</if>
<if test="bidWarrantyPeriod != null and bidWarrantyPeriod != ''">#{bidWarrantyPeriod},</if>
<if test="bidBidding != null and bidBidding != ''">#{bidBidding},</if>
<if test="bidEvaluationMethod != null and bidEvaluationMethod != ''">#{bidEvaluationMethod},</if>
<if test="bidTechnicalRequire != null and bidTechnicalRequire != ''">#{bidTechnicalRequire},</if>
<if test="bidPriceLinkage != null and bidPriceLinkage != ''">#{bidPriceLinkage},</if>
<if test="bidPaymentMethod != null and bidPaymentMethod != ''">#{bidPaymentMethod},</if>
<if test="bidOtherMatters != null and bidOtherMatters != ''">#{bidOtherMatters},</if>
<if test="bidZbr != null and bidZbr != ''">#{bidZbr},</if>
<if test="bidJdr != null and bidJdr != ''">#{bidJdr},</if>
<if test="bidShr != null and bidShr != ''">#{bidShr},</if>
<if test="bidApprovalStatus != null and bidApprovalStatus != ''">#{bidApprovalStatus},</if>
<if test="bidNotificationAward != null and bidNotificationAward != ''">#{bidNotificationAward},</if>
<if test="bidRemark != null and bidRemark != ''">#{bidRemark},</if>
<if test="bidReturnRemark != null and bidReturnRemark != ''">#{bidReturnRemark},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
</trim>
</insert>
<update id="updateBid" parameterType="Bid">
update bid
<trim prefix="SET" suffixOverrides=",">
<if test="bidCode != null and bidCode != ''">bid_code = #{bidCode},</if>
<if test="bidSalesmanCode != null and bidSalesmanCode != ''">bid_salesman_code = #{bidSalesmanCode},</if>
<if test="bidSalesmanBm != null and bidSalesmanBm != ''">bid_salesman_bm = #{bidSalesmanBm},</if>
<if test="bidSalesmanName != null and bidSalesmanName != ''">bid_salesman_name = #{bidSalesmanName},</if>
<if test="bidRegistrationNumber != null and bidRegistrationNumber != ''">bid_registration_number = #{bidRegistrationNumber},</if>
<if test="bidOpeningDate != null and bidOpeningDate != ''">bid_opening_date = #{bidOpeningDate},</if>
<if test="bidOnlineQuotation != null and bidOnlineQuotation != ''">bid_online_quotation = #{bidOnlineQuotation},</if>
<if test="bidWebsite != null and bidWebsite != ''">bid_website = #{bidWebsite},</if>
<if test="bidTenderingUnitBm != null and bidTenderingUnitBm != ''">bid_tendering_unit_bm = #{bidTenderingUnitBm},</if>
<if test="bidTenderingUnit != null and bidTenderingUnit != ''">bid_tendering_unit = #{bidTenderingUnit},</if>
<if test="bidAgency != null and bidAgency != ''">bid_agency = #{bidAgency},</if>
<if test="bidProject != null and bidProject != ''">bid_project = #{bidProject},</if>
<if test="bidAuthorizedRepresentative != null and bidAuthorizedRepresentative != ''">bid_authorized_representative = #{bidAuthorizedRepresentative},</if>
<if test="bidAuthorizedPhone != null and bidAuthorizedPhone != ''">bid_authorized_phone = #{bidAuthorizedPhone},</if>
<if test="bidFilePaymentMethod != null and bidFilePaymentMethod != ''">bid_file_payment_method = #{bidFilePaymentMethod},</if>
<if test="bidPaymentDeviation != null and bidPaymentDeviation != ''">bid_payment_deviation = #{bidPaymentDeviation},</if>
<if test="bidCopperPriceLinkage != null and bidCopperPriceLinkage != ''">bid_copper_price_linkage = #{bidCopperPriceLinkage},</if>
<if test="bidPriceLinkageMethod != null and bidPriceLinkageMethod != ''">bid_price_linkage_method = #{bidPriceLinkageMethod},</if>
<if test="bidOtherRequire != null and bidOtherRequire != ''">bid_other_require = #{bidOtherRequire},</if>
<if test="bidWinningAmount != null and bidWinningAmount != ''">bid_winning_amount = #{bidWinningAmount},</if>
<if test="bidCopperCableAmount != null and bidCopperCableAmount != ''">bid_copper_cable_amount = #{bidCopperCableAmount},</if>
<if test="bidAluminumCableAmount != null and bidAluminumCableAmount != ''">bid_aluminum_cable_amount = #{bidAluminumCableAmount},</if>
<if test="bidOpenClose != null and bidOpenClose != ''">bid_open_close = #{bidOpenClose},</if>
<if test="bidPriceAdjustmentNotice != null and bidPriceAdjustmentNotice != ''">bid_price_adjustment_notice = #{bidPriceAdjustmentNotice},</if>
<if test="bidValidityPeriod != null and bidValidityPeriod != ''">bid_validity_period = #{bidValidityPeriod},</if>
<if test="bidTongPrice != null and bidTongPrice != ''">bid_tong_price = #{bidTongPrice},</if>
<if test="bidLvPrice != null and bidLvPrice != ''">bid_lv_price = #{bidLvPrice},</if>
<if test="bidDs != null and bidDs != ''">bid_ds = #{bidDs},</if>
<if test="bidFactoryPrice != null and bidFactoryPrice != ''">bid_factory_price = #{bidFactoryPrice},</if>
<if test="bidPrice != null and bidPrice != ''">bid_price = #{bidPrice},</if>
<if test="bidBusinessSettlement != null and bidBusinessSettlement != ''">bid_business_settlement = #{bidBusinessSettlement},</if>
<if test="bidBond != null and bidBond != ''">bid_bond = #{bidBond},</if>
<if test="bidWinningServiceFee != null and bidWinningServiceFee != ''">bid_winning_service_fee = #{bidWinningServiceFee},</if>
<if test="bidPerformanceBond != null and bidPerformanceBond != ''">bid_performance_bond = #{bidPerformanceBond},</if>
<if test="bidDeliveryDate != null and bidDeliveryDate != ''">bid_delivery_date = #{bidDeliveryDate},</if>
<if test="bidWarrantyPeriod != null and bidWarrantyPeriod != ''">bid_warranty_period = #{bidWarrantyPeriod},</if>
<if test="bidBidding != null and bidBidding != ''">bid_bidding = #{bidBidding},</if>
<if test="bidEvaluationMethod != null and bidEvaluationMethod != ''">bid_evaluation_method = #{bidEvaluationMethod},</if>
<if test="bidTechnicalRequire != null and bidTechnicalRequire != ''">bid_technical_require = #{bidTechnicalRequire},</if>
<if test="bidPriceLinkage != null and bidPriceLinkage != ''">bid_price_linkage = #{bidPriceLinkage},</if>
<if test="bidPaymentMethod != null and bidPaymentMethod != ''">bid_payment_method = #{bidPaymentMethod},</if>
<if test="bidOtherMatters != null and bidOtherMatters != ''">bid_other_matters = #{bidOtherMatters},</if>
<if test="bidZbr != null and bidZbr != ''">bid_zbr = #{bidZbr},</if>
<if test="bidJdr != null and bidJdr != ''">bid_jdr = #{bidJdr},</if>
<if test="bidShr != null and bidShr != ''">bid_shr = #{bidShr},</if>
<if test="bidApprovalStatus != null and bidApprovalStatus != ''">bid_approval_status = #{bidApprovalStatus},</if>
<if test="bidNotificationAward != null and bidNotificationAward != ''">bid_notification_award = #{bidNotificationAward},</if>
<if test="bidRemark != null and bidRemark != ''">bid_remark = #{bidRemark},</if>
<if test="bidReturnRemark != null and bidReturnRemark != ''">bid_returnRemark = #{bidReturnRemark},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
</trim>
where bid_id = #{bidId}
</update>
<delete id="deleteBidByBidId" parameterType="String">
delete from bid where bid_id = #{bidId}
</delete>
<delete id="deleteBidByBidIds" parameterType="String">
delete from bid where bid_id in
<foreach item="bidId" collection="array" open="(" separator="," close=")">
#{bidId}
</foreach>
</delete>
<select id="getCode" resultType="String" statementType="CALLABLE">
{call GetSerialNo(#{type,mode=IN,jdbcType=VARCHAR})}
</select>
</mapper>

View File

@ -0,0 +1,71 @@
import request from '@/utils/request'
// 查询投标信息列表
export function listBid(query) {
return request({
url: '/bid/bid/list',
method: 'get',
params: query
})
}
// 查询投标信息详细
export function getBid(bidId) {
return request({
url: '/bid/bid/' + bidId,
method: 'get'
})
}
// 新增投标信息
export function addBid(data) {
return request({
url: '/bid/bid',
method: 'post',
data: data
})
}
// 修改投标信息
export function updateBid(data) {
return request({
url: '/bid/bid',
method: 'put',
data: data
})
}
// 查询附件列表
export function bidFileList(query) {
return request({
url: '/bid/bid/bidFileList',
method: 'get',
params: query
})
}
//删除附件
export function bidFileDelete(fileId) {
return request({
url: '/bid/bid/bidFileDelete',
method: 'post',
params: {fileId:fileId}
})
}
//提交OA事业部经理、店长/投标办按钮
export function commitTbxx(data) {
return request({
url: '/bid/bid/commitTbxx',
method: 'post',
data: data
})
}
// 删除投标信息
export function delBid(bidId) {
return request({
url: '/bid/bid/' + bidId,
method: 'delete'
})
}

View File

@ -0,0 +1,916 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="标书编号" prop="bidCode">
<el-input
v-model="queryParams.bidCode"
placeholder="请输入标书编号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="开标日期">
<el-date-picker
v-model="daterangeBidOpeningDate"
style="width: 240px"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item>
<el-form-item label="招标单位" prop="bidTenderingUnit">
<el-input
v-model="queryParams.bidTenderingUnit"
placeholder="请输入招标单位"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="项目名称" prop="bidProject">
<el-input
v-model="queryParams.bidProject"
placeholder="请输入项目名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="授权代表" prop="bidAuthorizedRepresentative">
<el-input
v-model="queryParams.bidAuthorizedRepresentative"
placeholder="请输入授权代表"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="提交状态" prop="bidApprovalStatus">
<el-select v-model="queryParams.bidApprovalStatus" placeholder="请选择提交状态" clearable>
<el-option
v-for="dict in dict.type.bid_approval_status"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['bid:bid:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['bid:bid:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['bid:bid:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['bid:bid:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<div v-tableHeight="{customHeight: 76}">
<el-table height="100%" v-loading="loading" :data="bidList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="投标信息Id" align="center" prop="bidId" v-if="false" />
<el-table-column fixed label="标书编号" align="center" prop="bidCode" width="200px">
<template slot-scope="scope">
<el-link :underline="false" type="primary" @click="handleUpdate(scope.row)">{{scope.row.bidCode}}</el-link>
</template>
</el-table-column>
<el-table-column fixed label="提交状态" align="center" prop="bidApprovalStatus">
<template slot-scope="scope">
<dict-tag :options="dict.type.bid_approval_status" :value="scope.row.bidApprovalStatus"/>
</template>
</el-table-column>
<el-table-column label="原报名编号" align="center" prop="bidRegistrationNumber" width="200px"/>
<el-table-column label="业务员" align="center" prop="bidSalesmanName" width="150px"/>
<el-table-column label="开标日期" align="center" prop="bidOpeningDate" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.bidOpeningDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="招标单位" align="center" prop="bidTenderingUnit" width="250px" />
<el-table-column label="招标代理" align="center" prop="bidAgency" width="250px" />
<el-table-column label="项目名称" align="center" prop="bidProject" width="250px" />
<el-table-column label="授权代表" align="center" prop="bidAuthorizedRepresentative" width="100px" />
<el-table-column label="创建人" align="center" prop="createName" width="150px"/>
<el-table-column label="创建时间" align="center" prop="createTime" width="160">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="制标人" align="center" prop="bidZbr" width="100px" />
<el-table-column label="校对人" align="center" prop="bidJdr" width="100px" />
<el-table-column label="审核人" align="center" prop="bidShr" width="100px" />
</el-table>
</div>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改投标信息对话框 -->
<el-dialog :title="title" :visible.sync="open" width="1150px" v-el-drag-dialog append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="150px">
<el-divider content-position="left" class="customer_divider_text">当前协助情况</el-divider>
<el-row>
<el-col :span="4">
<el-form-item label="提交状态" prop="quotApprovalStatus">
<dict-tag :options="dict.type.bid_approval_status" :value="this.form.bidApprovalStatus"/>
</el-form-item>
</el-col>
</el-row>
<el-divider content-position="left" class="customer_divider_text">基本信息</el-divider>
<el-row :gutter="8">
<el-col :span="8">
<el-form-item label="标书编号" prop="bidCode">
<el-input v-model="form.bidCode" placeholder="系统自动生成" :disabled="true"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="原报名编号" prop="bidRegistrationNumber">
<el-input v-model="form.bidRegistrationNumber" placeholder="请输入原报名编号" :disabled="this.form.bidApprovalStatus != '0' && this.form.bidApprovalStatus != null"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="业务员" prop="bidSalesmanName">
<el-input v-model="form.bidSalesmanName" :disabled="true" style="width: 60%"/>
<el-input v-model="form.bidSalesmanBm" v-if="false"/>
<el-input v-model="form.bidSalesmanCode" v-if="false"/>
<el-button type="primary" icon="el-icon-search" style="margin-left: 10px" @click="openPeopleSelect" size="mini" v-if="checkRole(['BID'])"></el-button>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="8">
<el-col :span="8">
<el-form-item label="开标日期" prop="bidOpeningDate">
<el-date-picker clearable
v-model="form.bidOpeningDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择开标日期"
:disabled="this.form.bidApprovalStatus != '0' && this.form.bidApprovalStatus != null">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="是否网上报价" prop="bidOnlineQuotation">
<el-select v-model="form.bidOnlineQuotation" :disabled="this.form.bidApprovalStatus != '0' && this.form.bidApprovalStatus != null">
<el-option
v-for="dict in dict.type.bid_online_quotation"
:key="dict.value"
:label="dict.label"
:value="dict.value"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="报价平台网址" prop="bidWebsite">
<el-input v-model="form.bidWebsite" placeholder="请输入报价平台网址" :disabled="this.form.bidApprovalStatus != '0' && this.form.bidApprovalStatus != null" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="8">
<el-col :span="12">
<el-form-item label="招标单位" prop="bidTenderingUnit">
<el-input v-model="form.bidTenderingUnitBm" v-if="false"/>
<el-input v-model="form.bidTenderingUnit" placeholder="请输入招标单位" :disabled="true">
<el-button slot="append" icon="el-icon-search" @click="openCustomer" v-if="this.form.bidApprovalStatus == '0' || this.form.bidApprovalStatus == null"></el-button>
</el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="招标代理" prop="bidAgency">
<el-input v-model="form.bidAgency" placeholder="请输入招标代理" :disabled="this.form.bidApprovalStatus != '0' && this.form.bidApprovalStatus != null" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="8">
<el-col :span="24">
<el-form-item label="项目名称" prop="bidProject">
<el-input type="textarea" autosize v-model="form.bidProject" placeholder="请输入项目名称" :disabled="this.form.bidApprovalStatus != '0' && this.form.bidApprovalStatus != null" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="8">
<el-col :span="8">
<el-form-item label="授权代表" prop="bidAuthorizedRepresentative">
<el-input v-model="form.bidAuthorizedRepresentative" placeholder="请输入授权代表" :disabled="this.form.bidApprovalStatus != '0' && this.form.bidApprovalStatus != null" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="联系方式" prop="bidAuthorizedPhone">
<el-input v-model="form.bidAuthorizedPhone" placeholder="请输入授权人联系方式" :disabled="this.form.bidApprovalStatus != '0' && this.form.bidApprovalStatus != null" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="8">
<el-col :span="24">
<el-form-item label="招标文件付款方式" prop="bidFilePaymentMethod">
<el-input type="textarea" autosize v-model="form.bidFilePaymentMethod" placeholder="请输入招标文件付款方式" :disabled="this.form.bidApprovalStatus != '0' && this.form.bidApprovalStatus != null" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="8">
<el-col :span="24">
<el-form-item label="投标付款偏差" prop="bidPaymentDeviation">
<el-input type="textarea" autosize v-model="form.bidPaymentDeviation" placeholder="请输入投标付款偏差" :disabled="this.form.bidApprovalStatus != '0' && this.form.bidApprovalStatus != null" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="8">
<el-col :span="8">
<el-form-item label="是否铜价联动" prop="bidCopperPriceLinkage">
<el-select v-model="form.bidCopperPriceLinkage" :disabled="this.form.bidApprovalStatus != '0' && this.form.bidApprovalStatus != null">
<el-option
v-for="dict in dict.type.bid_copper_price_linkage"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="16">
<el-form-item label="价格联动方式" prop="bidPriceLinkageMethod">
<el-input type="textarea" autosize v-model="form.bidPriceLinkageMethod" placeholder="请输入价格联动方式" :disabled="this.form.bidApprovalStatus != '0' && this.form.bidApprovalStatus != null" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="8">
<el-col :span="24">
<el-form-item label="其他投标要求" prop="bidOtherRequire">
<el-input type="textarea" autosize v-model="form.bidOtherRequire" placeholder="请输入其他投标要求" :disabled="this.form.bidApprovalStatus != '0' && this.form.bidApprovalStatus != null" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="8">
<el-col :span="24" v-if="this.form.bidApprovalStatus != '0' && this.form.bidApprovalStatus != null">
<el-form-item label="反馈说明" prop="bidReturnRemark">
<el-input type="textarea" autosize v-model="form.bidReturnRemark" placeholder="投标办填写" :disabled="this.form.bidApprovalStatus == 2"/>
</el-form-item>
</el-col>
</el-row>
<el-divider content-position="left" class="customer_divider_text">业务员附件(先保存再上传)</el-divider>
<div v-hasPermi="['bid:bid:bidYwyFile']">
<el-upload class="upload-demo"
ref="bidYwyFileUpload"
name="bidFile"
:action="uploadUrl"
:headers="headers"
:data="{ relation_id: this.form.bidId,file_type: 'bidYwyFile' }"
:before-upload="beforeAvatarUploadBidYwyFile"
:on-success="handleAvatarSuccess"
:show-file-list="false"
:limit="1"
v-if="this.form.bidApprovalStatus == '0'">
<el-button size="mini" type="primary" @click="uploadFile('bidYwyFile')">上传文件</el-button>
</el-upload>
</div>
<el-table class="down" v-loading="bidYwyFileLoading" :data="bidYwyFileList" border stripe style="width: 100%;margin-top: 10px;" height="200px">
<el-table-column prop="fileName" label="文件名称" ></el-table-column>
<el-table-column prop="fileSize" label="文件大小" width="150px">
<template slot-scope="scope">
<span v-if="scope.row.fileSize / 1024 / 1024 < 1">{{(scope.row.fileSize / 1024).toFixed(2) + 'KB'}}</span>
<span v-else>{{(scope.row.fileSize / 1024 / 1024).toFixed(2) + 'MB'}}</span>
</template>
</el-table-column>
<el-table-column prop="fileTime" label="上传时间" width="200px"></el-table-column>
<el-table-column width="150px" label="操作">
<template slot-scope="scope">
<el-button :key="Math.random()" size="small" type="text">
<a @click="downloadFile(scope.row.fileUrl)">下载</a>
</el-button>
<el-button :key="Math.random()" size="small" type="text" v-if="form.bidApprovalStatus == '0'">
<a @click="deleteFile(scope.row.fileId,'bidYwyFile')">删除</a>
</el-button>
</template>
</el-table-column>
</el-table>
<div v-if="checkRole(['BID']) ">
<el-divider content-position="left" class="customer_divider_text">投标信息</el-divider>
<el-row :gutter="8">
<el-col :span="8">
<el-form-item label="中标金额" prop="bidWinningAmount">
<el-input v-model="form.bidWinningAmount" placeholder="请输入中标金额" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="铜电缆金额" prop="bidCopperCableAmount">
<el-input v-model="form.bidCopperCableAmount" placeholder="请输入铜电缆金额" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="铝电缆金额" prop="bidAluminumCableAmount">
<el-input v-model="form.bidAluminumCableAmount" placeholder="请输入铝电缆金额" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="8">
<el-col :span="8">
<el-form-item label="开闭口" prop="bidOpenClose">
<el-select v-model="form.bidOpenClose">
<el-option
v-for="dict in dict.type.bid_open_close"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="调价通知" prop="bidPriceAdjustmentNotice">
<el-input v-model="form.bidPriceAdjustmentNotice" placeholder="请输入调价通知" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="投标有效期" prop="bidValidityPeriod">
<el-input v-model="form.bidValidityPeriod" placeholder="请输入投标有效期" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="8">
<el-col :span="8">
<el-form-item label="铜价" prop="bidTongPrice">
<el-input v-model="form.bidTongPrice" placeholder="请输入铜价" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="铝价" prop="bidLvPrice">
<el-input v-model="form.bidLvPrice" placeholder="请输入铝价" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="点数" prop="bidDs">
<el-input v-model="form.bidDs" placeholder="请输入点数" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="8">
<el-col :span="8">
<el-form-item label="厂价" prop="bidFactoryPrice">
<el-input v-model="form.bidFactoryPrice" placeholder="请输入厂价" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="投标价" prop="bidPrice">
<el-input v-model="form.bidPrice" placeholder="请输入投标价" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="业务费结算" prop="bidBusinessSettlement">
<el-input v-model="form.bidBusinessSettlement" placeholder="请输入业务费结算" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="8">
<el-col :span="8">
<el-form-item label="保证金" prop="bidBond">
<el-input v-model="form.bidBond" placeholder="请输入保证金" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="中标服务费" prop="bidWinningServiceFee">
<el-input v-model="form.bidWinningServiceFee" placeholder="请输入中标服务费" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="履约保证金" prop="bidPerformanceBond">
<el-input v-model="form.bidPerformanceBond" placeholder="请输入履约保证金" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="8">
<el-col :span="8">
<el-form-item label="交货期" prop="bidDeliveryDate">
<el-input v-model="form.bidDeliveryDate" placeholder="请输入交货期" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="质保期" prop="bidWarrantyPeriod">
<el-input v-model="form.bidWarrantyPeriod" placeholder="请输入质保期" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="是否竞价" prop="bidBidding">
<el-select v-model="form.bidBidding">
<el-option
v-for="dict in dict.type.bid_bidding"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="8">
<el-col :span="16">
<el-form-item label="评标办法" prop="bidEvaluationMethod">
<el-input v-model="form.bidEvaluationMethod" placeholder="请输入评标办法" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="有无中标通知书" prop="bidNotificationAward">
<el-select v-model="form.bidNotificationAward">
<el-option
v-for="dict in dict.type.bid_notification_award"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="8">
<el-col :span="24">
<el-form-item label="技术要求" prop="bidTechnicalRequire">
<el-input v-model="form.bidTechnicalRequire" placeholder="请输入技术要求" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="8">
<el-col :span="24">
<el-form-item label="价格联动" prop="bidPriceLinkage">
<el-input v-model="form.bidPriceLinkage" placeholder="请输入价格联动" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="8">
<el-col :span="24">
<el-form-item label="付款方式" prop="bidPaymentMethod">
<el-input v-model="form.bidPaymentMethod" placeholder="请输入付款方式" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="8">
<el-col :span="24">
<el-form-item label="其余事项" prop="bidOtherMatters">
<el-input v-model="form.bidOtherMatters" placeholder="请输入其余事项" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="8">
<el-col :span="8">
<el-form-item label="制标人" prop="bidZbr">
<el-input v-model="form.bidZbr" placeholder="请输入制标人" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="校对人" prop="bidJdr">
<el-input v-model="form.bidJdr" placeholder="请输入校对人" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="审核人" prop="bidShr">
<el-input v-model="form.bidShr" placeholder="请输入审核人" />
</el-form-item>
</el-col>
</el-row>
</div>
</el-form>
<div slot="footer" class="dialog-footer">
<div style="height: 25px;">
<!-- 业务员提交保存-->
<span v-hasPermi="['bid:bid:save']"><el-button @click="saveForm" v-if="this.form.bidApprovalStatus == '0' || this.form.bidApprovalStatus == null"> </el-button></span>
<span style="margin-left: 10px" v-hasPermi="['bid:bid:commit']"><el-button type="primary" plain @click="commitForm" v-if="this.form.bidApprovalStatus == '0' || this.form.bidApprovalStatus == null"> </el-button></span>
</div>
</div>
<!-- 客户选择对话框-->
<CustomerSelect ref="customerSelect" :open="customerOpen" @submit="submitCustomer" @cancel="customerOpen=false"></CustomerSelect>
</el-dialog>
</div>
</template>
<style>
/** 弹窗设置 */
.el-dialog__body {
padding: 10px 10px;
color: #606266;
font-size: 14px;
word-break: break-all;
overflow-y: auto; /** 自动显示垂直滚动条 */
max-height: 580px; /** 设置最大高度,根据需要调整 */
}
/** divider 文本样式 */
.customer_divider_text .el-divider__text{
color: #1890ff;
font-size: 18px;
font-weight: 600;
}
</style>
<script>
import { checkPermi,checkRole } from '@/utils/permission';//
import { getToken } from "@/utils/auth";
import { listBid, getBid, delBid, addBid, updateBid, bidFileList,bidFileDelete, commitTbxx } from "@/api/bid/bid";
/** 弹窗放大、拖拽 */
import elDragDialog from "@/directive/dialog/dragDialog";
/** 导入客户选择组件 */
import CustomerSelect from "@/views/components/Tools/CustomerSelect/index.vue";
export default {
name: "Bid",
directives: {
elDragDialog,
},
components: {
//
'CustomerSelect': CustomerSelect
},
dicts: ['bid_approval_status','bid_online_quotation','bid_copper_price_linkage','bid_open_close','bid_bidding','bid_notification_award'],
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
bidList: [],
//
title: "",
//
open: false,
//
customerOpen:false,
//
daterangeBidOpeningDate: [],
//-
uploadUrl: process.env.VUE_APP_BASE_API + "/bid/bid/bidFile",
//-
headers: {Authorization: "Bearer " + getToken()},
// -
activeName: '',
bidYwyFileLoading: false,
bidYwyFileList: [],
bidTbbFileLoading: false,
bidTbbFileList: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
bidCode: null,
bidOpeningDate: null,
bidTenderingUnit: null,
bidProject: null,
bidAuthorizedRepresentative: null,
bidApprovalStatus: null,
},
//
form: {},
//
rules: {
bidSalesmanName: [
{ required: true, message: "业务员不能为空", trigger: "blur" }
],
bidOpeningDate: [
{ required: true, message: "开标日期不能为空", trigger: "blur" }
],
bidTenderingUnit: [
{ required: true, message: "招标单位不能为空", trigger: "blur" }
],
bidProject: [
{ required: true, message: "项目名称不能为空", trigger: "blur" }
],
bidAuthorizedRepresentative: [
{ required: true, message: "授权代表不能为空", trigger: "blur" }
],
bidAuthorizedPhone: [
{ required: true, message: "授权人联系方式不能为空", trigger: "blur" }
],
bidFilePaymentMethod: [
{ required: true, message: "招标文件付款方式不能为空", trigger: "blur" }
],
bidPaymentDeviation: [
{ required: true, message: "投标付款偏差不能为空", trigger: "blur" }
],
}
};
},
created() {
this.getList();
},
methods: {
/** 权限控制 */
checkPermi,
checkRole,
/** 查询投标信息列表 */
getList() {
this.loading = true;
this.queryParams.params = {};
if (null != this.daterangeBidOpeningDate && '' != this.daterangeBidOpeningDate) {
this.queryParams.params["beginBidOpeningDate"] = this.daterangeBidOpeningDate[0];
this.queryParams.params["endBidOpeningDate"] = this.daterangeBidOpeningDate[1];
}
listBid(this.queryParams).then(response => {
this.bidList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
bidId: null,
bidCode: null,
bidSalesmanName: null,
bidSalesmanBm: null,
bidSalesmanCode: null,
bidRegistrationNumber: null,
bidOpeningDate: null,
bidOnlineQuotation: null,
bidWebsite: null,
bidTenderingUnitBm: null,
bidTenderingUnit: null,
bidAgency: null,
bidProject: null,
bidAuthorizedRepresentative: null,
bidAuthorizedPhone: null,
bidFilePaymentMethod: null,
bidPaymentDeviation: null,
bidCopperPriceLinkage: null,
bidPriceLinkageMethod: null,
bidOtherRequire: null,
bidWinningAmount: null,
bidCopperCableAmount: null,
bidAluminumCableAmount: null,
bidOpenClose: null,
bidPriceAdjustmentNotice: null,
bidValidityPeriod: null,
bidTongPrice: null,
bidLvPrice: null,
bidDs: null,
bidFactoryPrice: null,
bidPrice: null,
bidBusinessSettlement: null,
bidBond: null,
bidWinningServiceFee: null,
bidPerformanceBond: null,
bidDeliveryDate: null,
bidWarrantyPeriod: null,
bidBidding: null,
bidEvaluationMethod: null,
bidTechnicalRequire: null,
bidPriceLinkage: null,
bidPaymentMethod: null,
bidOtherMatters: null,
bidZbr: null,
bidJdr: null,
bidShr: null,
bidApprovalStatus: null,
bidNotificationAward: null,
bidRemark: null,
bidReturnRemark: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null
};
this.resetForm("form");
},
/** 打开客户选择弹窗 */
openCustomer(){
this.customerOpen=true;
},
/** 客户选择确定按钮事件 */
submitCustomer(customer){
this.form.bidTenderingUnitBm = customer.value;
this.form.bidTenderingUnit = customer.label;
this.customerOpen=false;
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.daterangeBidOpeningDate = [];
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.bidId)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "投标信息";
this.form.bidSalesmanName = this.$store.state.user.nickName;
this.form.bidSalesmanBm = this.$store.state.user.sapBm;
this.form.bidSalesmanCode = this.$store.state.user.name;
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const bidId = row.bidId || this.ids
getBid(bidId).then(response => {
this.form = response.data;
this.open = true;
this.title = "投标信息";
});
},
/** 保存按钮 */
saveForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.bidId != null) {
updateBid(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addBid(this.form).then(response => {
this.$modal.msgSuccess("创建成功");
const row = {'bidId':response.data.bidId}
this.handleUpdate(row);
});
}
}
});
},
/** 提交OA事业部经理、店长/投标办按钮 */
commitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
commitTbxx(this.form).then(response => {
this.$modal.msgSuccess("提交成功");
this.open = false;
this.getList();
});
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const bidIds = row.bidId || this.ids;
this.$modal.confirm('是否确认删除所选投标信息?').then(function() {
return delBid(bidIds);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('bid/bid/export', {
...this.queryParams
}, `bid_${new Date().getTime()}.xlsx`)
},
/*********************************附件列表数据展示、上传*****************************************/
//
uploadFile(activeName){
this.activeName = activeName
},
//-
beforeAvatarUploadBidYwyFile(file){
this.bidYwyFileLoading = true;
const maxSize = 100 * 1024 * 1024; // 100MB
if (file.size > maxSize) {
this.$modal.msgError("文件大小超过了"+maxSize / (1024 * 1024)+"MB的限制");
this.bidYwyFileLoading = false;
return false;
}
},
//
handleAvatarSuccess(res) {
let activeName = this.activeName;
//
if (res.code == 200) {
this.$modal.msgSuccess(res.msg);
if(activeName=='bidYwyFile'){
this.getBidYwyFileList();
this.bidYwyFileLoading = false;
this.$refs.bidYwyFileUpload.clearFiles(); //****
}else if(activeName=='bidTbbFile'){
this.getBidTbbFileList();
this.bidTbbFileLoading = false;
this.$refs.bidTbbFileUpload.clearFiles(); //****
}
} else {
this.$modal.msgError(res.msg);
if(activeName=='bidYwyFile'){
this.bidYwyFileLoading = false;
this.$refs.bidYwyFileUpload.clearFiles(); //****
}else if(activeName=='bidTbbFile'){
this.bidTbbFileLoading = false;
this.$refs.bidTbbFileUpload.clearFiles(); //****
}
}
},
//-
getBidYwyFileList(){
const param = {relationId:this.form.bidId,fileType:'bidYwyFile'}
bidFileList(param).then(response => {
this.bidYwyFileList = response.rows;
});
},
//-
getBidTbbFileList(){
const param = {relationId:this.form.bidId,fileType:'bidTbbFile'}
bidFileList(param).then(response => {
this.bidYwyFileList = response.rows;
});
},
//
downloadFile(fileUrl){
window.open(fileUrl, "_blank");
},
//
deleteFile(fileId,activeName){
if(activeName=='bidYwyFile'){
this.bidYwyFileLoading = true;
bidFileDelete(fileId).then(response => {
this.getBidYwyFileList();
this.bidYwyFileLoading = false;
})
}else if(activeName=='bidTbbFile'){
this.bidTbbFileLoading = true;
bidFileDelete(fileId).then(response => {
this.getBidTbbFileList();
this.bidTbbFileLoading = false;
})
}
},
/*********************************附件列表数据展示、上传*****************************************/
}
};
</script>

View File

@ -160,7 +160,7 @@
<el-table height="100%" v-loading="loading" :data="quotList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="报价单ID" align="center" prop="quotId" v-if="false"/>
<el-table-column fixed label="询价单号" align="center" prop="quotCode" width="250px">
<el-table-column fixed label="询价单号" align="center" prop="quotCode" width="200px">
<template slot-scope="scope">
<el-link :underline="false" type="primary" @click="handleUpdate(scope.row)">{{scope.row.quotCode}}</el-link>
</template>

View File

@ -37,7 +37,7 @@
</template>
</el-table-column>
<el-table-column fixed="left" label="quot_id" align="center" prop="quot_id" v-if="false"/>
<el-table-column fixed="left" label="报价单号" width="260" align="center" prop="quotCode">
<el-table-column fixed="left" label="报价单号" width="200" align="center" prop="quotCode">
<template slot-scope="scope">
<el-link :underline="false" type="primary" @click="handleDetail(scope.row)">{{scope.row.quotCode}}</el-link>
</template>