资格预审功能开发
This commit is contained in:
parent
7f850ef296
commit
e0fbba9ebd
|
@ -1,5 +1,5 @@
|
|||
#for tests only !
|
||||
#Tue Jul 16 09:48:52 CST 2024
|
||||
#Mon Jul 22 13:35:56 CST 2024
|
||||
jco.destination.pool_capacity=10
|
||||
jco.client.lang=ZH
|
||||
jco.client.ashost=172.19.0.125
|
||||
|
@ -7,5 +7,5 @@ jco.client.saprouter=
|
|||
jco.client.user=RFC
|
||||
jco.client.sysnr=00
|
||||
jco.destination.peak_limit=10
|
||||
jco.client.passwd=fIIvwvEBHbcBvFB_tS(Vu[3tV[6as:m0)kkAT/TIkq(z)5~9
|
||||
jco.client.passwd=d5-l}25LC/syTMZBj},zzcOyD{}`D$_}M#F{]EU?5=[as!f`
|
||||
jco.client.client=800
|
||||
|
|
|
@ -15,6 +15,7 @@ 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 com.ruoyi.framework.changeRecord.ChangeRecordLog;
|
||||
import com.ruoyi.quot.domain.Quot;
|
||||
import com.ruoyi.redBook.domain.OAQuot;
|
||||
import com.ruoyi.redBook.domain.RbVersionDateResult;
|
||||
|
@ -66,6 +67,9 @@ public class BidController extends BaseController
|
|||
* 分派
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('bid:bid:assign')")
|
||||
@ChangeRecordLog(serviceImplclass = "com.ruoyi.bid.service.impl.BidServiceImpl",
|
||||
serviceImplMethod="selectBidByBidId",
|
||||
tableId = "bidId",codeName = "bidCode")
|
||||
@Log(title = "分派投标信息", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/bidAssign")
|
||||
public AjaxResult bidAssign(@RequestBody Bid bid)
|
||||
|
@ -110,7 +114,7 @@ public class BidController extends BaseController
|
|||
* 导出投标信息列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('bid:bid:export')")
|
||||
@Log(title = "投标信息", businessType = BusinessType.EXPORT)
|
||||
@Log(title = "投标信息导出", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, Bid bid)
|
||||
{
|
||||
|
@ -133,7 +137,7 @@ public class BidController extends BaseController
|
|||
* 新增投标信息
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('bid:bid:add')")
|
||||
@Log(title = "投标信息", businessType = BusinessType.INSERT)
|
||||
@Log(title = "投标信息新增", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody Bid bid)
|
||||
{
|
||||
|
@ -150,7 +154,10 @@ public class BidController extends BaseController
|
|||
* 修改投标信息
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('bid:bid:edit')")
|
||||
@Log(title = "投标信息", businessType = BusinessType.UPDATE)
|
||||
@ChangeRecordLog(serviceImplclass = "com.ruoyi.bid.service.impl.BidServiceImpl",
|
||||
serviceImplMethod="selectBidByBidId",
|
||||
tableId = "bidId",codeName = "bidCode")
|
||||
@Log(title = "投标信息修改", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody Bid bid)
|
||||
{
|
||||
|
@ -167,7 +174,7 @@ public class BidController extends BaseController
|
|||
* @throws Exception
|
||||
*/
|
||||
@PreAuthorize("@ss.hasAnyPermi('bid:bid:bidYwyFile,bid:bid:bidTbbFile')")
|
||||
@Log(title = "上传报价附件", businessType = BusinessType.INSERT)
|
||||
@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
|
||||
{
|
||||
|
@ -194,7 +201,7 @@ public class BidController extends BaseController
|
|||
bidFileService.insertBidFile(bidFile);
|
||||
}
|
||||
}else{
|
||||
return error("系统异常,报价单号为空!");
|
||||
return error("系统异常,投标单号为空!");
|
||||
}
|
||||
return success("上传成功!");
|
||||
}
|
||||
|
@ -234,6 +241,9 @@ public class BidController extends BaseController
|
|||
* 提交OA事业部经理、店长/投标办按钮
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('bid:bid:commit')")
|
||||
@ChangeRecordLog(serviceImplclass = "com.ruoyi.bid.service.impl.BidServiceImpl",
|
||||
serviceImplMethod="selectBidByBidId",
|
||||
tableId = "bidId",codeName = "bidCode")
|
||||
@Log(title = "提交投标办", businessType = BusinessType.OTHER)
|
||||
@PostMapping("/commitTbxx")
|
||||
public AjaxResult commitTbxx(@RequestBody Bid bid)
|
||||
|
@ -345,6 +355,9 @@ public class BidController extends BaseController
|
|||
* 投标提交技术协助
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('bid:bid:assist')")
|
||||
@ChangeRecordLog(serviceImplclass = "com.ruoyi.bid.service.impl.BidServiceImpl",
|
||||
serviceImplMethod="selectBidByBidId",
|
||||
tableId = "bidId",codeName = "bidCode")
|
||||
@Log(title = "投标提交技术协助", businessType = BusinessType.OTHER)
|
||||
@PostMapping("/commitJsBid")
|
||||
public AjaxResult commitJsBid(@RequestBody Bid bid)
|
||||
|
@ -394,10 +407,10 @@ public class BidController extends BaseController
|
|||
|
||||
bidJsqr.setCreateBy(getUsername());
|
||||
bidJsqr.setUpdateBy(getUsername());
|
||||
bidJsqrService.insertBidJsqr(bidJsqr);//生成报价单-技术确认单
|
||||
bidJsqrService.insertBidJsqr(bidJsqr);//生成投标单-技术确认单
|
||||
|
||||
bid.setBidJsxzConfirmId(bidJsqrId);
|
||||
bid.setBidJsxzApprovalStatus("1");//报价单-技术确认单 状态设置为 协助中
|
||||
bid.setBidJsxzApprovalStatus("1");//投标单-技术确认单 状态设置为 协助中
|
||||
bidService.updateBid(bid);
|
||||
|
||||
//sendNoticeToJsxz(bidJsqr);
|
||||
|
@ -409,6 +422,9 @@ public class BidController extends BaseController
|
|||
* 投标驳回
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('bid:bid:reject')")
|
||||
@ChangeRecordLog(serviceImplclass = "com.ruoyi.bid.service.impl.BidServiceImpl",
|
||||
serviceImplMethod="selectBidByBidId",
|
||||
tableId = "bidId",codeName = "bidCode")
|
||||
@Log(title = "投标驳回", businessType = BusinessType.OTHER)
|
||||
@PostMapping("/rejectBid")
|
||||
public AjaxResult rejectBid(@RequestBody Bid bid)
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
package com.ruoyi.web.controller.system;
|
||||
|
||||
import com.ruoyi.system.domain.SysChangeRecord;
|
||||
import com.ruoyi.system.domain.SysNoticeUser;
|
||||
import com.ruoyi.system.mapper.SysChangeRecordMapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 业务单据变更记录
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/system/changeRecord")
|
||||
public class SysChangeRecordController {
|
||||
|
||||
@Autowired
|
||||
private SysChangeRecordMapper changeRecordMapper;
|
||||
|
||||
/**
|
||||
* 导航面板 消息通知-更多
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/recordsList")
|
||||
public List<SysChangeRecord> recordsList(SysChangeRecord sysChangeRecord)
|
||||
{
|
||||
List<SysChangeRecord> list = changeRecordMapper.recordsList(sysChangeRecord);
|
||||
list.sort((t1, t2) -> t2.getChangeTime().compareTo(t1.getChangeTime()));
|
||||
return list;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,117 @@
|
|||
package com.ruoyi.web.controller.zgys;
|
||||
|
||||
import java.util.List;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import com.ruoyi.common.utils.uuid.UUID;
|
||||
import com.ruoyi.framework.changeRecord.ChangeRecordLog;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
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.zgys.domain.Zgys;
|
||||
import com.ruoyi.zgys.service.IZgysService;
|
||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 资格预审Controller
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2024-07-22
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/zgys/zgys")
|
||||
public class ZgysController extends BaseController
|
||||
{
|
||||
@Autowired
|
||||
private IZgysService zgysService;
|
||||
|
||||
/**
|
||||
* 查询资格预审列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('zgys:zgys:list')")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo list(Zgys zgys)
|
||||
{
|
||||
startPage();
|
||||
List<Zgys> list = zgysService.selectZgysList(zgys);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出资格预审列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('zgys:zgys:export')")
|
||||
@Log(title = "资格预审导出", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, Zgys zgys)
|
||||
{
|
||||
List<Zgys> list = zgysService.selectZgysList(zgys);
|
||||
ExcelUtil<Zgys> util = new ExcelUtil<Zgys>(Zgys.class);
|
||||
util.exportExcel(response, list, "资格预审数据");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取资格预审详细信息
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('zgys:zgys:query')")
|
||||
@GetMapping(value = "/{pqId}")
|
||||
public AjaxResult getInfo(@PathVariable("pqId") String pqId)
|
||||
{
|
||||
return success(zgysService.selectZgysByPqId(pqId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增资格预审
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('zgys:zgys:add')")
|
||||
@Log(title = "资格预审新增", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody Zgys zgys)
|
||||
{
|
||||
zgys.setPqId(UUID.fastUUID().toString());
|
||||
String bidCode = zgysService.getCode("TBXX");
|
||||
zgys.setPqCode(bidCode);
|
||||
zgys.setCreateBy(getUsername());
|
||||
zgys.setUpdateBy(getUsername());
|
||||
zgysService.insertZgys(zgys);
|
||||
return success(zgys);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改资格预审
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('zgys:zgys:edit')")
|
||||
@ChangeRecordLog(serviceImplclass = "com.ruoyi.zgys.service.impl.ZgysServiceImpl",
|
||||
serviceImplMethod="selectZgysByPqId",
|
||||
tableId = "pqId",codeName = "pqCode")
|
||||
@Log(title = "资格预审修改", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody Zgys zgys)
|
||||
{
|
||||
zgys.setUpdateBy(getUsername());
|
||||
return toAjax(zgysService.updateZgys(zgys));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除资格预审
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('zgys:zgys:remove')")
|
||||
@Log(title = "资格预审删除", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{pqIds}")
|
||||
public AjaxResult remove(@PathVariable String[] pqIds)
|
||||
{
|
||||
return toAjax(zgysService.deleteZgysByPqIds(pqIds));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,198 @@
|
|||
package com.ruoyi.framework.changeRecord;
|
||||
|
||||
import com.fasterxml.jackson.databind.DeserializationFeature;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.SerializationFeature;
|
||||
import com.ruoyi.common.annotation.DataName;
|
||||
import com.ruoyi.common.utils.DateUtils;
|
||||
import com.ruoyi.common.utils.SecurityUtils;
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
import com.ruoyi.system.domain.SysChangeRecord;
|
||||
import com.ruoyi.system.mapper.SysChangeRecordMapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.aspectj.lang.JoinPoint;
|
||||
import org.aspectj.lang.annotation.After;
|
||||
import org.aspectj.lang.annotation.Aspect;
|
||||
import org.aspectj.lang.annotation.Before;
|
||||
import org.aspectj.lang.reflect.MethodSignature;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.context.request.RequestContextHolder;
|
||||
import org.springframework.web.context.request.ServletRequestAttributes;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.*;
|
||||
|
||||
@Aspect
|
||||
@Component
|
||||
@Slf4j
|
||||
@SuppressWarnings("all")
|
||||
public class ChangeRecordAspect {
|
||||
|
||||
@Autowired
|
||||
private SysChangeRecordMapper changeRecordMapper;
|
||||
|
||||
@Autowired
|
||||
private ApplicationContext applicationContext;
|
||||
|
||||
//保存修改之前的数据
|
||||
Map<String, Object> oldMap = new HashMap<>();
|
||||
|
||||
/**
|
||||
* 处理请求前执行
|
||||
*/
|
||||
@Before(value = "@annotation(operateLog)")
|
||||
public void boBefore(JoinPoint joinPoint, ChangeRecordLog operateLog) throws Exception {
|
||||
ContentParser contentParser = (ContentParser) applicationContext.getBean(operateLog.parseclass());
|
||||
//旧值
|
||||
Object oldObject = contentParser.getResult(joinPoint, operateLog, operateLog.tableId());
|
||||
if (operateLog.needDefaultCompare()) {
|
||||
oldMap = (Map<String, Object>) objectToMap(oldObject); // 存储修改前的对象
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 处理请求后执行
|
||||
* @param joinPoint
|
||||
* @param operateLog
|
||||
* @throws Throwable
|
||||
*/
|
||||
@After("@annotation(operateLog)")
|
||||
public void around(JoinPoint joinPoint, ChangeRecordLog operateLog) throws Throwable {
|
||||
try {
|
||||
SysChangeRecord changeRecord = new SysChangeRecord();
|
||||
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
|
||||
HttpServletRequest request = attributes.getRequest();
|
||||
// 从切面织入点处通过反射机制获取织入点处的方法
|
||||
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
|
||||
Method method = signature.getMethod(); // 获取切入点所在的方法
|
||||
String meName = method.getName(); // 获取请求的方法名
|
||||
String className = joinPoint.getTarget().getClass().getName(); // 获取请求的类名
|
||||
String methodName = className + "." + meName;
|
||||
String uri = request.getRequestURL().toString(); // 请求uri
|
||||
Object[] args = joinPoint.getArgs();
|
||||
// 请求参数 预留
|
||||
//String requestParams = JSON.toJSONString(args);
|
||||
//创建人信息
|
||||
changeRecord.setChangeTime(DateUtils.getTime());
|
||||
changeRecord.setCreateName(SecurityUtils.getLoginUser().getUser().getUserName());
|
||||
Object object = null;
|
||||
ContentParser contentParser;
|
||||
try {
|
||||
contentParser = (ContentParser) applicationContext.getBean(operateLog.parseclass());
|
||||
object = contentParser.getResult(joinPoint, operateLog, operateLog.tableId());
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
log.error("service加载失败:", e);
|
||||
}
|
||||
if ("add".equals(operateLog.type())) {
|
||||
Map<String, Object> dataMap = (Map<String, Object>) objectToMap(object);
|
||||
log.info("新增的数据:{}" + dataMap.toString());
|
||||
}
|
||||
if (operateLog.needDefaultCompare()) {
|
||||
//比较新数据与数据库原数据
|
||||
List<Map<String, Object>> list = defaultDealUpdate(object, oldMap, operateLog.tableId(),operateLog.codeName());
|
||||
for (Map<String, Object> dataMap : list) {
|
||||
changeRecord.setChangeField(String.valueOf(dataMap.get("filedName")));
|
||||
changeRecord.setBeforeChange(String.valueOf(dataMap.get("oldValue")));
|
||||
changeRecord.setAfterChange(String.valueOf(dataMap.get("newValue")));
|
||||
changeRecord.setTypeId(String.valueOf(dataMap.get(operateLog.tableId())));
|
||||
changeRecord.setCodeName(String.valueOf(dataMap.get(operateLog.codeName())));
|
||||
changeRecordMapper.insertChangeRecord(changeRecord);
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.info("自定义变更记录注解出现异常");
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private List<Map<String, Object>> defaultDealUpdate(Object newObject, Map<String, Object> oldMap, String tableId, String codeName) {
|
||||
try {
|
||||
List<Map<String, Object>> list = new ArrayList<>();
|
||||
Map<String, Object> newMap = (Map<String, Object>) objectToMap(newObject);
|
||||
Object finalNewObject = newObject;
|
||||
oldMap.forEach((k, v) -> {
|
||||
Object newResult = newMap.get(k);
|
||||
if (null != v && !v.equals(newResult)) {
|
||||
Field field = ReflectionUtils.getAccessibleField(finalNewObject, k);
|
||||
DataName dataName = field.getAnnotation(DataName.class);
|
||||
if (null != dataName && StringUtils.isNotEmpty(dataName.name())) {
|
||||
//翻译表达式 0=男,1=女
|
||||
String readConverterExp = dataName.readConverterExp();
|
||||
Map result = new HashMap();
|
||||
result.put("filedName", dataName.name());
|
||||
result.put(tableId, newMap.get(tableId));
|
||||
result.put(codeName, newMap.get(codeName));
|
||||
if (StringUtils.isNotEmpty(dataName.readConverterExp())) {
|
||||
String oldValue = convertByExp(
|
||||
String.valueOf(v), dataName.readConverterExp(), ",");
|
||||
String newValue = convertByExp(
|
||||
String.valueOf(newResult), dataName.readConverterExp(), ",");
|
||||
result.put("oldValue", oldValue);
|
||||
result.put("newValue", newValue);
|
||||
} else {
|
||||
result.put("oldValue", v);
|
||||
result.put("newValue", newResult);
|
||||
}
|
||||
list.add(result);
|
||||
}
|
||||
}
|
||||
});
|
||||
log.info("比较的数据哈:{}" + list.toString());
|
||||
return list;
|
||||
} catch (Exception e) {
|
||||
log.error("比较异常", e);
|
||||
e.printStackTrace();
|
||||
throw new RuntimeException("比较异常", e);
|
||||
}
|
||||
}
|
||||
|
||||
private Map<?, ?> objectToMap(Object obj) {
|
||||
if (obj == null) {
|
||||
return null;
|
||||
}
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
mapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
|
||||
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
||||
// 如果使用JPA请自己打开这条配置
|
||||
// mapper.addMixIn(Object.class, IgnoreHibernatePropertiesInJackson.class);
|
||||
Map<?, ?> mappedObject = mapper.convertValue(obj, Map.class);
|
||||
return mappedObject;
|
||||
}
|
||||
|
||||
/**
|
||||
* 翻译
|
||||
*
|
||||
* @param propertyValue 参数值如:0
|
||||
* @param converterExp 翻译注解的值如:0=男,1=女,2=未知
|
||||
* @param separator 分隔符
|
||||
* @return 解析后值
|
||||
*/
|
||||
public static String convertByExp(String propertyValue, String converterExp, String separator) {
|
||||
StringBuilder propertyString = new StringBuilder();
|
||||
String[] convertSource = converterExp.split(",");
|
||||
for (String item : convertSource) {
|
||||
String[] itemArray = item.split("=");
|
||||
if (StringUtils.containsAny(propertyValue, separator)) {
|
||||
for (String value : propertyValue.split(separator)) {
|
||||
if (itemArray[0].equals(value)) {
|
||||
propertyString.append(itemArray[1] + separator);
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (itemArray[0].equals(propertyValue)) {
|
||||
return itemArray[1];
|
||||
}
|
||||
}
|
||||
}
|
||||
return StringUtils.stripEnd(propertyString.toString(), separator);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
package com.ruoyi.framework.changeRecord;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
@Documented
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target({ElementType.METHOD})
|
||||
public @interface ChangeRecordLog {
|
||||
|
||||
// 获取编辑信息的解析类,目前为使用id获取
|
||||
Class parseclass() default DefaultContentParse.class;
|
||||
|
||||
// 实现类
|
||||
String serviceImplclass() default "";
|
||||
|
||||
// 实现类方法名
|
||||
String serviceImplMethod() default "";
|
||||
|
||||
// 是否需要比较新旧数据
|
||||
boolean needDefaultCompare() default true;
|
||||
|
||||
// id的类型
|
||||
Class idType() default String.class;
|
||||
|
||||
// 操作对象的id字段名称
|
||||
String tableId() default "id";
|
||||
|
||||
// 单号字段名称
|
||||
String codeName() default "";
|
||||
|
||||
//操作类型
|
||||
String type() default "update";
|
||||
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
package com.ruoyi.framework.changeRecord;
|
||||
|
||||
import org.aspectj.lang.JoinPoint;
|
||||
|
||||
public interface ContentParser {
|
||||
|
||||
/**
|
||||
* 获取信息返回查询出的对象
|
||||
*
|
||||
* @param joinPoint 查询条件的参数
|
||||
* @param operateLog 注解
|
||||
* @return 获得的结果
|
||||
*/
|
||||
public Object getResult(JoinPoint joinPoint, ChangeRecordLog operateLog, String tableId) throws ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, Exception;
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
package com.ruoyi.framework.changeRecord;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target({ElementType.FIELD})
|
||||
@Documented
|
||||
public @interface DataName {
|
||||
String name() default ""; // 字段名称
|
||||
|
||||
/**
|
||||
* 读取枚举内容转义表达式 (如: 0=男,1=女,2=未知)
|
||||
*/
|
||||
String readConverterExp() default "";
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
package com.ruoyi.framework.changeRecord;
|
||||
|
||||
import org.aspectj.lang.JoinPoint;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.Assert;
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
@Component
|
||||
public class DefaultContentParse implements ContentParser {
|
||||
|
||||
@Autowired
|
||||
private ApplicationContext applicationContext;
|
||||
|
||||
@Override
|
||||
public Object getResult(JoinPoint joinPoint, ChangeRecordLog operateLog, String tableId) throws Exception {
|
||||
Object info = joinPoint.getArgs()[0];
|
||||
Object id = ReflectionUtils.getFieldValue(info, tableId);
|
||||
Assert.notNull(id, "id不能为空");
|
||||
String serviceImplName = operateLog.serviceImplclass();
|
||||
String serviceImplMethod = operateLog.serviceImplMethod();
|
||||
|
||||
Class idType = operateLog.idType();
|
||||
if (idType.isInstance(id)) {
|
||||
//从ApplicationContext中取出已创建好的的对象
|
||||
//不可直接反射创建serviceimpi对象,因为反射创建出来的对象无法实例化dao接口
|
||||
ApplicationContext applicationContext = SpringBootBeanUtil.getApplicationContext();
|
||||
//反射创建serviceimpi实体对象,和实体类
|
||||
Class<?> ServiceImplType = Class.forName(serviceImplName);
|
||||
Method method = ServiceImplType.getDeclaredMethod(serviceImplMethod,String.class);
|
||||
|
||||
// 使用反射调用方法
|
||||
return method.invoke(applicationContext.getBean(ServiceImplType),id);
|
||||
} else {
|
||||
throw new RuntimeException("请核实id type");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,138 @@
|
|||
package com.ruoyi.framework.changeRecord;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Slf4j
|
||||
public class ReflectionUtils {
|
||||
|
||||
/**
|
||||
* 直接读取对象属性值, 无视private/protected修饰符, 不经过getter函数.
|
||||
* @param obj 读取的对象
|
||||
* @param fieldName 读取的列
|
||||
* @return 属性值
|
||||
*/
|
||||
public static Object getFieldValue(final Object obj, final String fieldName) {
|
||||
Field field = getAccessibleField(obj, fieldName);
|
||||
if (field == null) {
|
||||
throw new IllegalArgumentException("Could not find field [" + fieldName + "] on target [" + obj + "]");
|
||||
}
|
||||
|
||||
Object result = null;
|
||||
try {
|
||||
result = field.get(obj);
|
||||
} catch (IllegalAccessException e) {
|
||||
log.error("不可能抛出的异常{}", e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 循环向上转型, 获取对象的DeclaredField, 并强制设置为可访问.如向上转型到Object仍无法找到, 返回null.
|
||||
* @param obj 查找的对象
|
||||
* @param fieldName 列名
|
||||
* @return 列
|
||||
*/
|
||||
public static Field getAccessibleField(final Object obj, final String fieldName) {
|
||||
for (Class<?> superClass = obj.getClass(); superClass != Object.class; superClass = superClass.getSuperclass()) {
|
||||
try {
|
||||
Field field = superClass.getDeclaredField(fieldName);
|
||||
makeAccessible(field);
|
||||
return field;
|
||||
} catch (NoSuchFieldException e) { // NOSONAR
|
||||
// Field不在当前类定义,继续向上转型
|
||||
continue; // new add
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 改变private/protected的成员变量为public,尽量不调用实际改动的语句,避免JDK的SecurityManager抱怨。
|
||||
* @param
|
||||
*/
|
||||
public static void makeAccessible(Field field) {
|
||||
if ((!Modifier.isPublic(field.getModifiers()) || !Modifier.isPublic(field.getDeclaringClass().getModifiers()) || Modifier
|
||||
.isFinal(field.getModifiers())) && !field.isAccessible()) {
|
||||
field.setAccessible(true);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取两个对象同名属性内容不相同的列表
|
||||
* @param class1 old对象
|
||||
* @param class2 new对象
|
||||
* @return 区别列表
|
||||
* @throws ClassNotFoundException 异常
|
||||
* @throws IllegalAccessException 异常
|
||||
*/
|
||||
public static List<Map<String ,Object>> compareTwoClass(Object class1, Object class2) throws ClassNotFoundException, IllegalAccessException {
|
||||
List<Map<String,Object>> list=new ArrayList<Map<String, Object>>();
|
||||
// 获取对象的class
|
||||
Class<?> clazz1 = class1.getClass();
|
||||
Class<?> clazz2 = class2.getClass();
|
||||
// 获取对象的属性列表
|
||||
Field[] field1 = clazz1.getDeclaredFields();
|
||||
Field[] field2 = clazz2.getDeclaredFields();
|
||||
StringBuilder sb=new StringBuilder();
|
||||
// 遍历属性列表field1
|
||||
for(int i=0;i<field1.length;i++) {
|
||||
// 遍历属性列表field2
|
||||
for (int j = 0; j < field2.length; j++) {
|
||||
// 如果field1[i]属性名与field2[j]属性名内容相同
|
||||
if (field1[i].getName().equals(field2[j].getName())) {
|
||||
if (field1[i].getName().equals(field2[j].getName())) {
|
||||
field1[i].setAccessible(true);
|
||||
field2[j].setAccessible(true);
|
||||
// 如果field1[i]属性值与field2[j]属性值内容不相同
|
||||
if (!compareTwo(field1[i].get(class1), field2[j].get(class2))) {
|
||||
Map<String, Object> map2 = new HashMap<String, Object>();
|
||||
DataName name=field1[i].getAnnotation(DataName.class);
|
||||
String fieldName="";
|
||||
if(name!=null){
|
||||
fieldName=name.name();
|
||||
} else {
|
||||
fieldName=field1[i].getName();
|
||||
}
|
||||
map2.put("name", fieldName);
|
||||
map2.put("old", field1[i].get(class1));
|
||||
map2.put("new", field2[j].get(class2));
|
||||
list.add(map2);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
* 对比两个数据是否内容相同
|
||||
* @param object1 比较对象1
|
||||
* @param object2 比较对象2
|
||||
* @return boolean类型
|
||||
*/
|
||||
public static boolean compareTwo(Object object1,Object object2){
|
||||
if(object1==null&&object2==null){
|
||||
return true;
|
||||
}
|
||||
if(object1==null&&object2!=null){
|
||||
return false;
|
||||
}
|
||||
if(object1.equals(object2)){
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,61 @@
|
|||
package com.ruoyi.framework.changeRecord;
|
||||
|
||||
import org.springframework.beans.BeansException;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.ApplicationContextAware;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* SpringBoot 普通类获取Spring容器中的bean工具类
|
||||
*/
|
||||
@Component
|
||||
public class SpringBootBeanUtil implements ApplicationContextAware {
|
||||
|
||||
private static ApplicationContext applicationContext;
|
||||
|
||||
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
|
||||
if (SpringBootBeanUtil.applicationContext == null) {
|
||||
SpringBootBeanUtil.applicationContext = applicationContext;
|
||||
}
|
||||
System.out.println("========ApplicationContext配置成功========");
|
||||
// System.out.println("========在普通类可以通过调用SpringBootBeanUtil.getApplicationContext()获取applicationContext对象========");
|
||||
System.out.println("========applicationContext="+ SpringBootBeanUtil.applicationContext +"========");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取applicationContext
|
||||
* @return
|
||||
*/
|
||||
public static ApplicationContext getApplicationContext() {
|
||||
return applicationContext;
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过name获取 Bean.
|
||||
* @param name
|
||||
* @return
|
||||
*/
|
||||
public static Object getBean(String name) {
|
||||
return getApplicationContext().getBean(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过class获取Bean.
|
||||
* @param clazz
|
||||
* @return
|
||||
*/
|
||||
public static <T> T getBean(Class<T> clazz) {
|
||||
return getApplicationContext().getBean(clazz);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过name,以及Clazz返回指定的Bean
|
||||
* @param name
|
||||
* @param clazz
|
||||
* @return
|
||||
*/
|
||||
public static <T> T getBean(String name, Class<T> clazz) {
|
||||
return getApplicationContext().getBean(name, clazz);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
package com.ruoyi.bid.domain;
|
||||
|
||||
import com.ruoyi.common.annotation.DataName;
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
|
@ -42,21 +43,26 @@ public class Bid extends BaseEntity
|
|||
private String bidSalesmanDeptName;
|
||||
|
||||
/** 是否报名 */
|
||||
@DataName(name = "是否报名")
|
||||
private String bidHasRegistration;
|
||||
|
||||
/** 原报名编号 */
|
||||
@Excel(name = "原报名编号")
|
||||
@DataName(name = "原报名编号")
|
||||
private String bidRegistrationNumber;
|
||||
|
||||
/** 开标日期 */
|
||||
@Excel(name = "开标日期")
|
||||
@DataName(name = "开标日期")
|
||||
private String bidOpeningDate;
|
||||
|
||||
/** 是否网上报价(0-是/1-否) */
|
||||
@Excel(name = "是否网上报价",dictType = "bid_online_quotation")
|
||||
@DataName(name = "是否网上报价",readConverterExp="0=是,1=否")
|
||||
private String bidOnlineQuotation;
|
||||
|
||||
/** 报价平台网址 */
|
||||
@DataName(name = "报价平台网址")
|
||||
private String bidWebsite;
|
||||
|
||||
/** 招标单位编码 */
|
||||
|
@ -64,140 +70,183 @@ public class Bid extends BaseEntity
|
|||
|
||||
/** 招标单位 */
|
||||
@Excel(name = "招标单位")
|
||||
@DataName(name = "招标单位")
|
||||
private String bidTenderingUnit;
|
||||
|
||||
/** 招标代理 */
|
||||
@Excel(name = "招标代理")
|
||||
@DataName(name = "招标代理")
|
||||
private String bidAgency;
|
||||
|
||||
/** 项目名称 */
|
||||
@Excel(name = "项目名称")
|
||||
@DataName(name = "项目名称")
|
||||
private String bidProject;
|
||||
|
||||
/** 授权代表 */
|
||||
@Excel(name = "授权代表")
|
||||
@DataName(name = "授权代表")
|
||||
private String bidAuthorizedRepresentative;
|
||||
|
||||
/** 授权人联系方式 */
|
||||
@DataName(name = "联系方式")
|
||||
private String bidAuthorizedPhone;
|
||||
|
||||
/** 招标文件付款方式 */
|
||||
@DataName(name = "招标文件付款方式")
|
||||
private String bidFilePaymentMethod;
|
||||
|
||||
/** 投标付款偏差 */
|
||||
@DataName(name = "投标付款偏差")
|
||||
private String bidPaymentDeviation;
|
||||
|
||||
/** 是否铜价联动(0-是/1-否) */
|
||||
@DataName(name = "是否铜价联动",readConverterExp="0=是,1=否")
|
||||
private String bidCopperPriceLinkage;
|
||||
|
||||
/** 价格联动方式 */
|
||||
@DataName(name = "价格联动方式")
|
||||
private String bidPriceLinkageMethod;
|
||||
|
||||
/** 其他投标要求 */
|
||||
@DataName(name = "其他投标要求")
|
||||
private String bidOtherRequire;
|
||||
|
||||
/** 中标金额 */
|
||||
@DataName(name = "中标金额")
|
||||
private String bidWinningAmount;
|
||||
|
||||
/** 铜电缆金额 */
|
||||
@DataName(name = "铜电缆金额")
|
||||
private String bidCopperCableAmount;
|
||||
|
||||
/** 铝电缆金额 */
|
||||
@DataName(name = "铝电缆金额")
|
||||
private String bidAluminumCableAmount;
|
||||
|
||||
/** 开闭口(1-开口价/2-闭口价) */
|
||||
@DataName(name = "开闭口",readConverterExp="1=开口价,2=闭口价")
|
||||
private String bidOpenClose;
|
||||
|
||||
/** 调价通知 */
|
||||
@DataName(name = "调价通知")
|
||||
private String bidPriceAdjustmentNotice;
|
||||
|
||||
/** 投标有效期 */
|
||||
@DataName(name = "投标有效期")
|
||||
private String bidValidityPeriod;
|
||||
|
||||
/** 铜价 */
|
||||
@DataName(name = "铜价")
|
||||
private String bidTongPrice;
|
||||
|
||||
/** 铝价 */
|
||||
@DataName(name = "铝价")
|
||||
private String bidLvPrice;
|
||||
|
||||
/** 点数 */
|
||||
@DataName(name = "点数")
|
||||
private String bidDs;
|
||||
|
||||
/** 厂价 */
|
||||
@DataName(name = "厂价")
|
||||
private String bidFactoryPrice;
|
||||
|
||||
/** 投标价 */
|
||||
@DataName(name = "投标价")
|
||||
private String bidPrice;
|
||||
|
||||
/** 业务费结算 */
|
||||
@DataName(name = "业务费结算")
|
||||
private String bidBusinessSettlement;
|
||||
|
||||
/** 保证金 */
|
||||
@DataName(name = "保证金")
|
||||
private String bidBond;
|
||||
|
||||
/** 中标服务费 */
|
||||
@DataName(name = "中标服务费")
|
||||
private String bidWinningServiceFee;
|
||||
|
||||
/** 履约保证金 */
|
||||
@DataName(name = "履约保证金")
|
||||
private String bidPerformanceBond;
|
||||
|
||||
/** 交货期(工期) */
|
||||
@DataName(name = "交货期")
|
||||
private String bidDeliveryDate;
|
||||
|
||||
/** 质保期 */
|
||||
@DataName(name = "质保期")
|
||||
private String bidWarrantyPeriod;
|
||||
|
||||
/** 是否竞价(0-是/1-否) */
|
||||
@DataName(name = "是否竞价",readConverterExp="0=是,1=否")
|
||||
private String bidBidding;
|
||||
|
||||
/** 评标办法 */
|
||||
@DataName(name = "评标办法")
|
||||
private String bidEvaluationMethod;
|
||||
|
||||
/** 技术要求 */
|
||||
@DataName(name = "技术要求")
|
||||
private String bidTechnicalRequire;
|
||||
|
||||
/** 价格联动 */
|
||||
@DataName(name = "价格联动")
|
||||
private String bidPriceLinkage;
|
||||
|
||||
/** 付款方式 */
|
||||
@DataName(name = "付款方式")
|
||||
private String bidPaymentMethod;
|
||||
|
||||
/** 其余事项 */
|
||||
@DataName(name = "其余事项")
|
||||
private String bidOtherMatters;
|
||||
|
||||
/** 制标人 */
|
||||
@Excel(name = "制标人")
|
||||
@DataName(name = "制标人")
|
||||
private String bidZbr;
|
||||
|
||||
/** 校对人 */
|
||||
@Excel(name = "校对人")
|
||||
@DataName(name = "校对人")
|
||||
private String bidJdr;
|
||||
|
||||
/** 审核人 */
|
||||
@Excel(name = "审核人")
|
||||
@DataName(name = "审核人")
|
||||
private String bidShr;
|
||||
|
||||
/** 提交状态 */
|
||||
@Excel(name = "提交状态",dictType = "bid_approval_status")
|
||||
@DataName(name = "提交状态",readConverterExp="0=待提交,1=协助中,2=已完成,3=已驳回,4=审批中")
|
||||
private String bidApprovalStatus;
|
||||
|
||||
/** 有无中标通知书(0-是/1-否) */
|
||||
@DataName(name = "有无中标通知书",readConverterExp="0=是,1=否")
|
||||
private String bidNotificationAward;
|
||||
|
||||
/** 备注 */
|
||||
@DataName(name = "备注")
|
||||
private String bidRemark;
|
||||
|
||||
/** 驳回原因 */
|
||||
@DataName(name = "反馈说明")
|
||||
private String bidReturnRemark;
|
||||
|
||||
/** 创建人 */
|
||||
private String createName;
|
||||
|
||||
/** 分派情况 0-已分派/1-未分派 */
|
||||
@DataName(name = "分派情况",readConverterExp="0=已分派,1=未分派")
|
||||
private String setReceiveUser;
|
||||
|
||||
/** 分派接收人 */
|
||||
@DataName(name = "分派接收人账号")
|
||||
private String receiveUserName;
|
||||
@DataName(name = "分派接收人姓名")
|
||||
private String receiveUserNickName;
|
||||
|
||||
|
||||
|
|
|
@ -1,30 +1,19 @@
|
|||
package com.ruoyi.system.domain;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
public class SysChangeRecord {
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date changeTime;
|
||||
|
||||
private String changeTime;
|
||||
private String createName;
|
||||
|
||||
private String changeField;
|
||||
|
||||
private String beforeChange;
|
||||
|
||||
private String afterChange;
|
||||
|
||||
private String typeId;
|
||||
private String codeName;
|
||||
|
||||
private String remark;
|
||||
|
||||
public Date getChangeTime() {
|
||||
public String getChangeTime() {
|
||||
return changeTime;
|
||||
}
|
||||
|
||||
public void setChangeTime(Date changeTime) {
|
||||
public void setChangeTime(String changeTime) {
|
||||
this.changeTime = changeTime;
|
||||
}
|
||||
|
||||
|
@ -68,11 +57,7 @@ public class SysChangeRecord {
|
|||
this.typeId = typeId;
|
||||
}
|
||||
|
||||
public String getRemark() {
|
||||
return remark;
|
||||
}
|
||||
public String getCodeName() { return codeName; }
|
||||
|
||||
public void setRemark(String remark) {
|
||||
this.remark = remark;
|
||||
}
|
||||
public void setCodeName(String codeName) { this.codeName = codeName; }
|
||||
}
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
package com.ruoyi.system.mapper;
|
||||
|
||||
import com.ruoyi.system.domain.SysChangeRecord;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 变更日志记录Mapper
|
||||
*/
|
||||
|
@ -11,4 +12,10 @@ public interface SysChangeRecordMapper {
|
|||
* @param changeRecord
|
||||
*/
|
||||
public void insertChangeRecord(SysChangeRecord changeRecord);
|
||||
|
||||
/**
|
||||
* 获取变更记录
|
||||
* @return
|
||||
*/
|
||||
List<SysChangeRecord> recordsList(SysChangeRecord sysChangeRecord);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,301 @@
|
|||
package com.ruoyi.zgys.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;
|
||||
|
||||
/**
|
||||
* 资格预审对象 zgys
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2024-07-22
|
||||
*/
|
||||
public class Zgys extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** */
|
||||
private String pqId;
|
||||
|
||||
/** 资格预审单编号 */
|
||||
@Excel(name = "资格预审单编号")
|
||||
private String pqCode;
|
||||
|
||||
/** 业务员账号 */
|
||||
private String pqSalesmanCode;
|
||||
|
||||
/** 业务员编码 */
|
||||
private String pqSalesmanBm;
|
||||
|
||||
/** 业务员 */
|
||||
@Excel(name = "业务员")
|
||||
private String pqSalesmanName;
|
||||
|
||||
/** 部门id */
|
||||
private String pqSalesmanDeptId;
|
||||
|
||||
/** 部门名 */
|
||||
@Excel(name = "部门名")
|
||||
private String pqSalesmanDeptName;
|
||||
|
||||
/** 客户编码 */
|
||||
private String pqCustomerBm;
|
||||
|
||||
/** 客户名称 */
|
||||
@Excel(name = "客户名称")
|
||||
private String pqCustomerName;
|
||||
|
||||
/** 项目 */
|
||||
@Excel(name = "项目")
|
||||
private String pqProject;
|
||||
|
||||
/** 中标备注 */
|
||||
private String pqBidWinningRemark;
|
||||
|
||||
/** 授权人 */
|
||||
@Excel(name = "授权人")
|
||||
private String pqAuthorizedRepresentative;
|
||||
|
||||
/** 投标日期 */
|
||||
@Excel(name = "投标日期")
|
||||
private String pqBidDate;
|
||||
|
||||
/** 制标人 */
|
||||
@Excel(name = "制标人")
|
||||
private String pqZbr;
|
||||
|
||||
/** 中标状态 */
|
||||
@Excel(name = "中标状态")
|
||||
private String pqBidWinningStatus;
|
||||
|
||||
/** 说明 */
|
||||
private String pqIllustrate;
|
||||
|
||||
/** 公告链接网址 */
|
||||
private String pqAnnouncementLinkWebsite;
|
||||
|
||||
/** 联系电话 */
|
||||
private String pqPhone;
|
||||
|
||||
/** 招标代理 */
|
||||
private String pqAgency;
|
||||
|
||||
/** 备注 */
|
||||
private String pqRemark;
|
||||
|
||||
/** 是否存档 */
|
||||
@Excel(name = "是否存档")
|
||||
private String pqArchiving;
|
||||
|
||||
/** 授权状态 */
|
||||
@Excel(name = "授权状态")
|
||||
private String pqEmpower;
|
||||
|
||||
/** 提交状态 */
|
||||
@Excel(name = "提交状态")
|
||||
private String pqApprovalStatus;
|
||||
|
||||
|
||||
public void setPqId(String pqId)
|
||||
{
|
||||
this.pqId = pqId;
|
||||
}
|
||||
|
||||
public String getPqId()
|
||||
{
|
||||
return pqId;
|
||||
}
|
||||
public void setPqCode(String pqCode)
|
||||
{
|
||||
this.pqCode = pqCode;
|
||||
}
|
||||
|
||||
public String getPqCode()
|
||||
{
|
||||
return pqCode;
|
||||
}
|
||||
public void setPqSalesmanCode(String pqSalesmanCode)
|
||||
{
|
||||
this.pqSalesmanCode = pqSalesmanCode;
|
||||
}
|
||||
|
||||
public String getPqSalesmanCode()
|
||||
{
|
||||
return pqSalesmanCode;
|
||||
}
|
||||
public void setPqSalesmanBm(String pqSalesmanBm)
|
||||
{
|
||||
this.pqSalesmanBm = pqSalesmanBm;
|
||||
}
|
||||
|
||||
public String getPqSalesmanBm()
|
||||
{
|
||||
return pqSalesmanBm;
|
||||
}
|
||||
public void setPqSalesmanName(String pqSalesmanName)
|
||||
{
|
||||
this.pqSalesmanName = pqSalesmanName;
|
||||
}
|
||||
|
||||
public String getPqSalesmanName()
|
||||
{
|
||||
return pqSalesmanName;
|
||||
}
|
||||
public void setPqSalesmanDeptId(String pqSalesmanDeptId)
|
||||
{
|
||||
this.pqSalesmanDeptId = pqSalesmanDeptId;
|
||||
}
|
||||
|
||||
public String getPqSalesmanDeptId()
|
||||
{
|
||||
return pqSalesmanDeptId;
|
||||
}
|
||||
public void setPqSalesmanDeptName(String pqSalesmanDeptName)
|
||||
{
|
||||
this.pqSalesmanDeptName = pqSalesmanDeptName;
|
||||
}
|
||||
|
||||
public String getPqSalesmanDeptName()
|
||||
{
|
||||
return pqSalesmanDeptName;
|
||||
}
|
||||
public void setPqCustomerBm(String pqCustomerBm)
|
||||
{
|
||||
this.pqCustomerBm = pqCustomerBm;
|
||||
}
|
||||
|
||||
public String getPqCustomerBm()
|
||||
{
|
||||
return pqCustomerBm;
|
||||
}
|
||||
public void setPqCustomerName(String pqCustomerName)
|
||||
{
|
||||
this.pqCustomerName = pqCustomerName;
|
||||
}
|
||||
|
||||
public String getPqCustomerName()
|
||||
{
|
||||
return pqCustomerName;
|
||||
}
|
||||
public void setPqProject(String pqProject)
|
||||
{
|
||||
this.pqProject = pqProject;
|
||||
}
|
||||
|
||||
public String getPqProject()
|
||||
{
|
||||
return pqProject;
|
||||
}
|
||||
public void setPqBidWinningRemark(String pqBidWinningRemark)
|
||||
{
|
||||
this.pqBidWinningRemark = pqBidWinningRemark;
|
||||
}
|
||||
|
||||
public String getPqBidWinningRemark()
|
||||
{
|
||||
return pqBidWinningRemark;
|
||||
}
|
||||
public void setPqAuthorizedRepresentative(String pqAuthorizedRepresentative)
|
||||
{
|
||||
this.pqAuthorizedRepresentative = pqAuthorizedRepresentative;
|
||||
}
|
||||
|
||||
public String getPqAuthorizedRepresentative()
|
||||
{
|
||||
return pqAuthorizedRepresentative;
|
||||
}
|
||||
public void setPqBidDate(String pqBidDate)
|
||||
{
|
||||
this.pqBidDate = pqBidDate;
|
||||
}
|
||||
|
||||
public String getPqBidDate()
|
||||
{
|
||||
return pqBidDate;
|
||||
}
|
||||
public void setPqZbr(String pqZbr)
|
||||
{
|
||||
this.pqZbr = pqZbr;
|
||||
}
|
||||
|
||||
public String getPqZbr()
|
||||
{
|
||||
return pqZbr;
|
||||
}
|
||||
public void setPqBidWinningStatus(String pqBidWinningStatus)
|
||||
{
|
||||
this.pqBidWinningStatus = pqBidWinningStatus;
|
||||
}
|
||||
|
||||
public String getPqBidWinningStatus()
|
||||
{
|
||||
return pqBidWinningStatus;
|
||||
}
|
||||
public void setPqIllustrate(String pqIllustrate)
|
||||
{
|
||||
this.pqIllustrate = pqIllustrate;
|
||||
}
|
||||
|
||||
public String getPqIllustrate()
|
||||
{
|
||||
return pqIllustrate;
|
||||
}
|
||||
public void setPqAnnouncementLinkWebsite(String pqAnnouncementLinkWebsite)
|
||||
{
|
||||
this.pqAnnouncementLinkWebsite = pqAnnouncementLinkWebsite;
|
||||
}
|
||||
|
||||
public String getPqAnnouncementLinkWebsite()
|
||||
{
|
||||
return pqAnnouncementLinkWebsite;
|
||||
}
|
||||
public void setPqPhone(String pqPhone)
|
||||
{
|
||||
this.pqPhone = pqPhone;
|
||||
}
|
||||
|
||||
public String getPqPhone()
|
||||
{
|
||||
return pqPhone;
|
||||
}
|
||||
public void setPqAgency(String pqAgency)
|
||||
{
|
||||
this.pqAgency = pqAgency;
|
||||
}
|
||||
|
||||
public String getPqAgency()
|
||||
{
|
||||
return pqAgency;
|
||||
}
|
||||
public void setPqRemark(String pqRemark)
|
||||
{
|
||||
this.pqRemark = pqRemark;
|
||||
}
|
||||
|
||||
public String getPqRemark()
|
||||
{
|
||||
return pqRemark;
|
||||
}
|
||||
public void setPqArchiving(String pqArchiving)
|
||||
{
|
||||
this.pqArchiving = pqArchiving;
|
||||
}
|
||||
|
||||
public String getPqArchiving()
|
||||
{
|
||||
return pqArchiving;
|
||||
}
|
||||
public void setPqEmpower(String pqEmpower)
|
||||
{
|
||||
this.pqEmpower = pqEmpower;
|
||||
}
|
||||
|
||||
public String getPqEmpower()
|
||||
{
|
||||
return pqEmpower;
|
||||
}
|
||||
public String getPqApprovalStatus() { return pqApprovalStatus; }
|
||||
|
||||
public void setPqApprovalStatus(String pqApprovalStatus) { this.pqApprovalStatus = pqApprovalStatus; }
|
||||
}
|
|
@ -0,0 +1,68 @@
|
|||
package com.ruoyi.zgys.mapper;
|
||||
|
||||
import java.util.List;
|
||||
import com.ruoyi.zgys.domain.Zgys;
|
||||
|
||||
/**
|
||||
* 资格预审Mapper接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2024-07-22
|
||||
*/
|
||||
public interface ZgysMapper
|
||||
{
|
||||
/**
|
||||
* 查询资格预审
|
||||
*
|
||||
* @param pqId 资格预审主键
|
||||
* @return 资格预审
|
||||
*/
|
||||
public Zgys selectZgysByPqId(String pqId);
|
||||
|
||||
/**
|
||||
* 查询资格预审列表
|
||||
*
|
||||
* @param zgys 资格预审
|
||||
* @return 资格预审集合
|
||||
*/
|
||||
public List<Zgys> selectZgysList(Zgys zgys);
|
||||
|
||||
/**
|
||||
* 新增资格预审
|
||||
*
|
||||
* @param zgys 资格预审
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertZgys(Zgys zgys);
|
||||
|
||||
/**
|
||||
* 修改资格预审
|
||||
*
|
||||
* @param zgys 资格预审
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateZgys(Zgys zgys);
|
||||
|
||||
/**
|
||||
* 删除资格预审
|
||||
*
|
||||
* @param pqId 资格预审主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteZgysByPqId(String pqId);
|
||||
|
||||
/**
|
||||
* 批量删除资格预审
|
||||
*
|
||||
* @param pqIds 需要删除的数据主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteZgysByPqIds(String[] pqIds);
|
||||
|
||||
/**
|
||||
* 获取单据编号
|
||||
* @param type
|
||||
* @return
|
||||
*/
|
||||
String getCode(String type);
|
||||
}
|
|
@ -0,0 +1,68 @@
|
|||
package com.ruoyi.zgys.service;
|
||||
|
||||
import java.util.List;
|
||||
import com.ruoyi.zgys.domain.Zgys;
|
||||
|
||||
/**
|
||||
* 资格预审Service接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2024-07-22
|
||||
*/
|
||||
public interface IZgysService
|
||||
{
|
||||
/**
|
||||
* 查询资格预审
|
||||
*
|
||||
* @param pqId 资格预审主键
|
||||
* @return 资格预审
|
||||
*/
|
||||
public Zgys selectZgysByPqId(String pqId);
|
||||
|
||||
/**
|
||||
* 查询资格预审列表
|
||||
*
|
||||
* @param zgys 资格预审
|
||||
* @return 资格预审集合
|
||||
*/
|
||||
public List<Zgys> selectZgysList(Zgys zgys);
|
||||
|
||||
/**
|
||||
* 新增资格预审
|
||||
*
|
||||
* @param zgys 资格预审
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertZgys(Zgys zgys);
|
||||
|
||||
/**
|
||||
* 修改资格预审
|
||||
*
|
||||
* @param zgys 资格预审
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateZgys(Zgys zgys);
|
||||
|
||||
/**
|
||||
* 批量删除资格预审
|
||||
*
|
||||
* @param pqIds 需要删除的资格预审主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteZgysByPqIds(String[] pqIds);
|
||||
|
||||
/**
|
||||
* 删除资格预审信息
|
||||
*
|
||||
* @param pqId 资格预审主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteZgysByPqId(String pqId);
|
||||
|
||||
/**
|
||||
* 获取单据编号
|
||||
* @param type
|
||||
* @return
|
||||
*/
|
||||
String getCode(String type);
|
||||
}
|
|
@ -0,0 +1,110 @@
|
|||
package com.ruoyi.zgys.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.zgys.mapper.ZgysMapper;
|
||||
import com.ruoyi.zgys.domain.Zgys;
|
||||
import com.ruoyi.zgys.service.IZgysService;
|
||||
|
||||
/**
|
||||
* 资格预审Service业务层处理
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2024-07-22
|
||||
*/
|
||||
@Service
|
||||
public class ZgysServiceImpl implements IZgysService
|
||||
{
|
||||
@Autowired
|
||||
private ZgysMapper zgysMapper;
|
||||
|
||||
/**
|
||||
* 查询资格预审
|
||||
*
|
||||
* @param pqId 资格预审主键
|
||||
* @return 资格预审
|
||||
*/
|
||||
@Override
|
||||
public Zgys selectZgysByPqId(String pqId)
|
||||
{
|
||||
return zgysMapper.selectZgysByPqId(pqId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询资格预审列表
|
||||
*
|
||||
* @param zgys 资格预审
|
||||
* @return 资格预审
|
||||
*/
|
||||
@Override
|
||||
@DataScope(deptAlias = "d", userAlias = "u")
|
||||
public List<Zgys> selectZgysList(Zgys zgys)
|
||||
{
|
||||
return zgysMapper.selectZgysList(zgys);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增资格预审
|
||||
*
|
||||
* @param zgys 资格预审
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int insertZgys(Zgys zgys)
|
||||
{
|
||||
zgys.setCreateTime(DateUtils.getNowDate());
|
||||
zgys.setUpdateTime(DateUtils.getNowDate());
|
||||
return zgysMapper.insertZgys(zgys);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改资格预审
|
||||
*
|
||||
* @param zgys 资格预审
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int updateZgys(Zgys zgys)
|
||||
{
|
||||
zgys.setUpdateTime(DateUtils.getNowDate());
|
||||
return zgysMapper.updateZgys(zgys);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除资格预审
|
||||
*
|
||||
* @param pqIds 需要删除的资格预审主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteZgysByPqIds(String[] pqIds)
|
||||
{
|
||||
return zgysMapper.deleteZgysByPqIds(pqIds);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除资格预审信息
|
||||
*
|
||||
* @param pqId 资格预审主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteZgysByPqId(String pqId)
|
||||
{
|
||||
return zgysMapper.deleteZgysByPqId(pqId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取单据编号
|
||||
* @param type
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String getCode(String type) {
|
||||
return zgysMapper.getCode(type);
|
||||
}
|
||||
}
|
|
@ -12,7 +12,7 @@
|
|||
<if test="beforeChange != null and beforeChange != ''">beforeChange,</if>
|
||||
<if test="afterChange != null and afterChange != ''">afterChange,</if>
|
||||
<if test="typeId != null and typeId != ''">typeId,</if>
|
||||
<if test="remark != null and remark != ''">remark,</if>
|
||||
<if test="codeName != null and codeName != ''">codeName,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="changeTime != null">#{changeTime},</if>
|
||||
|
@ -21,7 +21,15 @@
|
|||
<if test="beforeChange != null and beforeChange != ''">#{beforeChange},</if>
|
||||
<if test="afterChange != null and afterChange != ''">#{afterChange},</if>
|
||||
<if test="typeId != null and typeId != ''">#{typeId},</if>
|
||||
<if test="remark != null and remark != ''">#{remark},</if>
|
||||
<if test="codeName != null and codeName != ''">#{codeName},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
<select id="recordsList" resultType="SysChangeRecord" parameterType="SysChangeRecord">
|
||||
select a.changeTime,b.nick_name createName,a.changeField,
|
||||
a.beforeChange,a.afterChange,a.typeId,a.codeName
|
||||
from sys_change_record a
|
||||
left join sys_user b on a.createName = b.user_name
|
||||
where a.typeId = #{typeId}
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
|
@ -0,0 +1,183 @@
|
|||
<?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.zgys.mapper.ZgysMapper">
|
||||
|
||||
<resultMap type="Zgys" id="ZgysResult">
|
||||
<result property="pqId" column="pq_id" />
|
||||
<result property="pqCode" column="pq_code" />
|
||||
<result property="pqSalesmanCode" column="pq_salesman_code" />
|
||||
<result property="pqSalesmanBm" column="pq_salesman_bm" />
|
||||
<result property="pqSalesmanName" column="pq_salesman_name" />
|
||||
<result property="pqSalesmanDeptId" column="pq_salesman_dept_id" />
|
||||
<result property="pqSalesmanDeptName" column="pq_salesman_dept_name" />
|
||||
<result property="pqCustomerBm" column="pq_customer_bm" />
|
||||
<result property="pqCustomerName" column="pq_customer_name" />
|
||||
<result property="pqProject" column="pq_project" />
|
||||
<result property="pqBidWinningRemark" column="pq_bid_winning_remark" />
|
||||
<result property="pqAuthorizedRepresentative" column="pq_authorized_representative" />
|
||||
<result property="pqBidDate" column="pq_bid_date" />
|
||||
<result property="pqZbr" column="pq_zbr" />
|
||||
<result property="pqBidWinningStatus" column="pq_bid_winning_status" />
|
||||
<result property="pqIllustrate" column="pq_illustrate" />
|
||||
<result property="pqAnnouncementLinkWebsite" column="pq_announcement_link_website" />
|
||||
<result property="pqPhone" column="pq_phone" />
|
||||
<result property="pqAgency" column="pq_agency" />
|
||||
<result property="pqRemark" column="pq_remark" />
|
||||
<result property="pqApprovalStatus" column="pq_approval_status" />
|
||||
<result property="pqArchiving" column="pq_archiving" />
|
||||
<result property="pqEmpower" column="pq_empower" />
|
||||
<result property="createBy" column="create_by" />
|
||||
<result property="createTime" column="create_time" />
|
||||
<result property="updateBy" column="update_by" />
|
||||
<result property="updateTime" column="update_time" />
|
||||
</resultMap>
|
||||
|
||||
<sql id="pqJoins">
|
||||
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="selectZgysVo">
|
||||
select a.pq_id, a.pq_code, a.pq_salesman_code, a.pq_salesman_bm, a.pq_salesman_name,
|
||||
a.pq_salesman_dept_id, a.pq_salesman_dept_name, a.pq_customer_bm,
|
||||
a.pq_customer_name, a.pq_project, a.pq_bid_winning_remark, a.pq_authorized_representative,
|
||||
a.pq_bid_date, a.pq_zbr, a.pq_bid_winning_status, a.pq_illustrate,
|
||||
a.pq_announcement_link_website, a.pq_phone, a.pq_agency, a.pq_remark,
|
||||
a.pq_approval_status,a.pq_archiving, a.pq_empower, a.create_by, a.create_time, a.update_by, a.update_time
|
||||
from zgys a
|
||||
<include refid="pqJoins"/>
|
||||
</sql>
|
||||
|
||||
<select id="selectZgysList" parameterType="Zgys" resultMap="ZgysResult">
|
||||
<include refid="selectZgysVo"/>
|
||||
<where>
|
||||
<if test="pqCode != null and pqCode != ''"> and pq_code like concat('%', #{pqCode}, '%')</if>
|
||||
<if test="pqSalesmanName != null and pqSalesmanName != ''"> and pq_salesman_name like concat('%', #{pqSalesmanName}, '%')</if>
|
||||
<if test="pqCustomerName != null and pqCustomerName != ''"> and pq_customer_name like concat('%', #{pqCustomerName}, '%')</if>
|
||||
<if test="pqProject != null and pqProject != ''"> and pq_project like concat('%', #{pqProject}, '%')</if>
|
||||
<if test="pqApprovalStatus != null and pqApprovalStatus != ''"> and pq_approval_status = #{pqApprovalStatus}</if>
|
||||
<if test="pqArchiving != null and pqArchiving != ''"> and pq_archiving = #{pqArchiving}</if>
|
||||
<if test="pqEmpower != null and pqEmpower != ''"> and pq_empower = #{pqEmpower}</if>
|
||||
|
||||
<!-- 数据范围过滤 -->
|
||||
${params.dataScope}
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="selectZgysByPqId" parameterType="String" resultMap="ZgysResult">
|
||||
<include refid="selectZgysVo"/>
|
||||
where pq_id = #{pqId}
|
||||
</select>
|
||||
|
||||
<insert id="insertZgys" parameterType="Zgys">
|
||||
insert into zgys
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="pqId != null">pq_id,</if>
|
||||
<if test="pqCode != null and pqCode != ''">pq_code,</if>
|
||||
<if test="pqSalesmanCode != null">pq_salesman_code,</if>
|
||||
<if test="pqSalesmanBm != null">pq_salesman_bm,</if>
|
||||
<if test="pqSalesmanName != null and pqSalesmanName != ''">pq_salesman_name,</if>
|
||||
<if test="pqSalesmanDeptId != null">pq_salesman_dept_id,</if>
|
||||
<if test="pqSalesmanDeptName != null and pqSalesmanDeptName != ''">pq_salesman_dept_name,</if>
|
||||
<if test="pqCustomerBm != null">pq_customer_bm,</if>
|
||||
<if test="pqCustomerName != null and pqCustomerName != ''">pq_customer_name,</if>
|
||||
<if test="pqProject != null and pqProject != ''">pq_project,</if>
|
||||
<if test="pqBidWinningRemark != null">pq_bid_winning_remark,</if>
|
||||
<if test="pqAuthorizedRepresentative != null and pqAuthorizedRepresentative != ''">pq_authorized_representative,</if>
|
||||
<if test="pqBidDate != null and pqBidDate != ''">pq_bid_date,</if>
|
||||
<if test="pqZbr != null">pq_zbr,</if>
|
||||
<if test="pqBidWinningStatus != null">pq_bid_winning_status,</if>
|
||||
<if test="pqIllustrate != null and pqIllustrate != ''">pq_illustrate,</if>
|
||||
<if test="pqAnnouncementLinkWebsite != null">pq_announcement_link_website,</if>
|
||||
<if test="pqPhone != null and pqPhone != ''">pq_phone,</if>
|
||||
<if test="pqAgency != null">pq_agency,</if>
|
||||
<if test="pqRemark != null">pq_remark,</if>
|
||||
<if test="pqApprovalStatus != null">pq_approval_status,</if>
|
||||
<if test="pqArchiving != null">pq_archiving,</if>
|
||||
<if test="pqEmpower != null">pq_empower,</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="pqId != null">#{pqId},</if>
|
||||
<if test="pqCode != null and pqCode != ''">#{pqCode},</if>
|
||||
<if test="pqSalesmanCode != null">#{pqSalesmanCode},</if>
|
||||
<if test="pqSalesmanBm != null">#{pqSalesmanBm},</if>
|
||||
<if test="pqSalesmanName != null and pqSalesmanName != ''">#{pqSalesmanName},</if>
|
||||
<if test="pqSalesmanDeptId != null">#{pqSalesmanDeptId},</if>
|
||||
<if test="pqSalesmanDeptName != null and pqSalesmanDeptName != ''">#{pqSalesmanDeptName},</if>
|
||||
<if test="pqCustomerBm != null">#{pqCustomerBm},</if>
|
||||
<if test="pqCustomerName != null and pqCustomerName != ''">#{pqCustomerName},</if>
|
||||
<if test="pqProject != null and pqProject != ''">#{pqProject},</if>
|
||||
<if test="pqBidWinningRemark != null">#{pqBidWinningRemark},</if>
|
||||
<if test="pqAuthorizedRepresentative != null and pqAuthorizedRepresentative != ''">#{pqAuthorizedRepresentative},</if>
|
||||
<if test="pqBidDate != null and pqBidDate != ''">#{pqBidDate},</if>
|
||||
<if test="pqZbr != null">#{pqZbr},</if>
|
||||
<if test="pqBidWinningStatus != null">#{pqBidWinningStatus},</if>
|
||||
<if test="pqIllustrate != null and pqIllustrate != ''">#{pqIllustrate},</if>
|
||||
<if test="pqAnnouncementLinkWebsite != null">#{pqAnnouncementLinkWebsite},</if>
|
||||
<if test="pqPhone != null and pqPhone != ''">#{pqPhone},</if>
|
||||
<if test="pqAgency != null">#{pqAgency},</if>
|
||||
<if test="pqRemark != null">#{pqRemark},</if>
|
||||
<if test="pqApprovalStatus != null">#{pqApprovalStatus},</if>
|
||||
<if test="pqArchiving != null">#{pqArchiving},</if>
|
||||
<if test="pqEmpower != null">#{pqEmpower},</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="updateZgys" parameterType="Zgys">
|
||||
update zgys
|
||||
<trim prefix="SET" suffixOverrides=",">
|
||||
<if test="pqCode != null and pqCode != ''">pq_code = #{pqCode},</if>
|
||||
<if test="pqSalesmanCode != null">pq_salesman_code = #{pqSalesmanCode},</if>
|
||||
<if test="pqSalesmanBm != null">pq_salesman_bm = #{pqSalesmanBm},</if>
|
||||
<if test="pqSalesmanName != null and pqSalesmanName != ''">pq_salesman_name = #{pqSalesmanName},</if>
|
||||
<if test="pqSalesmanDeptId != null">pq_salesman_dept_id = #{pqSalesmanDeptId},</if>
|
||||
<if test="pqSalesmanDeptName != null and pqSalesmanDeptName != ''">pq_salesman_dept_name = #{pqSalesmanDeptName},</if>
|
||||
<if test="pqCustomerBm != null">pq_customer_bm = #{pqCustomerBm},</if>
|
||||
<if test="pqCustomerName != null and pqCustomerName != ''">pq_customer_name = #{pqCustomerName},</if>
|
||||
<if test="pqProject != null and pqProject != ''">pq_project = #{pqProject},</if>
|
||||
<if test="pqBidWinningRemark != null">pq_bid_winning_remark = #{pqBidWinningRemark},</if>
|
||||
<if test="pqAuthorizedRepresentative != null and pqAuthorizedRepresentative != ''">pq_authorized_representative = #{pqAuthorizedRepresentative},</if>
|
||||
<if test="pqBidDate != null and pqBidDate != ''">pq_bid_date = #{pqBidDate},</if>
|
||||
<if test="pqZbr != null">pq_zbr = #{pqZbr},</if>
|
||||
<if test="pqBidWinningStatus != null">pq_bid_winning_status = #{pqBidWinningStatus},</if>
|
||||
<if test="pqIllustrate != null and pqIllustrate != ''">pq_illustrate = #{pqIllustrate},</if>
|
||||
<if test="pqAnnouncementLinkWebsite != null">pq_announcement_link_website = #{pqAnnouncementLinkWebsite},</if>
|
||||
<if test="pqPhone != null and pqPhone != ''">pq_phone = #{pqPhone},</if>
|
||||
<if test="pqAgency != null">pq_agency = #{pqAgency},</if>
|
||||
<if test="pqRemark != null">pq_remark = #{pqRemark},</if>
|
||||
<if test="pqApprovalStatus != null">pq_approval_status = #{pqApprovalStatus},</if>
|
||||
<if test="pqArchiving != null">pq_archiving = #{pqArchiving},</if>
|
||||
<if test="pqEmpower != null">pq_empower = #{pqEmpower},</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 pq_id = #{pqId}
|
||||
</update>
|
||||
|
||||
<delete id="deleteZgysByPqId" parameterType="String">
|
||||
delete from zgys where pq_id = #{pqId}
|
||||
</delete>
|
||||
|
||||
<delete id="deleteZgysByPqIds" parameterType="String">
|
||||
delete from zgys where pq_id in
|
||||
<foreach item="pqId" collection="array" open="(" separator="," close=")">
|
||||
#{pqId}
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
<select id="getCode" resultType="String" statementType="CALLABLE">
|
||||
{call GetSerialNo(#{type,mode=IN,jdbcType=VARCHAR})}
|
||||
</select>
|
||||
</mapper>
|
|
@ -0,0 +1,11 @@
|
|||
import request from '@/utils/request'
|
||||
import { parseStrEmpty } from "@/utils/ruoyi";
|
||||
|
||||
// 获取变更记录
|
||||
export function recordsList(query) {
|
||||
return request({
|
||||
url: '/system/changeRecord/recordsList',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
|
@ -0,0 +1,44 @@
|
|||
import request from '@/utils/request'
|
||||
|
||||
// 查询资格预审列表
|
||||
export function listZgys(query) {
|
||||
return request({
|
||||
url: '/zgys/zgys/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
// 查询资格预审详细
|
||||
export function getZgys(pqId) {
|
||||
return request({
|
||||
url: '/zgys/zgys/' + pqId,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// 新增资格预审
|
||||
export function addZgys(data) {
|
||||
return request({
|
||||
url: '/zgys/zgys',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 修改资格预审
|
||||
export function updateZgys(data) {
|
||||
return request({
|
||||
url: '/zgys/zgys',
|
||||
method: 'put',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 删除资格预审
|
||||
export function delZgys(pqId) {
|
||||
return request({
|
||||
url: '/zgys/zgys/' + pqId,
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
|
@ -124,6 +124,17 @@
|
|||
v-hasPermi="['bid:bid:assign']"
|
||||
>分派</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="warning"
|
||||
plain
|
||||
icon="el-icon-user-solid"
|
||||
size="mini"
|
||||
:disabled="single"
|
||||
@click="handleChangeRecord"
|
||||
v-hasPermi="['bid:bid:add']"
|
||||
>变更记录</el-button>
|
||||
</el-col>
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
<div v-tableHeight="{customHeight: 76}">
|
||||
|
@ -223,7 +234,7 @@
|
|||
<el-input v-model="form.bidCode" placeholder="系统自动生成" :disabled="true"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-col :span="6">
|
||||
<el-form-item label="是否报名" prop="bidHasRegistration">
|
||||
<el-select v-model="form.bidHasRegistration" :disabled="this.form.bidApprovalStatus != '0' && this.form.bidApprovalStatus != null">
|
||||
<el-option
|
||||
|
@ -235,9 +246,11 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-col :span="10">
|
||||
<el-form-item label="原报名编号" prop="bidRegistrationNumber">
|
||||
<el-input v-model="form.bidRegistrationNumber" placeholder="请输入原报名编号" :disabled="(this.form.bidApprovalStatus != '0' && this.form.bidApprovalStatus != null) || this.form.bidHasRegistration!='0'"/>
|
||||
<el-input v-model="form.bidRegistrationNumber" :disabled="true">
|
||||
<el-button slot="append" icon="el-icon-search" @click="openZgys" v-if="this.form.bidApprovalStatus == '0' || this.form.bidApprovalStatus == null"/>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
@ -289,7 +302,7 @@
|
|||
<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-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>
|
||||
|
@ -846,6 +859,49 @@
|
|||
</el-table-column>
|
||||
</el-table>
|
||||
</el-dialog>
|
||||
|
||||
<!-- 资格预审单列表对话框-->
|
||||
<el-dialog :title="zgysTitle" :visible.sync="zgysOpen" width="1000px" append-to-body>
|
||||
<el-form :model="zgysQueryParams" ref="queryQccForm" size="small" :inline="true" label-width="100px" @submit.native.prevent>
|
||||
<el-form-item label="招标单位" prop="Name">
|
||||
<el-input
|
||||
v-model="zgysQueryParams.pqCustomerName"
|
||||
placeholder="请输入招标单位"
|
||||
@keyup.enter.native="getZgysList"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="项目" prop="pqProject">
|
||||
<el-input
|
||||
v-model="zgysQueryParams.pqProject"
|
||||
placeholder="请输入项目"
|
||||
@keyup.enter.native="getZgysList"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="getZgysList">搜索</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-table class="down" v-loading="zgysLoading" ref="zgysTable" :data="zgysList" @selection-change="handleSelectionZgysChange" border stripe style="width: 100%;margin-top: 10px;" height="380px">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column prop="pqCode" label="资格预审单编号" width="200px"></el-table-column>
|
||||
<el-table-column prop="pqCustomerName" label="招标单位"/>
|
||||
<el-table-column prop="pqProject" label="项目名称"></el-table-column>
|
||||
<el-table-column prop="pqAuthorizedRepresentative" label="授权代表" width="150px"></el-table-column>
|
||||
</el-table>
|
||||
<pagination
|
||||
v-show="zgysTotal>0"
|
||||
:total="zgysTotal"
|
||||
:page.sync="zgysQueryParams.pageNum"
|
||||
:limit.sync="zgysQueryParams.pageSize"
|
||||
@pagination="getZgysList"
|
||||
/>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="zgysConfirm" :disabled="zgysSingle">确 定</el-button>
|
||||
<el-button @click="zgysCancel">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<div style="height: 25px;">
|
||||
|
@ -870,6 +926,10 @@
|
|||
<CustomerSelect ref="customerSelect" :open="customerOpen" @submit="submitCustomer" @cancel="customerOpen=false"></CustomerSelect>
|
||||
</el-dialog>
|
||||
<PeopleSelect v-if="checkRole(['BID'])" ref="peopleSelect" :type="'single'" :isCheck="true" :open="peopleOpenFp" @cancel="peopleOpenFp=false" @submit="submitPeopleFp"></PeopleSelect>
|
||||
|
||||
<el-dialog :title="changeRecordTitle" :visible.sync="openChangeRecord" v-if="openChangeRecord" width="1200px" append-to-body>
|
||||
<ChangeRecord :codeProp="codeProp"></ChangeRecord>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<style>
|
||||
|
@ -899,6 +959,7 @@
|
|||
<script>
|
||||
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 elDragDialog from "@/directive/dialog/dragDialog";
|
||||
|
@ -909,6 +970,9 @@ import CustomerSelect from "@/views/components/Tools/CustomerSelect/index.vue";
|
|||
/** 导入选人组件 */
|
||||
import PeopleSelect from "@/views/components/Tools/PeopleSelect/index.vue";
|
||||
|
||||
/** 导入变更记录组件 */
|
||||
import ChangeRecord from "@/views/components/Tools/ChangeRecord/index.vue";
|
||||
|
||||
export default {
|
||||
name: "Bid",
|
||||
directives: {
|
||||
|
@ -918,7 +982,8 @@ export default {
|
|||
// 注册组件
|
||||
'jsqrDialog': jsqrDialog,
|
||||
'CustomerSelect': CustomerSelect,
|
||||
'PeopleSelect': PeopleSelect
|
||||
'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'],
|
||||
data() {
|
||||
|
@ -1027,8 +1092,26 @@ export default {
|
|||
peopleOpenSelectYwy:false, // 投标办选择业务员创建
|
||||
selectedPeoples:[],
|
||||
|
||||
//是否打开变更记录组件
|
||||
changeRecordTitle: "",
|
||||
openChangeRecord:false,
|
||||
codeProp: "",
|
||||
|
||||
//调价日期
|
||||
versionList: [], // 调价版本数据列表
|
||||
|
||||
//资格预审单列表
|
||||
zgysTitle: "",
|
||||
zgysOpen: false,
|
||||
zgysLoading: false,
|
||||
zgysTotal: 0,
|
||||
zgysList: [],
|
||||
zgysQueryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
},
|
||||
zgysSingle: true,
|
||||
zgysMultiple: true,
|
||||
};
|
||||
},
|
||||
created() {
|
||||
|
@ -1303,6 +1386,14 @@ export default {
|
|||
this.openPeopleSelect();
|
||||
},
|
||||
|
||||
/** 打开变更记录 */
|
||||
handleChangeRecord(){
|
||||
const bidIds = this.ids;
|
||||
this.openChangeRecord=true;
|
||||
this.changeRecordTitle="变更记录";
|
||||
this.codeProp = bidIds[0];
|
||||
},
|
||||
|
||||
/** 是否报名事件 */
|
||||
bidHasRegistrationChange(val) {
|
||||
this.form.bidRegistrationNumber = (val != '0'?'':this.form.bidRegistrationNumber)
|
||||
|
@ -1510,6 +1601,49 @@ export default {
|
|||
});
|
||||
},
|
||||
/*********************************技术协助模块*****************************************/
|
||||
|
||||
/*********************************打开资格预审列表选择*****************************************/
|
||||
openZgys(){
|
||||
this.zgysOpen=true;
|
||||
this.zgysTitle="选择资格预审单";
|
||||
this.resetZgysQuery();
|
||||
},
|
||||
getZgysList(){
|
||||
this.zgysLoading = true;
|
||||
listZgys(this.zgysQueryParams).then(response => {
|
||||
this.zgysList = response.rows;
|
||||
this.zgysTotal = response.total;
|
||||
this.zgysLoading = false;
|
||||
});
|
||||
},
|
||||
handleSelectionZgysChange(selection) {
|
||||
this.zgysSingle = selection.length!==1
|
||||
this.zgysMultiple = !selection.length
|
||||
},
|
||||
zgysConfirm() {
|
||||
const zgysTable = this.$refs.zgysTable;
|
||||
const selectedData = zgysTable.selection;
|
||||
this.form.bidRegistrationNumber = selectedData[0].pqCode;
|
||||
this.form.bidTenderingUnit = selectedData[0].pqCustomerName;
|
||||
this.form.bidProject = selectedData[0].pqProject;
|
||||
this.form.bidAuthorizedRepresentative = selectedData[0].pqAuthorizedRepresentative;
|
||||
this.zgysOpen = false;
|
||||
},
|
||||
// 取消按钮
|
||||
zgysCancel() {
|
||||
this.zgysOpen = false;
|
||||
this.resetZgysQuery();
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetZgysQuery() {
|
||||
this.zgysList = [];
|
||||
this.zgysQueryParams = {
|
||||
pqCustomerName: "",
|
||||
pqProject: "",
|
||||
pqApprovalStatus: '2'
|
||||
}
|
||||
},
|
||||
/*********************************打开资格预审列表选择*****************************************/
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
|
|
@ -0,0 +1,93 @@
|
|||
<template>
|
||||
<el-table height="500" v-loading="loading" :data="records" :span-method="objectSpanMethod">
|
||||
<el-table-column label="变更日期" align="center" prop="changeTime"/>
|
||||
<el-table-column label="变更字段" align="center" prop="changeField"/>
|
||||
<el-table-column label="变更前" align="center" prop="beforeChange"/>
|
||||
<el-table-column label="变更后" align="center" prop="afterChange"/>
|
||||
<el-table-column label="变更人" align="center" prop="createName"/>
|
||||
</el-table>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { recordsList } from "@/api/system/changeRecord";
|
||||
|
||||
export default {
|
||||
name: "ChangeRecord",
|
||||
props: {
|
||||
codeProp: String
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
loading:false,
|
||||
//变更记录数据
|
||||
records: [],
|
||||
mergeObj: {}, // 用来记录需要合并行的下标
|
||||
mergeArr: ['changeTime', 'createName'] // 表格中的列名
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
codeProp(value,oldvalue){
|
||||
this.getList();
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getList();
|
||||
},
|
||||
methods: {
|
||||
getList(){
|
||||
this.records = [];
|
||||
const code = this._props.codeProp;
|
||||
if(code){
|
||||
this.loading = false;
|
||||
const params = {'typeId': this._props.codeProp};
|
||||
recordsList(params).then(response => {
|
||||
this.records = response
|
||||
this.getSpanArr(this.records);
|
||||
this.loading = false;
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
|
||||
// 判断列的属性
|
||||
if(this.mergeArr.indexOf(column.property) !== -1) {
|
||||
// 判断其值是不是为0
|
||||
if(this.mergeObj[column.property][rowIndex]) {
|
||||
return [this.mergeObj[column.property][rowIndex], 1]
|
||||
} else {
|
||||
// 如果为0则为需要合并的行
|
||||
return [0, 0];
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// getSpanArr方法
|
||||
getSpanArr(data) {
|
||||
this.mergeArr.forEach((key, index1) => {
|
||||
let count = 0; // 用来记录需要合并行的起始位置
|
||||
this.mergeObj[key] = []; // 记录每一列的合并信息
|
||||
data.forEach((item, index) => {
|
||||
// index == 0表示数据为第一行,直接 push 一个 1
|
||||
if(index === 0) {
|
||||
this.mergeObj[key].push(1);
|
||||
} else {
|
||||
// 判断当前行是否与上一行其值相等 如果相等 在 count 记录的位置其值 +1 表示当前行需要合并 并push 一个 0 作为占位
|
||||
if(item[key] === data[index - 1][key]) {
|
||||
this.mergeObj[key][count] += 1;
|
||||
this.mergeObj[key].push(0);
|
||||
} else {
|
||||
// 如果当前行和上一行其值不相等
|
||||
count = index; // 记录当前位置
|
||||
this.mergeObj[key].push(1); // 重新push 一个 1
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
|
@ -249,7 +249,7 @@
|
|||
<!-- 添加或修改报价对话框 -->
|
||||
<el-dialog :visible.sync="open" width="1050px" v-el-drag-dialog append-to-body>
|
||||
<template slot="title">
|
||||
报价单信息<span style="color:red;margin-left:25px">(注:此报价单数据,型号规格电压等如需下单或签订合同引用,请再次自行核对,责任自负)</span>
|
||||
<div>询价单信息</div><div style="color:red;">(注:1、如厂价金额低于10万,不得特批; 2、此报价单数据,型号规格电压等如需下单或签订合同引用,请再次自行核对,责任自负)</div>
|
||||
</template>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
|
||||
<el-divider content-position="left" class="customer_divider_text">当前协助情况</el-divider>
|
||||
|
|
|
@ -610,7 +610,7 @@
|
|||
const per2 = this.form.perc2;
|
||||
const count = '1';
|
||||
const setPrice = toDecimal(price * (per?per:1) * (per2?per2:1));
|
||||
const allPrice = toDecimal(count * price * (per?per:1) * (per2?per2:1));
|
||||
const allPrice = toDecimal(count * setPrice);
|
||||
|
||||
const rowDate = {
|
||||
uid_0: uid_0.toString(),
|
||||
|
@ -724,7 +724,7 @@
|
|||
per: this.form.perc,
|
||||
per2: this.form.perc2,
|
||||
setPrice: toDecimal(row.price * (this.form.perc?this.form.perc:1) * (this.form.perc2?this.form.perc2:1)),
|
||||
allPrice: toDecimal(row.count * row.price * (this.form.perc?this.form.perc:1) * (this.form.perc2?this.form.perc2:1)),
|
||||
allPrice: toDecimal(row.count * toDecimal(row.price * (this.form.perc?this.form.perc:1) * (this.form.perc2?this.form.perc2:1))),
|
||||
});
|
||||
})
|
||||
},
|
||||
|
@ -736,7 +736,7 @@
|
|||
this.$set(this.selectedResultData, index, {
|
||||
...row,
|
||||
setPrice: toDecimal(row.price * (row.per?row.per:1) * (row.per2?row.per2:1)),
|
||||
allPrice: toDecimal(row.count * row.price * (row.per?row.per:1) * (row.per2?row.per2:1)),
|
||||
allPrice: toDecimal(row.count * toDecimal(row.price * (row.per?row.per:1) * (row.per2?row.per2:1))),
|
||||
});
|
||||
})
|
||||
},
|
||||
|
@ -908,7 +908,7 @@
|
|||
) {
|
||||
this.selectedResultData[i].price = response.data[j].price;
|
||||
const setPrice = toDecimal(this.selectedResultData[i].price * (this.selectedResultData[i].per?this.selectedResultData[i].per:1) * (this.selectedResultData[i].per2?this.selectedResultData[i].per2:1));
|
||||
const allPrice = toDecimal(this.selectedResultData[i].count * this.selectedResultData[i].price * (this.selectedResultData[i].per?this.selectedResultData[i].per:1) * (this.selectedResultData[i].per2?this.selectedResultData[i].per2:1));
|
||||
const allPrice = toDecimal(this.selectedResultData[i].count * setPrice);
|
||||
|
||||
this.selectedResultData[i].setPrice = setPrice;
|
||||
this.selectedResultData[i].allPrice = allPrice;
|
||||
|
|
|
@ -352,7 +352,7 @@
|
|||
per: this.form.perc,
|
||||
per2: this.form.perc2,
|
||||
setPrice: toDecimal(row.price * (this.form.perc?this.form.perc:1) * (this.form.perc2?this.form.perc2:1)),
|
||||
allPrice: toDecimal(row.count * row.price * (this.form.perc?this.form.perc:1) * (this.form.perc2?this.form.perc2:1)),
|
||||
allPrice: toDecimal(row.count * toDecimal(row.price * (this.form.perc?this.form.perc:1) * (this.form.perc2?this.form.perc2:1))),
|
||||
});
|
||||
})
|
||||
},
|
||||
|
@ -364,7 +364,7 @@
|
|||
this.$set(this.selectedResultData, index, {
|
||||
...row,
|
||||
setPrice: toDecimal(row.price * (row.per?row.per:1) * (row.per2?row.per2:1)),
|
||||
allPrice: toDecimal(row.count * row.price * (row.per?row.per:1) * (row.per2?row.per2:1)),
|
||||
allPrice: toDecimal(row.count * toDecimal(row.price * (row.per?row.per:1) * (row.per2?row.per2:1))),
|
||||
});
|
||||
})
|
||||
},
|
||||
|
@ -391,7 +391,7 @@
|
|||
) {
|
||||
this.selectedResultData[i].price = response.data[j].price;
|
||||
const setPrice = toDecimal(this.selectedResultData[i].price * (this.selectedResultData[i].per?this.selectedResultData[i].per:1) * (this.selectedResultData[i].per2?this.selectedResultData[i].per2:1));
|
||||
const allPrice = toDecimal(this.selectedResultData[i].count * this.selectedResultData[i].price * (this.selectedResultData[i].per?this.selectedResultData[i].per:1) * (this.selectedResultData[i].per2?this.selectedResultData[i].per2:1));
|
||||
const allPrice = toDecimal(this.selectedResultData[i].count * setPrice);
|
||||
|
||||
this.selectedResultData[i].setPrice = setPrice;
|
||||
this.selectedResultData[i].allPrice = allPrice;
|
||||
|
|
|
@ -0,0 +1,551 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="150px">
|
||||
<el-form-item label="资格预审单编号" prop="pqCode">
|
||||
<el-input
|
||||
v-model="queryParams.pqCode"
|
||||
placeholder="请输入资格预审单编号"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="业务员" prop="pqSalesmanName">
|
||||
<el-input
|
||||
v-model="queryParams.pqSalesmanName"
|
||||
placeholder="请输入业务员"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="客户名称" prop="pqCustomerName">
|
||||
<el-input
|
||||
v-model="queryParams.pqCustomerName"
|
||||
placeholder="请输入客户名称"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="项目" prop="pqProject">
|
||||
<el-input
|
||||
v-model="queryParams.pqProject"
|
||||
placeholder="请输入项目"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="提交状态" prop="pqAapprovalStatus">
|
||||
<el-select v-model="queryParams.pqAapprovalStatus" placeholder="请选择提交状态" clearable>
|
||||
<el-option
|
||||
v-for="dict in dict.type.pq_approval_status"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否存档" prop="pqArchiving">
|
||||
<el-select v-model="queryParams.pqArchiving" placeholder="请选择是否存档" clearable>
|
||||
<el-option
|
||||
v-for="dict in dict.type.pq_archiving"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="授权状态" prop="pqEmpower">
|
||||
<el-select v-model="queryParams.pqEmpower" placeholder="请选择授权状态" clearable>
|
||||
<el-option
|
||||
v-for="dict in dict.type.pq_empower"
|
||||
: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="['zgys:zgys: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="['zgys:zgys: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="['zgys:zgys: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="['zgys:zgys: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="zgysList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="资格预审单id" align="center" prop="pqId" v-if="false" />
|
||||
<el-table-column fixed label="资格预审单编号" align="center" prop="pqCode" width="200px">
|
||||
<template slot-scope="scope">
|
||||
<el-link :underline="false" type="primary" @click="handleUpdate(scope.row)">{{scope.row.pqCode}}</el-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column fixed label="提交状态" align="center" prop="pqApprovalStatus">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.pq_approval_status" :value="scope.row.pqApprovalStatus"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="业务员" align="center" prop="pqSalesmanName" width="150px"/>
|
||||
<el-table-column label="客户名称" align="center" prop="pqCustomerName" width="250px"/>
|
||||
<el-table-column label="项目" align="center" prop="pqProject" width="250px"/>
|
||||
<el-table-column label="授权人" align="center" prop="pqAuthorizedRepresentative" width="100px"/>
|
||||
<el-table-column label="开标日期" align="center" prop="pqBidDate" width="100px"/>
|
||||
<el-table-column label="制标人" align="center" prop="pqZbr" width="150px"/>
|
||||
<el-table-column label="是否存档" align="center" prop="pqArchiving">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.pq_archiving" :value="scope.row.pqArchiving"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="授权状态" align="center" prop="pqEmpower">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.pq_empower" :value="scope.row.pqEmpower"/>
|
||||
</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>
|
||||
</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" 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="pqApprovalStatus">
|
||||
<dict-tag :options="dict.type.pq_approval_status" :value="this.form.pqApprovalStatus"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="授权状态" prop="pqEmpower">
|
||||
<dict-tag :options="dict.type.pq_empower" :value="this.form.pqEmpower"/>
|
||||
</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="pqCode">
|
||||
<el-input v-model="form.pqCode" placeholder="系统自动生成" :disabled="true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="所属部门" prop="pqSalesmanDeptName">
|
||||
<el-input v-model="form.pqSalesmanDeptId" v-if="false"/>
|
||||
<el-input v-model="form.pqSalesmanDeptName" :disabled="true"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="业务员" prop="pqSalesmanName">
|
||||
<el-input v-model="form.pqSalesmanCode" v-if="false"/>
|
||||
<el-input v-model="form.pqSalesmanBm" v-if="false"/>
|
||||
<el-input v-model="form.pqSalesmanName" :disabled="true"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="8">
|
||||
<el-col :span="16">
|
||||
<el-form-item label="客户名称" prop="pqCustomerName">
|
||||
<el-input v-model="form.pqCustomerBm" v-if="false"/>
|
||||
<el-input v-model="form.pqCustomerName" :disabled="true">
|
||||
<el-button slot="append" icon="el-icon-search" @click="openCustomer"/>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="授权人" prop="pqAuthorizedRepresentative">
|
||||
<el-input v-model="form.pqAuthorizedRepresentative" placeholder="请输入授权人" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="8">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="项目" prop="pqProject">
|
||||
<el-input type="textarea" autosize v-model="form.pqProject" placeholder="请输入项目" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="8">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="中标备注" prop="pqBidWinningRemark">
|
||||
<el-input type="textarea" autosize v-model="form.pqBidWinningRemark" placeholder="请输入中标备注" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="8">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="开标日期" prop="pqBidDate">
|
||||
<el-date-picker clearable
|
||||
v-model="form.pqBidDate"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择开标日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="制标人" prop="pqZbr">
|
||||
<el-input v-model="form.pqZbr" placeholder="请输入制标人" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="中标状态" prop="pqBidWinningStatus">
|
||||
<el-select v-model="form.pqBidWinningStatus" placeholder="请选择中标状态">
|
||||
<el-option
|
||||
v-for="dict in dict.type.pq_bid_winning_status"
|
||||
: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="8">
|
||||
<el-form-item label="说明" prop="pqIllustrate">
|
||||
<el-select v-model="form.pqIllustrate" placeholder="请选择说明">
|
||||
<el-option
|
||||
v-for="dict in dict.type.pq_illustrate"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="联系电话" prop="pqPhone">
|
||||
<el-input v-model="form.pqPhone" placeholder="请输入联系电话" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="公告链接网址" prop="pqAnnouncementLinkWebsite">
|
||||
<el-input v-model="form.pqAnnouncementLinkWebsite" placeholder="请输入公告链接网址" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="8">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="招标代理" prop="pqAgency">
|
||||
<el-input v-model="form.pqAgency" placeholder="请输入招标代理" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="是否存档" prop="pqArchiving">
|
||||
<el-select v-model="form.pqArchiving" placeholder="请选择是否存档">
|
||||
<el-option
|
||||
v-for="dict in dict.type.pq_archiving"
|
||||
: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="24">
|
||||
<el-form-item label="备注" prop="pqRemark">
|
||||
<el-input type="textarea" autosize v-model="form.pqRemark" placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</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 { listZgys, getZgys, delZgys, addZgys, updateZgys } from "@/api/zgys/zgys";
|
||||
/** 导入客户选择组件 */
|
||||
import CustomerSelect from "@/views/components/Tools/CustomerSelect/index.vue";
|
||||
export default {
|
||||
name: "Zgys",
|
||||
dicts: ['pq_approval_status','pq_archiving', 'pq_bid_winning_status', 'pq_empower', 'pq_illustrate'],
|
||||
components: {
|
||||
// 注册组件
|
||||
'CustomerSelect': CustomerSelect,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 选中数组
|
||||
ids: [],
|
||||
// 非单个禁用
|
||||
single: true,
|
||||
// 非多个禁用
|
||||
multiple: true,
|
||||
// 显示搜索条件
|
||||
showSearch: true,
|
||||
// 总条数
|
||||
total: 0,
|
||||
// 资格预审表格数据
|
||||
zgysList: [],
|
||||
// 弹出层标题
|
||||
title: "",
|
||||
// 是否显示弹出层
|
||||
open: false,
|
||||
//是否打开客户选择组件,默认不打开
|
||||
customerOpen:false,
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pqCode: null,
|
||||
pqSalesmanName: null,
|
||||
pqCustomerName: null,
|
||||
pqProject: null,
|
||||
pqBidWinningStatus: null,
|
||||
pqArchiving: null,
|
||||
pqEmpower: null,
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
// 表单校验
|
||||
rules: {
|
||||
pqSalesmanName: [
|
||||
{ required: true, message: "业务员不能为空", trigger: "blur" }
|
||||
],
|
||||
pqSalesmanDeptName: [
|
||||
{ required: true, message: "部门名不能为空", trigger: "blur" }
|
||||
],
|
||||
pqCustomerName: [
|
||||
{ required: true, message: "客户名称不能为空", trigger: "blur" }
|
||||
],
|
||||
pqProject: [
|
||||
{ required: true, message: "项目不能为空", trigger: "blur" }
|
||||
],
|
||||
pqAuthorizedRepresentative: [
|
||||
{ required: true, message: "授权人不能为空", trigger: "blur" }
|
||||
],
|
||||
pqBidDate: [
|
||||
{ required: true, message: "开标日期不能为空", trigger: "blur" }
|
||||
],
|
||||
pqIllustrate: [
|
||||
{ required: true, message: "说明不能为空", trigger: "change" }
|
||||
],
|
||||
pqPhone: [
|
||||
{ required: true, message: "联系电话不能为空", trigger: "blur" }
|
||||
],
|
||||
}
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.getList();
|
||||
},
|
||||
methods: {
|
||||
/** 查询资格预审列表 */
|
||||
getList() {
|
||||
this.loading = true;
|
||||
listZgys(this.queryParams).then(response => {
|
||||
this.zgysList = response.rows;
|
||||
this.total = response.total;
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
// 取消按钮
|
||||
cancel() {
|
||||
this.open = false;
|
||||
this.reset();
|
||||
},
|
||||
// 表单重置
|
||||
reset() {
|
||||
this.form = {
|
||||
pqId: null,
|
||||
pqCode: null,
|
||||
pqSalesmanCode: null,
|
||||
pqSalesmanBm: null,
|
||||
pqSalesmanName: null,
|
||||
pqSalesmanDeptId: null,
|
||||
pqSalesmanDeptName: null,
|
||||
pqCustomerBm: null,
|
||||
pqCustomerName: null,
|
||||
pqProject: null,
|
||||
pqBidWinningRemark: null,
|
||||
pqAuthorizedRepresentative: null,
|
||||
pqBidDate: null,
|
||||
pqZbr: null,
|
||||
pqBidWinningStatus: null,
|
||||
pqIllustrate: null,
|
||||
pqAnnouncementLinkWebsite: null,
|
||||
pqPhone: null,
|
||||
pqAgency: null,
|
||||
pqRemark: null,
|
||||
pqArchiving: null,
|
||||
pqEmpower: null,
|
||||
pqApprovalStatus: null,
|
||||
createBy: null,
|
||||
createTime: null,
|
||||
updateBy: null,
|
||||
updateTime: null
|
||||
};
|
||||
this.resetForm("form");
|
||||
},
|
||||
/** 搜索按钮操作 */
|
||||
handleQuery() {
|
||||
this.queryParams.pageNum = 1;
|
||||
this.getList();
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
this.resetForm("queryForm");
|
||||
this.handleQuery();
|
||||
},
|
||||
// 多选框选中数据
|
||||
handleSelectionChange(selection) {
|
||||
this.ids = selection.map(item => item.pqId)
|
||||
this.single = selection.length!==1
|
||||
this.multiple = !selection.length
|
||||
},
|
||||
/** 新增按钮操作 */
|
||||
handleAdd() {
|
||||
this.reset();
|
||||
this.open = true;
|
||||
this.title = "添加资格预审";
|
||||
this.form.pqSalesmanName = this.$store.state.user.nickName;
|
||||
this.form.pqSalesmanBm = this.$store.state.user.sapBm;
|
||||
this.form.pqSalesmanCode = this.$store.state.user.name;
|
||||
|
||||
this.form.pqSalesmanDeptId = this.$store.state.user.deptId;
|
||||
this.form.pqSalesmanDeptName = this.$store.state.user.deptName;
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
this.reset();
|
||||
const pqId = row.pqId || this.ids
|
||||
getZgys(pqId).then(response => {
|
||||
this.form = response.data;
|
||||
this.open = true;
|
||||
this.title = "修改资格预审";
|
||||
});
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm() {
|
||||
this.$refs["form"].validate(valid => {
|
||||
if (valid) {
|
||||
if (this.form.pqId != null) {
|
||||
updateZgys(this.form).then(response => {
|
||||
this.$modal.msgSuccess("修改成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
} else {
|
||||
addZgys(this.form).then(response => {
|
||||
this.$modal.msgSuccess("创建成功");
|
||||
const row = {'pqId':response.data.pqId}
|
||||
this.handleUpdate(row);
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const pqIds = row.pqId || this.ids;
|
||||
this.$modal.confirm('是否确认删除资格预审编号为"' + pqIds + '"的数据项?').then(function() {
|
||||
return delZgys(pqIds);
|
||||
}).then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
}).catch(() => {});
|
||||
},
|
||||
/** 导出按钮操作 */
|
||||
handleExport() {
|
||||
this.download('zgys/zgys/export', {
|
||||
...this.queryParams
|
||||
}, `zgys_${new Date().getTime()}.xlsx`)
|
||||
},
|
||||
|
||||
/** 打开客户选择弹窗 */
|
||||
openCustomer(){
|
||||
this.customerOpen=true;
|
||||
},
|
||||
/** 客户选择确定按钮事件 */
|
||||
submitCustomer(customer){
|
||||
this.form.pqCustomerBm = customer.value;
|
||||
this.form.pqCustomerName = customer.label;
|
||||
this.customerOpen=false;
|
||||
},
|
||||
}
|
||||
};
|
||||
</script>
|
Loading…
Reference in New Issue