This commit is contained in:
xd 2024-07-24 08:52:11 +08:00
parent 8085815b69
commit f951c3f19c
23 changed files with 1945 additions and 61 deletions

View File

@ -16,7 +16,8 @@ import com.ruoyi.common.utils.file.FileUploadUtils;
import com.ruoyi.common.utils.file.MinioUtil;
import com.ruoyi.common.utils.uuid.UUID;
import com.ruoyi.framework.changeRecord.ChangeRecordLog;
import com.ruoyi.quot.domain.Quot;
import com.ruoyi.priceVerification.domain.BidHj;
import com.ruoyi.priceVerification.service.IBidHjService;
import com.ruoyi.redBook.domain.OAQuot;
import com.ruoyi.redBook.domain.RbVersionDateResult;
import com.ruoyi.system.service.ISysDeptService;
@ -57,6 +58,9 @@ public class BidController extends BaseController
@Autowired
private IBidJsqrService bidJsqrService;
@Autowired
private IBidHjService bidHjService;
@Autowired
private ISysUserService userService;
@ -199,7 +203,7 @@ public class BidController extends BaseController
* @return
* @throws Exception
*/
@PreAuthorize("@ss.hasAnyPermi('bid:bid:bidYwyFile,bid:bid:bidTbbFile')")
@PreAuthorize("@ss.hasAnyPermi('bid:bid:bidYwyFile,bid:bid:bidTbbFile,bid:bid:bidTbbJsgfFile,jsqrBid:jsqrBid:operateTlUploadFile,jsqrBid:jsqrBid:operateDyUploadFile,jsqrBid:jsqrBid:operateZyUploadFile,jsqrBid:jsqrBid:operateQtUploadFile,bidPriceVerification:bidPriceVerification:uploadFile')")
@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
@ -235,7 +239,7 @@ public class BidController extends BaseController
/**
* 查询附件列表
*/
@PreAuthorize("@ss.hasAnyPermi('bid:bid:list')")
@PreAuthorize("@ss.hasAnyPermi('bid:bid:list,jsqrBid:jsqrBid:list,bidPriceVerification:bidPriceVerification:list')")
@GetMapping("/bidFileList")
public TableDataInfo bidFileList(BidFile bidFile)
{
@ -461,6 +465,37 @@ public class BidController extends BaseController
return success();
}
/**
* 报价单提交核价协助
*/
@PreAuthorize("@ss.hasPermi('bid:bid:assistHj')")
@Log(title = "投标提交核价协助", businessType = BusinessType.OTHER)
@PostMapping("/commitHjBid")
public AjaxResult commitHjBid(@RequestBody Bid bid)
{
BidHj bidHj = new BidHj();
String bidHjId = UUID.fastUUID().toString();
bidHj.setBidHjId(bidHjId);
//bidHj.setBidHjCode(IdUtils.createNo("BJD_HJ_",0));
String bidHjCode = bidService.getCode("TB_HJD");
bidHj.setBidHjCode(bidHjCode);
bidHj.setBidHjPricingType("30");//核价类型 设置为 标书核价
bidHj.setCreateBy(getUsername());
bidHj.setUpdateBy(getUsername());
bidHjService.insertBidHj(bidHj);//生成报价单-核价单
bid.setBidHjId(bidHjId);
bid.setBidHjApprovalStatus("1");//报价单-核价单 状态设置为 协助中
bid.setUpdateBy(getUsername());
bidService.updateBid(bid);
//sendNoticeToHjxz(bidHj);
return success();
}
/**
* 投标驳回
*/

View File

@ -0,0 +1,163 @@
package com.ruoyi.web.controller.priceVerification;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.constant.WebsocketConst;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.bid.domain.Bid;
import com.ruoyi.bid.service.IBidService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.priceVerification.domain.BidHj;
import com.ruoyi.priceVerification.service.IBidHjService;
import com.ruoyi.system.service.ISysNoticeService;
import com.ruoyi.web.utils.SendNotice.NoticeUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* 投标单-核价单Controller
*
* @author ruoyi
* @date 2024-04-16
*/
@RestController
@RequestMapping("/bidPriceVerification/bidPriceVerification")
public class BidHjController extends BaseController
{
@Autowired
private IBidHjService bidHjService;
@Autowired
private IBidService bidService;
@Autowired
private ISysNoticeService noticeService;
/**
* 查询投标单-核价单列表
*/
@PreAuthorize("@ss.hasPermi('bidPriceVerification:bidPriceVerification:list')")
@GetMapping("/list")
public TableDataInfo list(BidHj bidHj)
{
startPage();
List<BidHj> list = bidHjService.selectBidHjList(bidHj);
return getDataTable(list);
}
/**
* 导出投标单-核价单列表
*/
@PreAuthorize("@ss.hasPermi('bidPriceVerification:bidPriceVerification:export')")
@Log(title = "投标单-核价单导出列表", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, BidHj bidHj)
{
List<BidHj> list = bidHjService.selectBidHjList(bidHj);
ExcelUtil<BidHj> util = new ExcelUtil<BidHj>(BidHj.class);
util.exportExcel(response, list, "投标单-核价单数据");
}
/**
* 获取投标单-核价单详细信息
*/
@PreAuthorize("@ss.hasPermi('bidPriceVerification:bidPriceVerification:query')")
@GetMapping(value = "/{bidHjId}")
public AjaxResult getInfo(@PathVariable("bidHjId") String bidHjId)
{
return success(bidHjService.selectBidHjByBidHjId(bidHjId));
}
/**
* 新增投标单-核价单
*/
@PreAuthorize("@ss.hasPermi('bidPriceVerification:bidPriceVerification:add')")
@Log(title = "投标单-核价单新增", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody BidHj bidHj)
{
return toAjax(bidHjService.insertBidHj(bidHj));
}
/**
* 修改投标单-核价单
*/
@PreAuthorize("@ss.hasPermi('bidPriceVerification:bidPriceVerification:edit')")
@Log(title = "投标单-核价单修改", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody BidHj bidHj)
{
return toAjax(bidHjService.updateBidHj(bidHj));
}
/**
* 删除投标单-核价单
*/
@PreAuthorize("@ss.hasPermi('bidPriceVerification:bidPriceVerification:remove')")
@Log(title = "投标单-核价单删除", businessType = BusinessType.DELETE)
@DeleteMapping("/{bidHjIds}")
public AjaxResult remove(@PathVariable String[] bidHjIds)
{
return toAjax(bidHjService.deleteBidHjByBidHjIds(bidHjIds));
}
/**
* 投标单-核价单 提交投标组
*/
@PreAuthorize("@ss.hasPermi('bidPriceVerification:bidPriceVerification:commit')")
@Log(title = "投标单-核价单 提交投标组", businessType = BusinessType.UPDATE)
@PostMapping("/commitHj")
public AjaxResult commitHj(@RequestBody BidHj bidHj) {
bidHj.setUpdateBy(getUsername());
bidHj.setBidHjPricingDate(DateUtils.getNowDate());//投标单-核价单 核价日期设置为 当前日期
bidHjService.updateBidHj(bidHj);
String bidHjId = bidHj.getBidHjId();
Bid bid = bidService.selectBidByBidHjId(bidHjId);
bid.setBidHjApprovalStatus("2");//投标单-核价单 状态设置为 已协助
bidService.updateBid(bid);
//sendNoticeToBid(bidHj);// 发送给提醒
return success();
}
/**
* 发送信息-核价协助提交投标组
* @param bidHj
*/
private void sendNoticeToBid(BidHj bidHj){
//推送消息
LoginUser loginUser = getLoginUser();//当前登陆者
//获取发送人-投标组
List<String> userIds = noticeService.getSendEmp(WebsocketConst.MSG_SEND_QUOT_BJZ);
NoticeUtil.sendNoticesBusiness(loginUser,"有投标单已完成核价协助","单号:"+bidHj.getBidCode(),userIds);
}
/**
* 投标单-核价单 驳回
*/
@PreAuthorize("@ss.hasPermi('bidPriceVerification:bidPriceVerification:reject')")
@Log(title = "投标单-核价单 驳回", businessType = BusinessType.OTHER)
@PostMapping("/rejectHj")
public AjaxResult rejectHj(@RequestBody BidHj bidHj)
{
bidHj.setUpdateBy(getUsername());
bidHj.setBidHjPricingDate(DateUtils.getNowDate());//投标单-核价单 核价日期设置为 当前日期
bidHjService.updateBidHj(bidHj);
String bidHjId = bidHj.getBidHjId();
Bid bid = bidService.selectBidByBidHjId(bidHjId);
bid.setBidHjApprovalStatus("3");
bidService.updateBid(bid);
return success();
}
}

View File

@ -605,7 +605,7 @@ public class QuotController extends BaseController
String quotHjCode = quotService.getCode("HJD");
quotHj.setQuotHjCode(quotHjCode);
quotHj.setQuotHjPricingType("10");//核价类型 设置为 报价核价
quotHj.setQuotHjPricingType("20");//核价类型 设置为 报价核价
quotHj.setCreateBy(getUsername());
quotHj.setUpdateBy(getUsername());

View File

@ -167,9 +167,13 @@ public class BidJsqrController extends BaseController
// 清空redis 协助说明key
String hvalue = redisCache.getCacheMapValue("bidJsqrXzRemark",bidJsqrEntity.getBidJsqrCode()+"_TL");
if(StringUtils.isNotEmpty(hvalue) && currentUser.equals(hvalue)){
redisCache.deleteCacheMapValue("bidJsqrXzRemark",bidJsqrEntity.getBidJsqrCode()+"_TL");
redisLock.unLock(bidJsqrEntity.getBidJsqrCode()+"_TL",currentUser);
if(StringUtils.isNotEmpty(hvalue)){
if(currentUser.equals(hvalue)){
redisCache.deleteCacheMapValue("bidJsqrXzRemark",bidJsqrEntity.getBidJsqrCode()+"_TL");
redisLock.unLock(bidJsqrEntity.getBidJsqrCode()+"_TL",currentUser);
}else{
return error("当前有其他用户【"+hvalue+"】正在录入");
}
}
}
if("checker".equals(type)){//审核人通过驳回
@ -232,9 +236,13 @@ public class BidJsqrController extends BaseController
// 清空redis 协助说明key
String hvalue = redisCache.getCacheMapValue("bidJsqrXzRemark",bidJsqrEntity.getBidJsqrCode()+"_DY");
if(StringUtils.isNotEmpty(hvalue) && currentUser.equals(hvalue)){
redisCache.deleteCacheMapValue("bidJsqrXzRemark",bidJsqrEntity.getBidJsqrCode()+"_DY");
redisLock.unLock(bidJsqrEntity.getBidJsqrCode()+"_DY",currentUser);
if(StringUtils.isNotEmpty(hvalue)){
if(currentUser.equals(hvalue)){
redisCache.deleteCacheMapValue("bidJsqrXzRemark",bidJsqrEntity.getBidJsqrCode()+"_DY");
redisLock.unLock(bidJsqrEntity.getBidJsqrCode()+"_DY",currentUser);
}else{
return error("当前有其他用户【"+hvalue+"】正在录入");
}
}
}
if("checker".equals(type)){//审核人通过驳回
@ -297,9 +305,13 @@ public class BidJsqrController extends BaseController
// 清空redis 协助说明key
String hvalue = redisCache.getCacheMapValue("bidJsqrXzRemark",bidJsqrEntity.getBidJsqrCode()+"_ZY");
if(StringUtils.isNotEmpty(hvalue) && currentUser.equals(hvalue)){
redisCache.deleteCacheMapValue("bidJsqrXzRemark",bidJsqrEntity.getBidJsqrCode()+"_ZY");
redisLock.unLock(bidJsqrEntity.getBidJsqrCode()+"_ZY",currentUser);
if(StringUtils.isNotEmpty(hvalue)){
if(currentUser.equals(hvalue)){
redisCache.deleteCacheMapValue("bidJsqrXzRemark",bidJsqrEntity.getBidJsqrCode()+"_ZY");
redisLock.unLock(bidJsqrEntity.getBidJsqrCode()+"_ZY",currentUser);
}else{
return error("当前有其他用户【"+hvalue+"】正在录入");
}
}
}
if("checker".equals(type)){//审核人通过驳回
@ -363,9 +375,13 @@ public class BidJsqrController extends BaseController
// 清空redis 协助说明key
String hvalue = redisCache.getCacheMapValue("bidJsqrXzRemark",bidJsqrEntity.getBidJsqrCode()+"_QT");
if(StringUtils.isNotEmpty(hvalue) && currentUser.equals(hvalue)){
redisCache.deleteCacheMapValue("bidJsqrXzRemark",bidJsqrEntity.getBidJsqrCode()+"_QT");
redisLock.unLock(bidJsqrEntity.getBidJsqrCode()+"_QT",currentUser);
if(StringUtils.isNotEmpty(hvalue)){
if(currentUser.equals(hvalue)){
redisCache.deleteCacheMapValue("bidJsqrXzRemark",bidJsqrEntity.getBidJsqrCode()+"_QT");
redisLock.unLock(bidJsqrEntity.getBidJsqrCode()+"_QT",currentUser);
}else{
return error("当前有其他用户【"+hvalue+"】正在录入");
}
}
}
if("checker".equals(type)){//审核人通过驳回

View File

@ -167,9 +167,13 @@ public class QuotJsqrController extends BaseController
// 清空redis 协助说明key
String hvalue = redisCache.getCacheMapValue("quotJsqrXzRemark",quotJsqrEntity.getQuotJsqrCode()+"_TL");
if(StringUtils.isNotEmpty(hvalue) && currentUser.equals(hvalue)){
redisCache.deleteCacheMapValue("quotJsqrXzRemark",quotJsqrEntity.getQuotJsqrCode()+"_TL");
redisLock.unLock(quotJsqrEntity.getQuotJsqrCode()+"_TL",currentUser);
if(StringUtils.isNotEmpty(hvalue)){
if(currentUser.equals(hvalue)){
redisCache.deleteCacheMapValue("quotJsqrXzRemark",quotJsqrEntity.getQuotJsqrCode()+"_TL");
redisLock.unLock(quotJsqrEntity.getQuotJsqrCode()+"_TL",currentUser);
}else{
return error("当前有其他用户【"+hvalue+"】正在录入");
}
}
}
if("checker".equals(type)){//审核人通过驳回
@ -232,9 +236,13 @@ public class QuotJsqrController extends BaseController
// 清空redis 协助说明key
String hvalue = redisCache.getCacheMapValue("quotJsqrXzRemark",quotJsqrEntity.getQuotJsqrCode()+"_DY");
if(StringUtils.isNotEmpty(hvalue) && currentUser.equals(hvalue)){
redisCache.deleteCacheMapValue("quotJsqrXzRemark",quotJsqrEntity.getQuotJsqrCode()+"_DY");
redisLock.unLock(quotJsqrEntity.getQuotJsqrCode()+"_DY",currentUser);
if(StringUtils.isNotEmpty(hvalue)){
if(currentUser.equals(hvalue)){
redisCache.deleteCacheMapValue("quotJsqrXzRemark",quotJsqrEntity.getQuotJsqrCode()+"_DY");
redisLock.unLock(quotJsqrEntity.getQuotJsqrCode()+"_DY",currentUser);
}else{
return error("当前有其他用户【"+hvalue+"】正在录入");
}
}
}
if("checker".equals(type)){//审核人通过驳回
@ -297,9 +305,13 @@ public class QuotJsqrController extends BaseController
// 清空redis 协助说明key
String hvalue = redisCache.getCacheMapValue("quotJsqrXzRemark",quotJsqrEntity.getQuotJsqrCode()+"_ZY");
if(StringUtils.isNotEmpty(hvalue) && currentUser.equals(hvalue)){
redisCache.deleteCacheMapValue("quotJsqrXzRemark",quotJsqrEntity.getQuotJsqrCode()+"_ZY");
redisLock.unLock(quotJsqrEntity.getQuotJsqrCode()+"_ZY",currentUser);
if(StringUtils.isNotEmpty(hvalue)){
if(currentUser.equals(hvalue)){
redisCache.deleteCacheMapValue("quotJsqrXzRemark",quotJsqrEntity.getQuotJsqrCode()+"_ZY");
redisLock.unLock(quotJsqrEntity.getQuotJsqrCode()+"_ZY",currentUser);
}else{
return error("当前有其他用户【"+hvalue+"】正在录入");
}
}
}
if("checker".equals(type)){//审核人通过驳回
@ -363,9 +375,13 @@ public class QuotJsqrController extends BaseController
// 清空redis 协助说明key
String hvalue = redisCache.getCacheMapValue("quotJsqrXzRemark",quotJsqrEntity.getQuotJsqrCode()+"_QT");
if(StringUtils.isNotEmpty(hvalue) && currentUser.equals(hvalue)){
redisCache.deleteCacheMapValue("quotJsqrXzRemark",quotJsqrEntity.getQuotJsqrCode()+"_QT");
redisLock.unLock(quotJsqrEntity.getQuotJsqrCode()+"_QT",currentUser);
if(StringUtils.isNotEmpty(hvalue)){
if(currentUser.equals(hvalue)){
redisCache.deleteCacheMapValue("quotJsqrXzRemark",quotJsqrEntity.getQuotJsqrCode()+"_QT");
redisLock.unLock(quotJsqrEntity.getQuotJsqrCode()+"_QT",currentUser);
}else{
return error("当前有其他用户【"+hvalue+"】正在录入");
}
}
}
if("checker".equals(type)){//审核人通过驳回

View File

@ -250,6 +250,10 @@ public class Bid extends BaseEntity
@DataName(name = "分派接收人姓名")
private String receiveUserNickName;
/** 投标_投标状态 */
@DataName(name = "投标状态",readConverterExp="0=待投标,1=中标,2=未中标,3=流标,4=结果待定")
private String bidStatus;
@ -276,6 +280,13 @@ public class Bid extends BaseEntity
private String bidJsqrQtRemark;//技术协助-其他协助说明
/** 核价 */
private String bidHjId;//核价单id
private String bidHjCode;//核价单号
@DataName(name = "核价协助状态",readConverterExp="0=待协助,1=协助中,2=已协助,3=已驳回")
private String bidHjApprovalStatus;//核价协助状态
private String bidHjPricingDate;//核价日期
private String bidHjRemark;//核价备注
@ -672,6 +683,9 @@ public class Bid extends BaseEntity
public String getReceiveUserNickName() { return receiveUserNickName; }
public void setReceiveUserNickName(String receiveUserNickName) { this.receiveUserNickName = receiveUserNickName; }
public String getBidStatus() { return bidStatus; }
public void setBidStatus(String bidStatus) { this.bidStatus = bidStatus; }
public String getBidJsxzApprovalStatus() { return bidJsxzApprovalStatus; }
public void setBidJsxzApprovalStatus(String bidJsxzApprovalStatus) { this.bidJsxzApprovalStatus = bidJsxzApprovalStatus; }
@ -714,4 +728,19 @@ public class Bid extends BaseEntity
public String getBidJsqrQtRemark() { return bidJsqrQtRemark; }
public void setBidJsqrQtRemark(String bidJsqrQtRemark) { this.bidJsqrQtRemark = bidJsqrQtRemark; }
public String getBidHjId() { return bidHjId; }
public void setBidHjId(String bidHjId) { this.bidHjId = bidHjId; }
public String getBidHjCode() { return bidHjCode; }
public void setBidHjCode(String bidHjCode) { this.bidHjCode = bidHjCode; }
public String getBidHjApprovalStatus() { return bidHjApprovalStatus; }
public void setBidHjApprovalStatus(String bidHjApprovalStatus) { this.bidHjApprovalStatus = bidHjApprovalStatus; }
public String getBidHjPricingDate() { return bidHjPricingDate; }
public void setBidHjPricingDate(String bidHjPricingDate) { this.bidHjPricingDate = bidHjPricingDate; }
public String getBidHjRemark() { return bidHjRemark; }
public void setBidHjRemark(String bidHjRemark) { this.bidHjRemark = bidHjRemark; }
}

View File

@ -29,6 +29,13 @@ public interface BidMapper
*/
Bid selectBidByBidJsqrId(String bidJsqrId);
/**
* 获取投标信息
* @param bidHjId
* @return
*/
Bid selectBidByBidHjId(String bidHjId);
/**
* 查询投标信息列表
*
@ -106,4 +113,5 @@ public interface BidMapper
* @return
*/
RbTongLvPrice getTongLvPrice(String rbUid);
}

View File

@ -31,6 +31,14 @@ public interface IBidService
*/
Bid selectBidByBidJsqrId(String bidJsqrId);
/**
* 获取投标信息
* @param bidHjId
* @return
*/
Bid selectBidByBidHjId(String bidHjId);
/**
* 查询投标信息列表
*
@ -108,4 +116,5 @@ public interface IBidService
* @return
*/
RbTongLvPrice getTongLvPrice(String rbUid);
}

View File

@ -49,6 +49,14 @@ public class BidServiceImpl implements IBidService
return bidMapper.selectBidByBidJsqrId(bidJsqrId);
}
/**
* 获取投标信息
* @param bidHjId
* @return
*/
@Override
public Bid selectBidByBidHjId(String bidHjId) { return bidMapper.selectBidByBidHjId(bidHjId); }
/**
* 查询投标信息列表
*

View File

@ -0,0 +1,156 @@
package com.ruoyi.priceVerification.domain;
import com.ruoyi.common.core.domain.BaseEntity;
import java.util.Date;
/**
* 投标单-核价单对象 bid_hj
*
* @author ruoyi
* @date 2024-04-16
*/
public class BidHj extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 核价单Id */
private String bidHjId;
/** 核价单号 */
private String bidHjCode;
/** 核价类型 */
private String bidHjPricingType;
/** 核价日期 */
private Date bidHjPricingDate;
/** 备注 */
private String bidHjRemark;
/** 备注 */
private String bidHjApprovalStatus;
/** 创建人 */
private String createName;
/** 投标单信息 */
private String bidId;//投标单id
private String bidCode;//投标单号
private String bidSalesmanName;//业务员
private String bidTenderingUnit;//客户
private String bidProject;//项目
/** 技术协助信息 */
private String bidJsxzConfirmId;//技术协助-技术确认单id
private String bidJsxzGroupValues;//技术协助-分组
private String bidJsqrTlApprovalStatus;//技术协助-特缆协助状态
private String bidJsqrTlRemark;//技术协助-特缆协助说明
private String bidJsqrDyApprovalStatus;//技术协助-低压协助状态
private String bidJsqrDyRemark;//技术协助-低压协助说明
private String bidJsqrZyApprovalStatus;//技术协助-中压协助状态
private String bidJsqrZyRemark;//技术协助-中压协助说明
private String bidJsqrQtApprovalStatus;//技术协助-其他协助状态
private String bidJsqrQtRemark;//技术协助-其他协助说明
public void setBidHjId(String bidHjId)
{
this.bidHjId = bidHjId;
}
public String getBidHjId()
{
return bidHjId;
}
public void setBidHjCode(String bidHjCode)
{
this.bidHjCode = bidHjCode;
}
public String getBidHjCode()
{
return bidHjCode;
}
public void setBidHjPricingType(String bidHjPricingType)
{
this.bidHjPricingType = bidHjPricingType;
}
public String getBidHjPricingType()
{
return bidHjPricingType;
}
public void setBidHjPricingDate(Date bidHjPricingDate) { this.bidHjPricingDate = bidHjPricingDate; }
public Date getBidHjPricingDate()
{
return bidHjPricingDate;
}
public void setBidHjRemark(String bidHjRemark)
{
this.bidHjRemark = bidHjRemark;
}
public String getBidHjRemark()
{
return bidHjRemark;
}
public String getBidHjApprovalStatus() { return bidHjApprovalStatus; }
public void setBidHjApprovalStatus(String bidHjApprovalStatus) { this.bidHjApprovalStatus = bidHjApprovalStatus; }
public String getCreateName() { return createName; }
public void setCreateName(String createName) { this.createName = createName; }
/** 投标单信息 */
public String getBidId() { return bidId; }
public void setBidId(String bidId) { this.bidId = bidId; }
public String getBidCode() { return bidCode; }
public void setBidCode(String bidCode) { this.bidCode = bidCode; }
public String getBidSalesmanName() { return bidSalesmanName; }
public void setBidSalesmanName(String bidSalesmanName) { this.bidSalesmanName = bidSalesmanName; }
public String getBidTenderingUnit() { return bidTenderingUnit; }
public void setBidTenderingUnit(String bidTenderingUnit) { this.bidTenderingUnit = bidTenderingUnit; }
public String getBidProject() { return bidProject; }
public void setBidProject(String bidProject) { this.bidProject = bidProject; }
public String getBidJsxzConfirmId() { return bidJsxzConfirmId; }
public void setBidJsxzConfirmId(String bidJsxzConfirmId) { this.bidJsxzConfirmId = bidJsxzConfirmId; }
public String getBidJsxzGroupValues() { return bidJsxzGroupValues; }
public void setBidJsxzGroupValues(String bidJsxzGroupValues) { this.bidJsxzGroupValues = bidJsxzGroupValues; }
public String getBidJsqrTlApprovalStatus() { return bidJsqrTlApprovalStatus; }
public void setBidJsqrTlApprovalStatus(String bidJsqrTlApprovalStatus) { this.bidJsqrTlApprovalStatus = bidJsqrTlApprovalStatus; }
public String getBidJsqrTlRemark() { return bidJsqrTlRemark; }
public void setBidJsqrTlRemark(String bidJsqrTlRemark) { this.bidJsqrTlRemark = bidJsqrTlRemark; }
public String getBidJsqrDyApprovalStatus() { return bidJsqrDyApprovalStatus; }
public void setBidJsqrDyApprovalStatus(String bidJsqrDyApprovalStatus) { this.bidJsqrDyApprovalStatus = bidJsqrDyApprovalStatus; }
public String getBidJsqrDyRemark() { return bidJsqrDyRemark; }
public void setBidJsqrDyRemark(String bidJsqrDyRemark) { this.bidJsqrDyRemark = bidJsqrDyRemark; }
public String getBidJsqrZyApprovalStatus() { return bidJsqrZyApprovalStatus; }
public void setBidJsqrZyApprovalStatus(String bidJsqrZyApprovalStatus) { this.bidJsqrZyApprovalStatus = bidJsqrZyApprovalStatus; }
public String getBidJsqrZyRemark() { return bidJsqrZyRemark; }
public void setBidJsqrZyRemark(String bidJsqrZyRemark) { this.bidJsqrZyRemark = bidJsqrZyRemark; }
public String getBidJsqrQtApprovalStatus() { return bidJsqrQtApprovalStatus; }
public void setBidJsqrQtApprovalStatus(String bidJsqrQtApprovalStatus) { this.bidJsqrQtApprovalStatus = bidJsqrQtApprovalStatus; }
public String getBidJsqrQtRemark() { return bidJsqrQtRemark; }
public void setBidJsqrQtRemark(String bidJsqrQtRemark) { this.bidJsqrQtRemark = bidJsqrQtRemark; }
}

View File

@ -0,0 +1,62 @@
package com.ruoyi.priceVerification.mapper;
import com.ruoyi.priceVerification.domain.BidHj;
import java.util.List;
/**
* 投标单-核价单Mapper接口
*
* @author ruoyi
* @date 2024-04-16
*/
public interface BidHjMapper
{
/**
* 查询投标单-核价单
*
* @param bidHjId 投标单-核价单主键
* @return 投标单-核价单
*/
public BidHj selectBidHjByBidHjId(String bidHjId);
/**
* 查询投标单-核价单列表
*
* @param bidHj 投标单-核价单
* @return 投标单-核价单集合
*/
public List<BidHj> selectBidHjList(BidHj bidHj);
/**
* 新增投标单-核价单
*
* @param bidHj 投标单-核价单
* @return 结果
*/
public int insertBidHj(BidHj bidHj);
/**
* 修改投标单-核价单
*
* @param bidHj 投标单-核价单
* @return 结果
*/
public int updateBidHj(BidHj bidHj);
/**
* 删除投标单-核价单
*
* @param bidHjId 投标单-核价单主键
* @return 结果
*/
public int deleteBidHjByBidHjId(String bidHjId);
/**
* 批量删除投标单-核价单
*
* @param bidHjIds 需要删除的数据主键集合
* @return 结果
*/
public int deleteBidHjByBidHjIds(String[] bidHjIds);
}

View File

@ -0,0 +1,62 @@
package com.ruoyi.priceVerification.service;
import com.ruoyi.priceVerification.domain.BidHj;
import java.util.List;
/**
* 投标单-核价单Service接口
*
* @author ruoyi
* @date 2024-04-16
*/
public interface IBidHjService
{
/**
* 查询投标单-核价单
*
* @param bidHjId 投标单-核价单主键
* @return 投标单-核价单
*/
public BidHj selectBidHjByBidHjId(String bidHjId);
/**
* 查询投标单-核价单列表
*
* @param bidHj 投标单-核价单
* @return 投标单-核价单集合
*/
public List<BidHj> selectBidHjList(BidHj bidHj);
/**
* 新增投标单-核价单
*
* @param bidHj 投标单-核价单
* @return 结果
*/
public int insertBidHj(BidHj bidHj);
/**
* 修改投标单-核价单
*
* @param bidHj 投标单-核价单
* @return 结果
*/
public int updateBidHj(BidHj bidHj);
/**
* 批量删除投标单-核价单
*
* @param bidHjIds 需要删除的投标单-核价单主键集合
* @return 结果
*/
public int deleteBidHjByBidHjIds(String[] bidHjIds);
/**
* 删除投标单-核价单信息
*
* @param bidHjId 投标单-核价单主键
* @return 结果
*/
public int deleteBidHjByBidHjId(String bidHjId);
}

View File

@ -0,0 +1,103 @@
package com.ruoyi.priceVerification.service.impl;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.priceVerification.domain.BidHj;
import com.ruoyi.priceVerification.mapper.BidHjMapper;
import com.ruoyi.priceVerification.service.IBidHjService;
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-16
*/
@Service
public class BidHjServiceImpl implements IBidHjService
{
@Autowired
private BidHjMapper bidHjMapper;
/**
* 查询投标单-核价单
*
* @param bidHjId 投标单-核价单主键
* @return 投标单-核价单
*/
@Override
public BidHj selectBidHjByBidHjId(String bidHjId)
{
return bidHjMapper.selectBidHjByBidHjId(bidHjId);
}
/**
* 查询投标单-核价单列表
*
* @param bidHj 投标单-核价单
* @return 投标单-核价单
*/
@Override
public List<BidHj> selectBidHjList(BidHj bidHj)
{
return bidHjMapper.selectBidHjList(bidHj);
}
/**
* 新增投标单-核价单
*
* @param bidHj 投标单-核价单
* @return 结果
*/
@Transactional
@Override
public int insertBidHj(BidHj bidHj)
{
bidHj.setCreateTime(DateUtils.getNowDate());
bidHj.setUpdateTime(DateUtils.getNowDate());
return bidHjMapper.insertBidHj(bidHj);
}
/**
* 修改投标单-核价单
*
* @param bidHj 投标单-核价单
* @return 结果
*/
@Transactional
@Override
public int updateBidHj(BidHj bidHj)
{
bidHj.setUpdateTime(DateUtils.getNowDate());
return bidHjMapper.updateBidHj(bidHj);
}
/**
* 批量删除投标单-核价单
*
* @param bidHjIds 需要删除的投标单-核价单主键
* @return 结果
*/
@Transactional
@Override
public int deleteBidHjByBidHjIds(String[] bidHjIds)
{
return bidHjMapper.deleteBidHjByBidHjIds(bidHjIds);
}
/**
* 删除投标单-核价单信息
*
* @param bidHjId 投标单-核价单主键
* @return 结果
*/
@Transactional
@Override
public int deleteBidHjByBidHjId(String bidHjId)
{
return bidHjMapper.deleteBidHjByBidHjId(bidHjId);
}
}

View File

@ -61,7 +61,7 @@
<result property="setReceiveUser" column="set_receive_user" />
<result property="receiveUserName" column="receive_user_name" />
<result property="receiveUserNickName" column="receive_user_nick_name" />
<result property="bidStatus" column="bid_status" />
<result property="bidJsxzApprovalStatus" column="bid_jsxz_approval_status" />
<result property="bidJsxzTechnicalRequirement" column="bid_jsxz_technical_requirement" />
@ -78,7 +78,11 @@
<result property="bidJsqrQtApprovalStatus" column="bid_jsqr_qt_approval_status" />
<result property="bidJsqrQtRemark" column="bid_jsqr_qt_remark" />
<result property="bidHjId" column="bid_hj_id" />
<result property="bidHjCode" column="bid_hj_code" />
<result property="bidHjApprovalStatus" column="bid_hj_approval_status" />
<result property="bidHjPricingDate" column="bid_hj_pricing_date" />
<result property="bidHjRemark" column="bid_hj_remark" />
<result property="createBy" column="create_by" />
<result property="createName" column="create_name" />
@ -91,6 +95,7 @@
left join sys_user u on u.user_name=a.create_by
left join sys_dept d on u.dept_id = d.dept_id
left join bid_jsqr q on q.bid_jsqr_id = a.bid_jsxz_confirm_id
left join bid_hj h on h.bid_hj_id = a.bid_hj_id
</sql>
<sql id="selectBidVo">
@ -107,7 +112,7 @@
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.set_receive_user,a.receive_user_name,a.receive_user_nick_name,a.create_by,u.nick_name create_name, a.create_time,
a.set_receive_user,a.receive_user_name,a.receive_user_nick_name,a.bid_status,a.create_by,u.nick_name create_name, a.create_time,
a.update_by, a.update_time,
a.bid_jsxz_approval_status,a.bid_jsxz_technical_requirement,
@ -116,7 +121,11 @@
q.bid_jsqr_tl_approval_status,q.bid_jsqr_tl_remark,
q.bid_jsqr_dy_approval_status,q.bid_jsqr_dy_remark,
q.bid_jsqr_zy_approval_status,q.bid_jsqr_zy_remark,
q.bid_jsqr_qt_approval_status,q.bid_jsqr_qt_remark
q.bid_jsqr_qt_approval_status,q.bid_jsqr_qt_remark,
a.bid_hj_id,a.bid_hj_approval_status,
h.bid_hj_code,h.bid_hj_pricing_date,
h.bid_hj_remark
from bid a
<include refid="bidJoins"/>
@ -204,12 +213,16 @@
<if test="setReceiveUser != null and setReceiveUser != ''">set_receive_user,</if>
<if test="receiveUserName != null and receiveUserName != ''">receive_user_name,</if>
<if test="receiveUserNickName != null and receiveUserNickName != ''">receive_user_nick_name,</if>
<if test="bidStatus != null and bidStatus != ''">bid_status,</if>
<if test="bidJsxzApprovalStatus != null and bidJsxzApprovalStatus != ''">bid_jsxz_approval_status,</if>
<if test="bidJsxzTechnicalRequirement != null and bidJsxzTechnicalRequirement != ''">bid_jsxz_technical_requirement,</if>
<if test="bidJsxzGroupValues != null and bidJsxzGroupValues != ''">bid_jsxz_group_values,</if>
<if test="bidJsxzConfirmId != null and bidJsxzConfirmId != ''">bid_jsxz_confirm_id,</if>
<if test="bidHjId != null and bidHjId != ''">bid_hj_id,</if>
<if test="bidHjApprovalStatus != null and bidHjApprovalStatus != ''">bid_hj_approval_status,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
@ -272,12 +285,16 @@
<if test="setReceiveUser != null and setReceiveUser != ''">#{setReceiveUser},</if>
<if test="receiveUserName != null and receiveUserName != ''">#{receiveUserName},</if>
<if test="receiveUserNickName != null and receiveUserNickName != ''">#{receiveUserNickName},</if>
<if test="bidStatus != null and bidStatus != ''">#{bidStatus},</if>
<if test="bidJsxzApprovalStatus != null and bidJsxzApprovalStatus != ''">#{bidJsxzApprovalStatus},</if>
<if test="bidJsxzTechnicalRequirement != null and bidJsxzTechnicalRequirement != ''">#{bidJsxzTechnicalRequirement},</if>
<if test="bidJsxzGroupValues != null and bidJsxzGroupValues != ''">#{bidJsxzGroupValues},</if>
<if test="bidJsxzConfirmId != null and bidJsxzConfirmId != ''">#{bidJsxzConfirmId},</if>
<if test="bidHjId != null and bidHjId != ''">#{bidHjId},</if>
<if test="bidHjApprovalStatus != null and bidHjApprovalStatus != ''">#{bidHjApprovalStatus},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
@ -401,12 +418,16 @@
<if test="setReceiveUser != null and setReceiveUser != ''">set_receive_user = #{setReceiveUser},</if>
<if test="receiveUserName != null">receive_user_name = #{receiveUserName},</if>
<if test="receiveUserNickName != null and receiveUserNickName != ''">receive_user_nick_name = #{receiveUserNickName},</if>
<if test="bidStatus != null and bidStatus != ''">bid_status = #{bidStatus},</if>
<if test="bidJsxzApprovalStatus != null and bidJsxzApprovalStatus != ''">bid_jsxz_approval_status = #{bidJsxzApprovalStatus},</if>
<if test="bidJsxzTechnicalRequirement != null and bidJsxzTechnicalRequirement != ''">bid_jsxz_technical_requirement = #{bidJsxzTechnicalRequirement},</if>
<if test="bidJsxzGroupValues != null and bidJsxzGroupValues != ''">bid_jsxz_group_values = #{bidJsxzGroupValues},</if>
<if test="bidJsxzConfirmId != null and bidJsxzConfirmId != ''">bid_jsxz_confirm_id = #{bidJsxzConfirmId},</if>
<if test="bidHjId != null and bidHjId != ''">bid_hj_id = #{bidHjId},</if>
<if test="bidHjApprovalStatus != null and bidHjApprovalStatus != ''">bid_hj_approval_status = #{bidHjApprovalStatus},</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>
@ -439,6 +460,11 @@
where a.bid_jsxz_confirm_id = #{bidJsqrId}
</select>
<select id="selectBidByBidHjId" parameterType="String" resultMap="BidResult">
<include refid="selectBidVo"/>
where a.bid_hj_id = #{bidHjId}
</select>
<select id="versionList" resultType="RbVersionDateResult">
select uid_0 value,convert(varchar(10),[date_0],23) label
from [rb_productVersion] A

View File

@ -0,0 +1,134 @@
<?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.priceVerification.mapper.BidHjMapper">
<resultMap type="BidHj" id="BidHjResult">
<result property="bidHjId" column="bid_hj_id" />
<result property="bidHjCode" column="bid_hj_code" />
<result property="bidHjPricingType" column="bid_hj_pricing_type" />
<result property="bidHjPricingDate" column="bid_hj_pricing_date" />
<result property="bidHjRemark" column="bid_hj_remark" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="createName" column="create_name" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="bidId" column="bid_id" />
<result property="bidCode" column="bid_code" />
<result property="bidHjApprovalStatus" column="bid_hj_approval_status" />
<result property="bidSalesmanName" column="bid_salesman_name" />
<result property="bidTenderingUnit" column="bid_tendering_unit" />
<result property="bidProject" column="bid_project" />
<result property="bidJsxzConfirmId" column="bid_jsxz_confirm_id" />
<result property="bidJsxzGroupValues" column="bid_jsxz_group_values" />
<result property="bidJsqrTlApprovalStatus" column="bid_jsqr_tl_approval_status" />
<result property="bidJsqrTlRemark" column="bid_jsqr_tl_remark" />
<result property="bidJsqrDyApprovalStatus" column="bid_jsqr_dy_approval_status" />
<result property="bidJsqrDyRemark" column="bid_jsqr_dy_remark" />
<result property="bidJsqrZyApprovalStatus" column="bid_jsqr_zy_approval_status" />
<result property="bidJsqrZyRemark" column="bid_jsqr_zy_remark" />
<result property="bidJsqrQtApprovalStatus" column="bid_jsqr_qt_approval_status" />
<result property="bidJsqrQtRemark" column="bid_jsqr_qt_remark" />
</resultMap>
<sql id="bidHjJoins">
left join sys_user u on u.user_name=a.create_by
left join sys_dept d on u.dept_id = d.dept_id
left join bid q on q.bid_hj_id = a.bid_hj_id
left join bid_jsqr j on j.bid_jsqr_id = q.bid_jsxz_confirm_id
</sql>
<sql id="selectBidHjVo">
select a.bid_hj_id, a.bid_hj_code, a.bid_hj_pricing_type, a.bid_hj_pricing_date, a.bid_hj_remark,
a.create_by, a.create_time, a.update_by, a.update_time,
u.nick_name create_name,
q.bid_hj_approval_status,q.bid_id,q.bid_code,q.bid_salesman_name,
q.bid_tendering_unit,q.bid_project,
q.bid_jsxz_confirm_id,q.bid_jsxz_group_values,
j.bid_jsqr_tl_approval_status,j.bid_jsqr_tl_remark,
j.bid_jsqr_dy_approval_status,j.bid_jsqr_dy_remark,
j.bid_jsqr_zy_approval_status,j.bid_jsqr_zy_remark,
j.bid_jsqr_qt_approval_status,j.bid_jsqr_qt_remark
from bid_hj a
<include refid="bidHjJoins"/>
</sql>
<select id="selectBidHjList" parameterType="BidHj" resultMap="BidHjResult">
<include refid="selectBidHjVo"/>
<where>
<if test="bidHjCode != null and bidHjCode != ''"> and bid_hj_code like concat('%', #{bidHjCode}, '%')</if>
<if test="params.beginBidHjPricingDate != null and params.beginBidHjPricingDate != '' and params.endBidHjPricingDate != null and params.endBidHjPricingDate != ''"> and bid_hj_pricing_date between #{params.beginBidHjPricingDate} and #{params.endBidHjPricingDate}</if>
<if test="bidHjApprovalStatus != null and bidHjApprovalStatus != ''"> and q.bid_hj_approval_status = #{bidHjApprovalStatus}</if>
<if test="bidCode != null and bidCode != ''"> and q.bid_code like concat('%', #{bidCode}, '%')</if>
<if test="bidSalesmanName != null and bidSalesmanName != ''"> and q.bid_salesman_name like concat('%', #{bidSalesmanName}, '%')</if>
<if test="bidTenderingUnit != null and bidTenderingUnit != ''"> and q.bid_tendering_unit like concat('%', #{bidTenderingUnit}, '%')</if>
<if test="bidProject != null and bidProject != ''"> and q.bid_project like concat('%', #{bidProject}, '%')</if>
<!-- 数据范围过滤 -->
<!--${params.dataScope}-->
</where>
order by a.bid_hj_code desc
</select>
<select id="selectBidHjByBidHjId" parameterType="String" resultMap="BidHjResult">
<include refid="selectBidHjVo"/>
where a.bid_hj_id = #{bidHjId}
</select>
<insert id="insertBidHj" parameterType="BidHj">
insert into bid_hj
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="bidHjId != null">bid_hj_id,</if>
<if test="bidHjCode != null">bid_hj_code,</if>
<if test="bidHjPricingType != null">bid_hj_pricing_type,</if>
<if test="bidHjPricingDate != null">bid_hj_pricing_date,</if>
<if test="bidHjRemark != null">bid_hj_remark,</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="bidHjId != null">#{bidHjId},</if>
<if test="bidHjCode != null">#{bidHjCode},</if>
<if test="bidHjPricingType != null">#{bidHjPricingType},</if>
<if test="bidHjPricingDate != null">#{bidHjPricingDate},</if>
<if test="bidHjRemark != null">#{bidHjRemark},</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="updateBidHj" parameterType="BidHj">
update bid_hj
<trim prefix="SET" suffixOverrides=",">
<if test="bidHjCode != null">bid_hj_code = #{bidHjCode},</if>
<if test="bidHjPricingType != null">bid_hj_pricing_type = #{bidHjPricingType},</if>
<if test="bidHjPricingDate != null">bid_hj_pricing_date = #{bidHjPricingDate},</if>
<if test="bidHjRemark != null">bid_hj_remark = #{bidHjRemark},</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_hj_id = #{bidHjId}
</update>
<delete id="deleteBidHjByBidHjId" parameterType="String">
delete from bid_hj where bid_hj_id = #{bidHjId}
</delete>
<delete id="deleteBidHjByBidHjIds" parameterType="String">
delete from bid_hj where bid_hj_id in
<foreach item="bidHjId" collection="array" open="(" separator="," close=")">
#{bidHjId}
</foreach>
</delete>
</mapper>

View File

@ -88,6 +88,15 @@ export function commitJsBid(data) {
})
}
//提交核价协助
export function commitHjBid(data) {
return request({
url: '/bid/bid/commitHjBid',
method: 'post',
data: data
})
}
//驳回按钮
export function rejectBid(data) {
return request({

View File

@ -0,0 +1,63 @@
import request from '@/utils/request'
// 查询投标单-核价单列表
export function listPriceVerification(query) {
return request({
url: '/bidPriceVerification/bidPriceVerification/list',
method: 'get',
params: query
})
}
// 查询投标单-核价单详细
export function getPriceVerification(quotHjId) {
return request({
url: '/bidPriceVerification/bidPriceVerification/' + quotHjId,
method: 'get'
})
}
// 新增投标单-核价单
export function addPriceVerification(data) {
return request({
url: '/bidPriceVerification/bidPriceVerification',
method: 'post',
data: data
})
}
// 修改投标单-核价单
export function updatePriceVerification(data) {
return request({
url: '/bidPriceVerification/bidPriceVerification',
method: 'put',
data: data
})
}
// 删除投标单-核价单
export function delPriceVerification(quotHjId) {
return request({
url: '/bidPriceVerification/bidPriceVerification/' + quotHjId,
method: 'delete'
})
}
//提交投标单-核价单 至投标组
export function commitHj(data) {
return request({
url: '/bidPriceVerification/bidPriceVerification/commitHj',
method: 'post',
data: data
})
}
//驳回投标单-核价单
export function rejectHj(data) {
return request({
url: '/bidPriceVerification/bidPriceVerification/rejectHj',
method: 'post',
data: data
})
}
rejectHj

View File

@ -204,26 +204,16 @@
</el-form-item>
</el-col>
<div v-if="checkPermi(['bid:bid:xzInfo'])">
<el-col :span="4" v-if="!checkRole(['SALES_MAN'])">
<el-col :span="4">
<el-form-item label="技术协助" prop="bidJsxzApprovalStatus">
<dict-tag :options="dict.type.bid_approval_status" :value="this.form.bidJsxzApprovalStatus"/>
</el-form-item>
</el-col>
<el-col :span="4" v-if="!checkRole(['SALES_MAN'])">
<el-col :span="4">
<el-form-item label="核价协助" prop="bidHjApprovalStatus">
<dict-tag :options="dict.type.bid_approval_status" :value="this.form.bidHjApprovalStatus"/>
<dict-tag :options="dict.type.bid_hj_approval_status" :value="this.form.bidHjApprovalStatus"/>
</el-form-item>
</el-col>
<!--<el-col :span="4" v-if="!checkRole(['SALES_MAN'])">
<el-form-item label="金思维协助" prop="bidJswApprovalStatus">
<dict-tag :options="dict.type.bid_jsw_approval_status" :value="this.form.bidJswApprovalStatus"/>
</el-form-item>
</el-col>-->
<!--<el-col :span="4">
<el-form-item label="OA审批" prop="bidOAApprovalStatus">
<dict-tag :options="dict.type.bid_oa_approval_status" :value="this.form.bidOAApprovalStatus"/>
</el-form-item>
</el-col>-->
</div>
</el-row>
@ -415,6 +405,7 @@
</el-table-column>
</el-table>
<!--投标填写模块-->
<div v-if="checkPermi(['bid:bid:tbxxInfo'])">
<el-divider content-position="left" class="customer_divider_text">投标信息</el-divider>
<el-row :gutter="8">
@ -560,11 +551,23 @@
</el-col>
</el-row>
<el-row :gutter="8">
<el-col :span="24">
<el-col :span="16">
<el-form-item label="技术要求" prop="bidTechnicalRequire">
<el-input type="textarea" autosize v-model="form.bidTechnicalRequire" placeholder="请输入技术要求" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="投标状态" prop="bidStatus">
<el-select v-model="form.bidStatus">
<el-option
v-for="dict in dict.type.bid_status"
: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">
@ -686,7 +689,7 @@
</el-col>
</el-row>
<el-divider content-position="center">技术要求附件</el-divider>
<div v-hasPermi="['bid:bid:bidTbbFile']">
<div v-hasPermi="['bid:bid:bidTbbJsgfFile']">
<el-upload class="upload-demo"
ref="bidTbbJsgfFileUpload"
name="bidFile"
@ -697,7 +700,7 @@
:on-success="handleAvatarSuccess"
:show-file-list="false"
:limit="1"
v-if="this.form.bidApprovalStatus == '1'">
v-if="this.form.bidApprovalStatus == '1'&&this.form.bidJsxzApprovalStatus != '1'">
<el-button size="mini" type="primary" @click="uploadFile('bidTbbJsgfFile')">上传文件</el-button>
</el-upload>
</div>
@ -839,6 +842,71 @@
</div>
</div>
<!-- 核价协助块-->
<div v-if="checkPermi(['bid:bid:hjxzInfo'])">
<el-divider content-position="left" class="customer_divider_text">核价协助</el-divider>
<el-row :gutter="8">
<el-col :span="10">
<el-form-item label="核价单号" prop="bidHjCode">
<el-link :underline="false" type="primary" @click="showHjDialog">{{form.bidHjCode}}</el-link>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="核价日期" prop="bidHjPricingDate">
<div class="el-p" style="width:100%">
<el-date-picker
style="width:100%"
v-model="form.bidHjPricingDate"
type="datetime"
:disabled="true">
</el-date-picker>
</div>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="核价确认状态" prop="bidHjApprovalStatus">
<el-select v-model="form.bidHjApprovalStatus" :disabled="true">
<el-option
v-for="dict in dict.type.bid_hj_approval_status"
: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="bidHjRemark">
<el-input type="textarea" autosize v-model="form.bidHjRemark" :disabled="true"/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="8">
<el-col :span="24">
<el-divider content-position="center">核价附件</el-divider>
<el-table class="down" :data="bidHjFileList" border stripe style="width: 100%;" height="150px">
<el-table-column prop="fileName" label="文件名称" width="450px"></el-table-column>
<el-table-column prop="fileSize" label="文件大小" width="100px">
<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="上传时间"></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>
</template>
</el-table-column>
</el-table>
</el-col>
</el-row>
</div>
<!-- 特缆中压低压其他协助反馈附件对话框 -->
<el-dialog custom-class="fkfjDialog" :title="addFileTitle" :visible.sync="addFileOpen" width="800px" append-to-body>
<el-table class="down" :data="bidJsqrFileList" border stripe style="width: 100%;margin-top: 10px;" height="200px">
@ -918,8 +986,8 @@
<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>
<!-- 投标提交技术核价协助-->
<span v-hasPermi="['bid:bid:assist']"><el-button type="primary" plain @click="commitJsForm" v-if="this.form.bidApprovalStatus == '1'&&(this.form.bidJsxzApprovalStatus == '0'||this.form.bidJsxzApprovalStatus == '0')">提交技术协助</el-button></span>
<span v-hasPermi="['bid:bid:assist']"><el-button type="primary" plain @click="commitJsForm" v-if="this.form.bidApprovalStatus == '1'&&this.form.bidJsxzApprovalStatus != '1'">提交技术协助</el-button></span>
<span style="margin-left: 10px" v-hasPermi="['bid:bid:assistHj']"><el-button type="primary" plain @click="commitHjForm" v-if="this.form.bidApprovalStatus == '1'&&this.form.bidHjApprovalStatus != '1'">提交核价审核</el-button></span>
<!-- 投标提交反馈驳回-->
<!--
<span style="margin-left: 10px" v-hasPermi="['bid:bid:feedback']"><el-button type="primary" plain @click="feedbackQuotForm" v-if="this.form.quotApprovalStatus == '1'&&this.form.quotJsxzApprovalStatus != '1'&&this.form.quotHjApprovalStatus != '1'&&this.form.quotJswApprovalStatus != '1'&&this.form.quotOAApprovalStatus != '1'">提交反馈</el-button></span>
@ -930,6 +998,10 @@
<PeopleSelect v-if="checkRole(['BID'])" ref="peopleSelect" :type="'single'" :isCheck="true" :open="peopleOpenSelectYwy" @cancel="peopleOpenSelectYwy=false" @submit="submitPeopleSelectYwy"></PeopleSelect>
<!-- 技术确认单详情对话框 -->
<jsqrDialog ref="jsqrDialog"></jsqrDialog>
<!-- 核价单详情对话框 -->
<hjDialog ref="hjDialog"></hjDialog>
<!-- 客户选择对话框-->
<CustomerSelect ref="customerSelect" :open="customerOpen" @submit="submitCustomer" @cancel="customerOpen=false"></CustomerSelect>
</el-dialog>
@ -971,11 +1043,13 @@
import { checkPermi,checkRole } from '@/utils/permission';//
import { getToken } from "@/utils/auth";
import { listZgys} from "@/api/zgys/zgys";
import { versionList,getTongLvPrice,bidAssign,listBid, getBid, delBid, addBid, updateBid, bidFileList,bidFileDelete, commitTbxx,commitJsBid, rejectBid } from "@/api/bid/bid";
import { versionList,getTongLvPrice,bidAssign,listBid, getBid, delBid, addBid, updateBid, bidFileList,bidFileDelete, commitTbxx,commitJsBid, commitHjBid, rejectBid } from "@/api/bid/bid";
/** 弹窗放大、拖拽 */
import elDragDialog from "@/directive/dialog/dragDialog";
/** 导入技术确认单详情组件*/
import jsqrDialog from '@/views/technicalConfirm/technicalConfirm/jsxzInfoBid.vue';
/** 导入核价单详情组件*/
import hjDialog from '@/views/priceVerification/priceVerification/hjInfoBid.vue';
/** 导入客户选择组件 */
import CustomerSelect from "@/views/components/Tools/CustomerSelect/index.vue";
/** 导入选人组件 */
@ -992,11 +1066,12 @@ export default {
components: {
//
'jsqrDialog': jsqrDialog,
'hjDialog': hjDialog,
'CustomerSelect': CustomerSelect,
'PeopleSelect': PeopleSelect,
'ChangeRecord':ChangeRecord
},
dicts: ['bid_set_receive_user','bid_has_registration','bid_approval_status','bid_online_quotation','bid_copper_price_linkage','bid_open_close','bid_bidding','bid_notification_award','bid_jsxz_group','bid_jsxz_approval_status'],
dicts: ['bid_set_receive_user','bid_has_registration','bid_approval_status','bid_hj_approval_status','bid_online_quotation','bid_copper_price_linkage','bid_open_close','bid_bidding','bid_notification_award','bid_status','bid_jsxz_group','bid_jsxz_approval_status'],
data() {
return {
//
@ -1092,6 +1167,9 @@ export default {
bidJsqrZyFileNum: 0,
bidJsqrQtFileNum: 0,
//
bidHjFileList: [],
//-
showTl: false,
showDy: false,
@ -1219,6 +1297,7 @@ export default {
bidShr: null,
bidApprovalStatus: null,
bidNotificationAward: null,
bidStatus: null,
bidRemark: null,
bidReturnRemark: null,
@ -1239,11 +1318,16 @@ export default {
bidJsqrQtApprovalStatus: null,
bidJsqrQtRemark: null,
bidHjCode: null,
bidHjPricingDate: null,
bidHjApprovalStatus: null,
};
this.bidYwyFileList = [];
this.bidTbbFileList = [];
this.bidTbbJsgfFileList = [];
this.bidHjFileList = [];
this.resetForm("form");
},
@ -1321,6 +1405,7 @@ export default {
this.getBidYwyFileList();
this.getBidTbbFileList();
this.getBidTbbJsgfFileList();
this.getBidHjFileList();
});
},
/** 保存按钮 */
@ -1365,6 +1450,16 @@ export default {
});
},
/** 投标提交核价协助按钮 */
commitHjForm() {
this.form.quotMaterialList = this.quotMaterialList;
commitHjBid(this.form).then(response => {
this.$modal.msgSuccess("提交核价协助成功");
this.open = false;
this.getList();
});
},
/** 投标驳回按钮 */
rejectBidForm() {
rejectBid(this.form).then(response => {
@ -1501,6 +1596,13 @@ export default {
this.bidTbbJsgfFileList = response.rows;
});
},
//-
getBidHjFileList(){
const param = {relationId:this.form.bidHjId,fileType:'bidHjFile'}
bidFileList(param).then(response => {
this.bidHjFileList = response.rows;
});
},
//
downloadFile(fileUrl){
@ -1612,7 +1714,12 @@ export default {
});
},
/*********************************技术协助模块*****************************************/
/*********************************核价协助模块*****************************************/
//
showHjDialog(){
this.$refs.hjDialog.getInfo("投标-核价单",true,false,this.form.bidHjId);
},
/*********************************核价协助模块*****************************************/
/*********************************打开资格预审列表选择*****************************************/
openZgys(){
this.zgysOpen=true;

View File

@ -20,7 +20,7 @@
<el-form-item label="核价类型" prop="quotHjPricingType">
<el-select v-model="form.quotHjPricingType" style="width: 100%;" :disabled="true">
<el-option
v-for="dict in dict.type.quot_pricing_type"
v-for="dict in dict.type.quot_bid_pricing_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
@ -388,7 +388,7 @@ export default {
directives: {
elDragDialog,
},
dicts: ['quot_pricing_type','quot_jsxz_approval_status','quot_hj_approval_status'],
dicts: ['quot_bid_pricing_type','quot_jsxz_approval_status','quot_hj_approval_status'],
data() {
return {
// /

View File

@ -0,0 +1,661 @@
<template>
<div class="app-container">
<el-dialog :title="title" :visible.sync="open" width="1000px" 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 :gutter="8">
<el-col :span="12">
<el-form-item label="核价单号" prop="bidHjCode">
<el-input v-model="form.bidHjCode" :disabled="true"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="投标单号" prop="bidCode">
<el-input v-model="form.bidCode" :disabled="true"/>
</el-form-item>
</el-col>
</el-row>
<!-- <el-row :gutter="8">
<el-col :span="8">
<el-form-item label="核价类型" prop="bidHjPricingType">
<el-select v-model="form.bidHjPricingType" style="width: 100%;" :disabled="true">
<el-option
v-for="dict in dict.type.quot_bid_pricing_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</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.bidTenderingUnit" :disabled="true"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="核价日期" prop="bidHjPricingDate">
<div class="el-p" style="width:100%">
<el-date-picker
style="width:100%"
v-model="form.bidHjPricingDate"
type="datetime"
placeholder="系统自动生成"
:disabled="true">
</el-date-picker>
</div>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="8">
<el-col :span="12">
<el-form-item label="项目名称" prop="bidProject">
<el-input type="textarea" autosize v-model="form.bidProject" :disabled="true"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="业务员" prop="bidSalesmanName">
<el-input v-model="form.bidSalesmanName" :disabled="true"/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="8">
<el-col :span="24">
<el-form-item label="备注" prop="bidHjRemark">
<el-input type="textarea" autosize v-model="form.bidHjRemark" placeholder="请输入备注" />
</el-form-item>
</el-col>
</el-row>
<!--<el-divider content-position="center">产品信息</el-divider>
<el-table :data="bidMaterialList" height="300px" show-summary :summary-method="getSummaries" :row-class-name="rowBidMaterialIndex" ref="bidMaterial">
<el-table-column type="selection" width="80" align="center" />
<el-table-column label="序号" align="center" prop="index" width="50"/>
<el-table-column label="型号" prop="matXingh" width="180">
<template slot-scope="scope">
<el-input v-model="scope.row.matXingh" placeholder="型号" :disabled="true"/>
</template>
</el-table-column>
<el-table-column label="规格" prop="matGuig" width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.matGuig" placeholder="规格" :disabled="true"/>
</template>
</el-table-column>
<el-table-column label="电压" prop="matDiany" width="130">
<template slot-scope="scope">
<el-input v-model="scope.row.matDiany" placeholder="电压" :disabled="true"/>
</template>
</el-table-column>
<el-table-column label="单位" prop="matDanw" width="100">
<template slot-scope="scope">
<el-input v-model="scope.row.matDanw" placeholder="单位" :disabled="true"/>
</template>
</el-table-column>
<el-table-column label="数量" prop="matSl" width="100">
<template slot-scope="scope">
<el-input v-model="scope.row.matSl" placeholder="数量" :disabled="true"/>
</template>
</el-table-column>
<el-table-column label="备注" prop="matRemark" width="180">
<template slot-scope="scope">
<el-input v-model="scope.row.matRemark" placeholder="备注" :disabled="true"/>
</template>
</el-table-column>
</el-table>-->
<!--<el-row :gutter="8">
<el-col :span="24">
<el-divider content-position="center">投标附件</el-divider>
<el-table class="down" :data="bidXjFileList" border stripe style="width: 100%;" height="200px">
<el-table-column prop="fileName" label="文件名称" width="450px"></el-table-column>
<el-table-column prop="fileSize" label="文件大小" width="100px">
<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="上传时间"></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>
</template>
</el-table-column>
</el-table>
</el-col>
</el-row>-->
<el-row :gutter="8">
<el-col :span="24">
<el-divider content-position="center">技术附件</el-divider>
<el-table class="down" :data="bidTbbJsgfFileList" border stripe style="width: 100%;" height="200px">
<el-table-column prop="fileName" label="文件名称" width="450px"></el-table-column>
<el-table-column prop="fileSize" label="文件大小" width="100px">
<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="上传时间"></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>
</template>
</el-table-column>
</el-table>
</el-col>
</el-row>
<el-row :gutter="8">
<el-col :span="24">
<el-divider content-position="center">核价附件</el-divider>
<div v-hasPermi="['bidPriceVerification:bidPriceVerification:uploadFile']">
<el-upload class="upload-demo"
ref="upload"
name="bidFile"
:action="uploadUrl"
:headers="headers"
:data="{ relation_id: this.form.bidHjId,file_type: 'bidHjFile' }"
:before-upload="beforeAvatarUpload"
:on-success="handleAvatarSuccess"
:show-file-list="false"
:limit="1"
v-if="this.form.bidHjApprovalStatus == '1'">
<el-button size="small" type="primary">上传文件</el-button>
</el-upload>
</div>
</el-col>
</el-row>
<el-row :gutter="8">
<el-col :span="24">
<el-table class="down" v-loading="bidHjFileLoading" :data="bidHjFileList" 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="isSelfProp&&form.bidHjApprovalStatus == '1'">
<a @click="deleteFile(scope.row.fileId)">删除</a>
</el-button>
</template>
</el-table-column>
</el-table>
</el-col>
</el-row>
<el-divider v-if="showTl || showDy || showZy || showQt" content-position="left" class="customer_divider_text">技术协助</el-divider>
<div v-if="showTl">
<el-divider content-position="center">特缆协助</el-divider>
<el-row :gutter="8">
<el-col :span="8">
<el-form-item label="特缆协助状态" prop="bidJsqrTlApprovalStatus">
<el-select v-model="form.bidJsqrTlApprovalStatus" :disabled="true">
<el-option
v-for="dict in dict.type.bid_jsxz_approval_status"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="16">
<el-form-item label="特缆反馈附件">
<el-button size="mini" type="primary" @click="handleAddFile('bidJsqrTl')">上传文件 ({{this.bidJsqrTlFileNum}})</el-button>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="8">
<el-col :span="24">
<el-form-item label="特缆协助说明" prop="bidJsqrTlRemark">
<el-input type="textarea" autosize v-model="form.bidJsqrTlRemark" placeholder="技术部填写" :disabled="true"/>
</el-form-item>
</el-col>
</el-row>
</div>
<div v-if="showDy">
<el-divider content-position="center">低压协助</el-divider>
<el-row :gutter="8">
<el-col :span="8">
<el-form-item label="低压协助状态" prop="bidJsqrDyApprovalStatus">
<el-select v-model="form.bidJsqrDyApprovalStatus" :disabled="true">
<el-option
v-for="dict in dict.type.bid_jsxz_approval_status"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="16">
<el-form-item label="低压反馈附件">
<el-button size="mini" type="primary" @click="handleAddFile('bidJsqrDy')">上传文件 ({{this.bidJsqrDyFileNum}})</el-button>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="8">
<el-col :span="24">
<el-form-item label="低压协助说明" prop="bidJsqrDyRemark">
<el-input type="textarea" autosize v-model="form.bidJsqrDyRemark" placeholder="技术部填写" :disabled="true"/>
</el-form-item>
</el-col>
</el-row>
</div>
<div v-if="showZy">
<el-divider content-position="center">中压协助</el-divider>
<el-row :gutter="8">
<el-col :span="8">
<el-form-item label="中压协助状态" prop="bidJsqrZyApprovalStatus">
<el-select v-model="form.bidJsqrZyApprovalStatus" :disabled="true">
<el-option
v-for="dict in dict.type.bid_jsxz_approval_status"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="16">
<el-form-item label="中压反馈附件">
<el-button size="mini" type="primary" @click="handleAddFile('bidJsqrZy')">上传文件 ({{this.bidJsqrZyFileNum}})</el-button>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="8">
<el-col :span="24">
<el-form-item label="中压协助说明" prop="bidJsqrZyRemark">
<el-input type="textarea" autosize v-model="form.bidJsqrZyRemark" placeholder="技术部填写" :disabled="true"/>
</el-form-item>
</el-col>
</el-row>
</div>
<div v-if="showQt">
<el-divider content-position="center">其他协助</el-divider>
<el-row :gutter="8">
<el-col :span="8">
<el-form-item label="其他协助状态" prop="bidJsqrQtApprovalStatus">
<el-select v-model="form.bidJsqrQtApprovalStatus" :disabled="true">
<el-option
v-for="dict in dict.type.bid_jsxz_approval_status"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="16">
<el-form-item label="其他反馈附件">
<el-button size="mini" type="primary" @click="handleAddFile('bidJsqrQt')">上传文件 ({{this.bidJsqrQtFileNum}})</el-button>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="8">
<el-col :span="24">
<el-form-item label="其他协助说明" prop="bidJsqrQtRemark">
<el-input type="textarea" autosize v-model="form.bidJsqrQtRemark" placeholder="技术部填写" :disabled="true"/>
</el-form-item>
</el-col>
</el-row>
</div>
</el-form>
<div slot="footer" class="dialog-footer" v-if="this.form.bidHjApprovalStatus==1">
<div v-if="this.isSelfProp">
<span v-hasPermi="['bidPriceVerification:bidPriceVerification:commit']"><el-button type="primary" @click="commitHj">提交投标</el-button></span>
<span v-hasPermi="['bidPriceVerification:bidPriceVerification:reject']" style="margin-left: 10px"><el-button type="danger" plain @click="rejectHj">驳回</el-button></span>
</div>
</div>
<!-- 特缆中压低压其他协助反馈附件对话框 -->
<el-dialog custom-class="fkfjDialog" :title="addFileTitle" :visible.sync="addFileOpen" width="800px" append-to-body>
<el-table class="down" :data="bidJsqrFileList" border stripe style="width: 100%;margin-top: 20px;" 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>
</template>
</el-table-column>
</el-table>
</el-dialog>
</el-dialog>
</div>
</template>
<style>
/** 弹窗设置 */
.el-dialog__body {
padding: 10px 10px;
color: #606266;
font-size: 14px;
word-break: break-all;
overflow-y: auto; /** 自动显示垂直滚动条 */
height: 500px;
max-height: 580px; /** 设置最大高度,根据需要调整 */
}
/** divider 文本样式 */
.customer_divider_text .el-divider__text{
color: #1890ff;
font-size: 18px;
font-weight: 600;
}
</style>
<style>
/* 日期空间宽度设置 */
:deep(.el-p .el-input__wrapper){
width: 100% !important;
}
</style>
<style>
/* 特缆、中压、低压、其他协助反馈附件对话框设置 */
.fkfjDialog .el-dialog__body{
height: 280px;
max-height: 300px; /* 设置最大高度,根据需要调整 */
}
</style>
<script>
import { NumberAdd } from '@/utils/number';//
import { getPriceVerification, commitHj, rejectHj } from "@/api/priceVerification/priceVerificationBid";
import { getToken } from "@/utils/auth";
import {getBid, bidFileList, bidFileDelete} from "@/api/bid/bid";
/** 弹窗放大、拖拽 */
import elDragDialog from "@/directive/dialog/dragDialog";
export default {
name: "hjInfo",
directives: {
elDragDialog,
},
dicts: ['quot_bid_pricing_type','bid_jsxz_approval_status','bid_hj_approval_status'],
data() {
return {
// /
title: "",
open: false,
//
isSelfProp: true,
//
bidMaterialList: [],
// -
bidXjFileList: [],
// -
bidTbbJsgfFileList: [],
// -
bidHjFileLoading: false,
bidHjFileList: [],
//-
uploadUrl: process.env.VUE_APP_BASE_API + "/bid/bid/bidFile",
//-
headers: {Authorization: "Bearer " + getToken()},
//
form: {},
//
rules: {},
//
addFileOpen: false,
//
addFileTitle: "",
//
uploadDis: false,
//
bidJsqrFileList: [],
bidJsqrTlFileNum: 0,
bidJsqrDyFileNum: 0,
bidJsqrZyFileNum: 0,
bidJsqrQtFileNum: 0,
//-
showTl: false,
showDy: false,
showZy: false,
showQt: false
};
},
methods: {
/** 清空表单 */
reset(){
this.form = {
bidHjCode: null,
bidCode: null,
bidHjPricingDate: null,
bidHjPricingType: null,
bidSalesmanName: null,
bidTenderingUnit: null,
bidProject: null,
bidHjRemark: null
};
this.bidMaterialList = [];
this.bidXjFileList = [];
this.bidTbbJsgfFileList = [];
this.bidHjFileList = [];
this.showTl = false;
this.showDy = false;
this.showZy = false;
this.showQt = false;
this.resetForm("form");
},
//
cancel() {
this.open = false;
this.$emit('refreshList');
},
/** 修改按钮操作 */
getInfo(title,open,isSelfProp,bidHjId) {
this.open = open;
this.title = title;
this.isSelfProp = isSelfProp;
this.reset();
getPriceVerification(bidHjId).then(response => {
this.form = response.data;
/*getBid(this.form.bidId).then(response => {
this.bidMaterialList = response.data.bidMaterialList;
});*/
this.open = true;
this.title = "核价单信息";
this.getBidXjFileList();
this.getBidJsgfFileList();
this.getBidHjFileList();
const bidJsxzGroup = this.form.bidJsxzGroupValues;
if(bidJsxzGroup) {
if (bidJsxzGroup.indexOf("TL") !== -1) {
this.showTl = true;
this.getBidJsqrFileList('bidJsqrTlFkFile');
}
if (bidJsxzGroup.indexOf("DY") !== -1) {
this.showDy = true;
this.getBidJsqrFileList('bidJsqrDyFkFile');
}
if (bidJsxzGroup.indexOf("ZY") !== -1) {
this.showZy = true;
this.getBidJsqrFileList('bidJsqrZyFkFile');
}
if (bidJsxzGroup.indexOf("QT") !== -1) {
this.showQt = true;
this.getBidJsqrFileList('bidJsqrQtFkFile');
}
}
});
},
//
handleAddFile(group){
this.addFileOpen = true;
this.bidJsqrFileList = [];
if("bidJsqrTl"==group){
this.addFileTitle = '特缆反馈附件'
this.fileType = 'bidJsqrTlFkFile';
this.uploadDis = (this.form.bidJsqrTlOperateState == 0 ? true : false);
}else if('bidJsqrDy'==group){
this.addFileTitle = '低压反馈附件'
this.fileType = 'bidJsqrDyFkFile';
this.uploadDis = (this.form.bidJsqrDyOperateState == 0 ? true : false);
}else if('bidJsqrZy'==group){
this.addFileTitle = '中压反馈附件'
this.fileType = 'bidJsqrZyFkFile';
this.uploadDis = (this.form.bidJsqrZyOperateState == 0 ? true : false);
}else if('bidJsqrQt'==group){
this.addFileTitle = '其他反馈附件'
this.fileType = 'bidJsqrQtFkFile';
this.uploadDis = (this.form.bidJsqrQtOperateState == 0 ? true : false);
}
//
this.getBidJsqrFileList(this.fileType);
},
//--
getBidJsqrFileList(fileType){
const param = {relationId:this.form.bidJsxzConfirmId,fileType:fileType}
bidFileList(param).then(response => {
this.bidJsqrFileList = response.rows;
if('bidJsqrTlFkFile' == fileType){
this.bidJsqrTlFileNum = response.rows.length;
}else if('bidJsqrDyFkFile' == fileType){
this.bidJsqrDyFileNum = response.rows.length;
}else if('bidJsqrZyFkFile' == fileType){
this.bidJsqrZyFileNum = response.rows.length;
}else if('bidJsqrQtFkFile' == fileType){
this.bidJsqrQtFileNum = response.rows.length;
}
});
},
/** 提交投标按钮 */
commitHj() {
/*const bidHjFileNum = this.bidHjFileList.length;
if(bidHjFileNum==0){
this.$modal.msgError("核价附件必须上传");
return;
}*/
//-
commitHj(this.form).then(response => {
this.open = false;
this.$modal.msgSuccess("提交成功");
this.$emit('refreshList');
})
},
/** 核价单驳回按钮 */
rejectHj() {
rejectHj(this.form).then(response => {
this.$modal.msgSuccess("驳回成功");
this.open = false;
this.$emit('refreshList');
});
},
//-
getBidXjFileList(){
const param = {relationId:this.form.bidId,fileType:'bidXjFile'}
bidFileList(param).then(response => {
this.bidXjFileList = response.rows;
});
},
//-
getBidJsgfFileList(){
const param = {relationId:this.form.bidId,fileType:'bidTbbJsgfFile'}
bidFileList(param).then(response => {
this.bidTbbJsgfFileList = response.rows;
});
},
//-
getBidHjFileList(){
const param = {relationId:this.form.bidHjId,fileType:'bidHjFile'}
bidFileList(param).then(response => {
this.bidHjFileList = response.rows;
});
},
//
beforeAvatarUpload(file){
this.bidHjFileLoading = true;
},
//
handleAvatarSuccess(res) {
//
if (res.code == 200) {
this.$modal.msgSuccess(res.msg);
this.getBidHjFileList();
} else {
this.$modal.msgError(res.msg);
}
this.bidHjFileLoading = false;
this.$refs.upload.clearFiles(); //****
},
//
downloadFile(fileUrl){
window.open(fileUrl, "_blank");
},
//
deleteFile(fileId){
let activeName = this.activeName;
this.bidHjFileLoading = true;
bidFileDelete(fileId).then(response => {
this.getBidHjFileList();
this.bidHjFileLoading = false;
});
},
/** 对产品数据-数量、金额进行合算 */
getSummaries(param) {
const { columns, data } = param;
const sums = [];
columns.forEach((column, index) => {
if (index === 0) {
sums[index] = '合计';
return;
}
const values = data.map(item => Number(item[column.property]));
if (column.property === 'matSl' || column.property === 'matBidAllPrice') {
if (!values.every(value => isNaN(value))) {
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr);
if (!isNaN(value)) {
return NumberAdd(prev,curr);
}else {
return prev;
}
}, 0);
} else {
sums[index] = ''
}
}
});
return sums;
},
/** 投标单-产品序号 */
rowBidMaterialIndex({ row, rowIndex }) {
row.index = rowIndex + 1;
},
}
};
</script>

View File

@ -80,7 +80,7 @@
<el-table-column label="项目" align="center" prop="quotProject"width="250px"/>
<el-table-column label="核价类型" align="center" prop="quotHjPricingType"width="150px">
<template slot-scope="scope">
<dict-tag :options="dict.type.quot_pricing_type" :value="scope.row.quotHjPricingType"/>
<dict-tag :options="dict.type.quot_bid_pricing_type" :value="scope.row.quotHjPricingType"/>
</template>
</el-table-column>
<el-table-column label="核价日期" align="center" prop="quotHjPricingDate" width="180">
@ -131,7 +131,7 @@ export default {
//
'hjDialog': hjDialog
},
dicts: ['quot_pricing_type','quot_hj_approval_status'],
dicts: ['quot_bid_pricing_type','quot_hj_approval_status'],
data() {
return {
//

View File

@ -0,0 +1,217 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="120px">
<el-form-item label="核价单号" prop="bidHjCode">
<el-input
v-model="queryParams.bidHjCode"
placeholder="请输入核价单号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<!--<el-form-item label="核价日期">
<el-date-picker
v-model="daterangeBidHjPricingDate"
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="bidHjApprovalStatus">
<el-select v-model="queryParams.bidHjApprovalStatus" placeholder="请选择核价协助状态" clearable>
<el-option
v-for="dict in dict.type.bid_hj_approval_status"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<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="业务员" prop="bidSalesmanName">
<el-input
v-model="queryParams.bidSalesmanName"
placeholder="请输入业务员"
clearable
@keyup.enter.native="handleQuery"
/>
</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>
<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>
<div v-tableHeight="{customHeight: 76}">
<el-table height="100%" v-loading="loading" :data="priceVerificationList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="核价单Id" align="center" prop="bidHjId" v-if="false"/>
<el-table-column fixed label="核价单号" align="center" prop="bidHjCode" width="280px">
<template slot-scope="scope">
<el-link :underline="false" type="primary" @click="handleUpdate(scope.row)">{{scope.row.bidHjCode}}</el-link>
</template>
</el-table-column>
<el-table-column fixed label="核价状态" align="center" prop="bidHjApprovalStatus" width="150px">
<template slot-scope="scope">
<dict-tag :options="dict.type.bid_hj_approval_status" :value="scope.row.bidHjApprovalStatus"/>
</template>
</el-table-column>
<el-table-column label="投标单号" align="center" prop="bidCode" width="280px"/>
<el-table-column label="业务员" align="center" prop="bidSalesmanName" width="150px"/>
<el-table-column label="客户" align="center" prop="bidTenderingUnit" width="250px"/>
<el-table-column label="项目" align="center" prop="bidProject" width="250px"/>
<el-table-column label="核价类型" align="center" prop="bidHjPricingType" width="150px">
<template slot-scope="scope">
<dict-tag :options="dict.type.quot_bid_pricing_type" :value="scope.row.bidHjPricingType"/>
</template>
</el-table-column>
<el-table-column label="核价日期" align="center" prop="bidHjPricingDate" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.bidHjPricingDate) }}</span>
</template>
</el-table-column>
<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>
<!-- 添加或修改投标单-核价单对话框 -->
<hjDialog ref="hjDialog" @refreshList="getList"></hjDialog>
</div>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</div>
</template>
<style>
/* !**!
.el-dialog__body {
padding: 10px 10px;
color: #606266;
font-size: 14px;
word-break: break-all;
overflow-y: auto; !* 自动显示垂直滚动条 *!
height: 550px;
max-height: 580px; !* 设置最大高度根据需要调整 *!
}*/
</style>
<script>
import { listPriceVerification } from "@/api/priceVerification/priceVerificationBid";
//
import hjDialog from '@/views/priceVerification/priceVerification/hjInfoBid.vue';
export default {
name: "PriceVerification",
components: {
//
'hjDialog': hjDialog
},
dicts: ['quot_bid_pricing_type','bid_hj_approval_status'],
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
// -
priceVerificationList: [],
//
title: "",
//
open: false,
//
daterangeBidHjPricingDate: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
bidHjCode: null,
bidHjPricingDate: null,
}
};
},
created() {
this.getList();
},
methods: {
/** 查询投标单-核价单列表 */
getList() {
this.loading = true;
this.queryParams.params = {};
if (null != this.daterangeBidHjPricingDate && '' != this.daterangeBidHjPricingDate) {
this.queryParams.params["beginBidHjPricingDate"] = this.daterangeBidHjPricingDate[0];
this.queryParams.params["endBidHjPricingDate"] = this.daterangeBidHjPricingDate[1];
}
listPriceVerification(this.queryParams).then(response => {
this.priceVerificationList = response.rows;
this.total = response.total;
this.loading = false;
});
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.daterangeBidHjPricingDate = [];
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.bidHjId)
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 修改按钮操作 */
handleUpdate(row) {
const bidHjId = row.bidHjId || this.ids
this.$refs.hjDialog.getInfo("投标单-核价单",true,true,bidHjId);
}
}
};
</script>

View File

@ -260,17 +260,17 @@
</el-form-item>
</el-col>
<div v-if="checkPermi(['quot:quot:xzInfo'])">
<el-col :span="4" v-if="!checkRole(['SALES_MAN'])">
<el-col :span="4">
<el-form-item label="技术协助" prop="quotJsxzApprovalStatus">
<dict-tag :options="dict.type.quot_approval_status" :value="this.form.quotJsxzApprovalStatus"/>
</el-form-item>
</el-col>
<el-col :span="4" v-if="!checkRole(['SALES_MAN'])">
<el-col :span="4">
<el-form-item label="核价协助" prop="quotHjApprovalStatus">
<dict-tag :options="dict.type.quot_approval_status" :value="this.form.quotHjApprovalStatus"/>
<dict-tag :options="dict.type.quot_hj_approval_status" :value="this.form.quotHjApprovalStatus"/>
</el-form-item>
</el-col>
<el-col :span="4" v-if="!checkRole(['SALES_MAN'])">
<el-col :span="4">
<el-form-item label="金思维协助" prop="quotJswApprovalStatus">
<dict-tag :options="dict.type.quot_jsw_approval_status" :value="this.form.quotJswApprovalStatus"/>
</el-form-item>