mobile quot
This commit is contained in:
commit
d63db1c950
|
@ -1,5 +1,9 @@
|
|||
#for tests only !
|
||||
<<<<<<< HEAD
|
||||
#Wed Jun 19 09:11:03 CST 2024
|
||||
=======
|
||||
#Mon Jun 17 15:48:27 CST 2024
|
||||
>>>>>>> 1efe171bc013909adaa8e3300a0b9ce6c2e24d85
|
||||
jco.destination.pool_capacity=10
|
||||
jco.client.lang=ZH
|
||||
jco.client.ashost=172.19.0.125
|
||||
|
@ -7,5 +11,9 @@ jco.client.saprouter=
|
|||
jco.client.user=RFC
|
||||
jco.client.sysnr=00
|
||||
jco.destination.peak_limit=10
|
||||
<<<<<<< HEAD
|
||||
jco.client.passwd=g}=[!8cY+]^Y:h6_:E9``X=J#eA[=IM/|(0EB`M)]I1i?/qD
|
||||
=======
|
||||
jco.client.passwd=654321
|
||||
>>>>>>> 1efe171bc013909adaa8e3300a0b9ce6c2e24d85
|
||||
jco.client.client=800
|
||||
|
|
|
@ -206,11 +206,11 @@ public class CustomerController extends BaseController
|
|||
customer.setCusCode(cusCode);
|
||||
customer.setCreateBy(getUsername());
|
||||
customerService.insertCustomer(customer);
|
||||
sendNotice(customer);//发送消息至数据组
|
||||
//sendNotice(customer);//发送消息至数据组
|
||||
return success();
|
||||
}else{
|
||||
customerService.updateCustomer(customer);
|
||||
sendNotice(customer);//发送消息至数据组
|
||||
//sendNotice(customer);//发送消息至数据组
|
||||
return success();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -135,7 +135,7 @@ public class QuotHjController extends BaseController
|
|||
quot.setQuotHjApprovalStatus("2");//报价单-核价单 状态设置为 已协助
|
||||
quotService.updateQuot(quot);
|
||||
|
||||
sendNoticeToQuot(quotHj);// 发送给提醒
|
||||
//sendNoticeToQuot(quotHj);// 发送给提醒
|
||||
return success();
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.ruoyi.web.controller.quot;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
@ -143,20 +144,50 @@ public class QuotController extends BaseController
|
|||
public AjaxResult getReturnUpdateInfo(@PathVariable("quotId") String quotId)
|
||||
{
|
||||
Quot quot = quotService.selectQuotByQuotId(quotId);
|
||||
if("2".equals(quot.getQuotApprovalStatus())){
|
||||
if("2".equals(quot.getQuotApprovalStatus()) || "3".equals(quot.getQuotApprovalStatus())){
|
||||
quot.setQuotApprovalStatus("1");// 提交状态设置为 协助中
|
||||
quotService.updateQuot(quot);
|
||||
}else if("0".equals(quot.getQuotApprovalStatus())){
|
||||
return error("该报价单当前状态为【待提交】状态,无法修改");
|
||||
}else if("1".equals(quot.getQuotApprovalStatus())){
|
||||
return error("该报价单当前状态为【协助中】状态,无法修改");
|
||||
}else if("3".equals(quot.getQuotApprovalStatus())){
|
||||
return error("该报价单当前状态为【已驳回】状态,无法修改");
|
||||
}
|
||||
|
||||
return success(quot);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取报价详细信息-整单通过
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('quot:quot:allPass')")
|
||||
@GetMapping(value = "/allPass/{quotId}")
|
||||
@Log(title = "报价单-手动更新状态为通过", businessType = BusinessType.UPDATE)
|
||||
public AjaxResult getAllPassInfo(@PathVariable("quotId") String quotId)
|
||||
{
|
||||
Quot quot = new Quot();
|
||||
quot.setQuotId(quotId);
|
||||
quot.setQuotApprovalStatus("2");// 提交状态设置为 通过
|
||||
quot.setQuotQuotationDate(DateUtils.getNowDate());//报价单-报价日期设置为 当前日期
|
||||
quot.setQuotCheckUserName(getUsername());
|
||||
quotService.updateQuotAllPassInfo(quot);
|
||||
return success(quot);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取报价详细信息-整单驳回
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('quot:quot:allReject')")
|
||||
@PostMapping(value = "/allReject")
|
||||
@Log(title = "报价单-手动更新状态为驳回", businessType = BusinessType.UPDATE)
|
||||
public AjaxResult getAllRejectInfo(@RequestBody Quot quot)
|
||||
{
|
||||
quot.setQuotApprovalStatus("3");// 提交状态设置为 驳回
|
||||
quot.setQuotQuotationDate(DateUtils.getNowDate());//报价单-报价日期设置为 当前日期
|
||||
quot.setQuotCheckUserName(getUsername());
|
||||
quotService.updateQuot(quot);
|
||||
return success(quot);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出产品明细模板
|
||||
* @param response
|
||||
|
@ -393,7 +424,7 @@ public class QuotController extends BaseController
|
|||
}
|
||||
//quot.setQuotSalesmanCode(getUsername());
|
||||
quotService.insertQuot(quot);
|
||||
sendNoticeToBjz(quot);
|
||||
//sendNoticeToBjz(quot);
|
||||
return success();
|
||||
}else{
|
||||
if(hjRoleFlag){
|
||||
|
@ -402,7 +433,7 @@ public class QuotController extends BaseController
|
|||
quot.setUpdateBy(getUsername());
|
||||
}
|
||||
quotService.updateQuot(quot);
|
||||
sendNoticeToBjz(quot);
|
||||
//sendNoticeToBjz(quot);
|
||||
return success();
|
||||
}
|
||||
}
|
||||
|
@ -478,7 +509,7 @@ public class QuotController extends BaseController
|
|||
quot.setQuotJsxzApprovalStatus("1");//报价单-技术确认单 状态设置为 协助中
|
||||
quotService.updateQuot(quot);
|
||||
|
||||
sendNoticeToJsxz(quotJsqr);
|
||||
//sendNoticeToJsxz(quotJsqr);
|
||||
}
|
||||
return success();
|
||||
}
|
||||
|
@ -522,7 +553,7 @@ public class QuotController extends BaseController
|
|||
quot.setUpdateBy(getUsername());
|
||||
quotService.updateQuot(quot);
|
||||
|
||||
sendNoticeToHjxz(quotHj);
|
||||
//sendNoticeToHjxz(quotHj);
|
||||
return success();
|
||||
}
|
||||
|
||||
|
@ -738,6 +769,24 @@ public class QuotController extends BaseController
|
|||
return error("OA审批流程还未完成");
|
||||
}
|
||||
|
||||
//下点超5.2 提醒
|
||||
BigDecimal tpxd = BigDecimal.ZERO;
|
||||
List<QuotMaterial> materials = quot.getQuotMaterialList();
|
||||
if(materials!=null&&materials.size()>0){
|
||||
for(QuotMaterial quotMaterial:materials){
|
||||
BigDecimal matQuotTp = quotMaterial.getMatQuotTp();
|
||||
if(BigDecimal.ZERO.compareTo(matQuotTp)<0){
|
||||
tpxd = matQuotTp;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
String matQuotTp = configService.selectConfigByKey("quot.allow.matQuotTp");
|
||||
if(tpxd.compareTo(new BigDecimal(matQuotTp))>0 && "0".equals(quot_oa_approval_status)){
|
||||
return error("特批下点数超"+matQuotTp+"个点,请走OA审批流程");
|
||||
}
|
||||
|
||||
quot.setQuotQuotationDate(DateUtils.getNowDate());//报价单-报价日期设置为 当前日期
|
||||
quot.setQuotApprovalStatus("2");
|
||||
quot.setQuotCheckUserName(getUsername());
|
||||
|
@ -782,4 +831,15 @@ public class QuotController extends BaseController
|
|||
quotService.updateQuot(quot);
|
||||
return success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 统计有效报价单模块-获取报价单数据
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('quot:quot:listStatisticsQuotQuot')")
|
||||
@GetMapping("/listStatisticsQuotQuot")
|
||||
public TableDataInfo listStatisticsQuotQuot(Quot quot)
|
||||
{
|
||||
List<Quot> list = quotService.selectStatisticsQuotList(quot);
|
||||
return getDataTable(list);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,11 +12,15 @@ import com.ruoyi.common.enums.BusinessType;
|
|||
import com.ruoyi.common.enums.DataSourceType;
|
||||
import com.ruoyi.common.utils.DateUtils;
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
import com.ruoyi.common.utils.file.FileUploadUtils;
|
||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||
import com.ruoyi.common.utils.uuid.UUID;
|
||||
import com.ruoyi.customer.domain.Customer;
|
||||
import com.ruoyi.quot.domain.Quot;
|
||||
import com.ruoyi.quot.domain.QuotFile;
|
||||
import com.ruoyi.quot.domain.QuotMaterial;
|
||||
import com.ruoyi.quot.service.IQuotFileService;
|
||||
import com.ruoyi.quot.service.IQuotService;
|
||||
import com.ruoyi.redBook.domain.*;
|
||||
import com.ruoyi.redBook.service.IRedBookService;
|
||||
import com.ruoyi.redBook.service.impl.AsyncRbTaskService;
|
||||
|
@ -55,6 +59,13 @@ public class RedBookController extends BaseController
|
|||
@Resource
|
||||
private AsyncRbTaskService asyncRbTaskService;
|
||||
|
||||
@Resource
|
||||
private IQuotService iQuotService;
|
||||
|
||||
@Autowired
|
||||
private IQuotFileService quotFileService;
|
||||
|
||||
|
||||
/**
|
||||
* 获取目录
|
||||
* @param product
|
||||
|
@ -240,6 +251,61 @@ public class RedBookController extends BaseController
|
|||
}
|
||||
return success(quot);
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成询价单
|
||||
* @param quot
|
||||
* @return
|
||||
*/
|
||||
@DataSource(DataSourceType.MASTER)
|
||||
@Log(title = "生成询价单", businessType = BusinessType.INSERT)
|
||||
@PostMapping("/madeXjQuot")
|
||||
public void madeXjQuot(HttpServletResponse response, @RequestBody OAQuot quot)
|
||||
{
|
||||
|
||||
Quot xjquot = new Quot();
|
||||
xjquot.setQuotId(UUID.fastUUID().toString());
|
||||
String quotCode = redBookService.getCode("BJD");
|
||||
xjquot.setQuotCode(quotCode);
|
||||
xjquot.setQuotApprovalStatus("0");
|
||||
xjquot.setQuotSalesmanCode(getUsername());
|
||||
xjquot.setQuotSalesmanBm(getLoginUser().getUser().getSapUserBm());
|
||||
xjquot.setQuotSalesmanName(getLoginUser().getUser().getNickName());
|
||||
xjquot.setQuotSalesmanDeptId(getLoginUser().getUser().getDept().getDeptId()+"");
|
||||
xjquot.setQuotSalesmanDeptName(getLoginUser().getUser().getDept().getDeptName());
|
||||
xjquot.setCreateBy(getUsername());
|
||||
iQuotService.insertQuot(xjquot);
|
||||
|
||||
/** 上传清单附件 **/
|
||||
/* String relation_id = xjquot.getQuotId();
|
||||
if(!StringUtils.isEmpty(relation_id)){
|
||||
if (!file.isEmpty())
|
||||
{
|
||||
QuotFile quotFile= new QuotFile();
|
||||
quotFile.setFileId(UUID.fastUUID().toString());
|
||||
|
||||
String url = FileUploadUtils.uploadMinio(file,"quot-manage", "quot/"+relation_id);
|
||||
int index = url.lastIndexOf("/")+1;
|
||||
String fileName = url.substring(index);//获取文件名
|
||||
|
||||
int index2 = url.indexOf("/quot/");
|
||||
String fileBucketName = url.substring(index2);//获取文件对应文件服务器中地址-供后面删除功能用
|
||||
|
||||
quotFile.setFileName(fileName);
|
||||
quotFile.setFileBucketName(fileBucketName);
|
||||
quotFile.setFileUrl(url);
|
||||
quotFile.setFileSize(file.getSize());
|
||||
quotFile.setFileTime(DateUtils.getTime());
|
||||
quotFile.setFileType("quotXjFile");
|
||||
quotFile.setRelationId(relation_id);
|
||||
quotFileService.insertQuotFile(quotFile);
|
||||
}
|
||||
}else{
|
||||
return error("系统异常,询价单号为空!");
|
||||
}*/
|
||||
/** 上传清单附件 **/
|
||||
// return success(xjquot);
|
||||
}
|
||||
/**
|
||||
* 报价单提交
|
||||
* @param quot
|
||||
|
@ -275,7 +341,7 @@ public class RedBookController extends BaseController
|
|||
}
|
||||
|
||||
/**
|
||||
* 导出产品明细模板
|
||||
* 导出产品明细模板-型号、规格、电压、数量
|
||||
* @param response
|
||||
*/
|
||||
@PostMapping("/importTemplate")
|
||||
|
@ -286,7 +352,7 @@ public class RedBookController extends BaseController
|
|||
}
|
||||
|
||||
/**
|
||||
* 导入产品明细
|
||||
* 导入产品明细-型号、规格、电压、数量
|
||||
* @param file
|
||||
* @param updateSupport
|
||||
* @return
|
||||
|
@ -332,7 +398,9 @@ public class RedBookController extends BaseController
|
|||
}
|
||||
|
||||
System.out.println("开始时间:" + DateUtils.getTime());
|
||||
List<List<OAQuotProductTemplate>> list = ListSplitUtil.averageList(tempList,10);
|
||||
//List<List<OAQuotProductTemplate>> list = ListSplitUtil.averageList(tempList,10);
|
||||
List<List<OAQuotProductTemplate>> list = ListSplitUtil.partList(tempList,20);
|
||||
|
||||
List<OAQuotProduct> OAQuotProducts = new ArrayList<>();
|
||||
|
||||
//定义一个存所有线程回调函数的list
|
||||
|
@ -363,6 +431,85 @@ public class RedBookController extends BaseController
|
|||
return success(OAQuotProducts);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出产品明细模板-品名型号
|
||||
* @param response
|
||||
*/
|
||||
@PostMapping("/importTemplate2")
|
||||
public void importTemplate2(HttpServletResponse response)
|
||||
{
|
||||
ExcelUtil<OAQuotProductTemplate2> util = new ExcelUtil<OAQuotProductTemplate2>(OAQuotProductTemplate2.class);
|
||||
util.importTemplateExcel(response, "产品数据");
|
||||
}
|
||||
|
||||
/**
|
||||
* 导入产品明细-品名型号
|
||||
* @param file
|
||||
* @param updateSupport
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
@PostMapping("/importData2")
|
||||
public AjaxResult importData2(String rbUid, MultipartFile file, boolean updateSupport) throws Exception
|
||||
{
|
||||
ExcelUtil<OAQuotProductTemplate2> util = new ExcelUtil<OAQuotProductTemplate2>(OAQuotProductTemplate2.class);
|
||||
List<OAQuotProductTemplate2> tempList = util.importExcel(file.getInputStream());
|
||||
|
||||
if(tempList.size()==0){
|
||||
return error("导入文件无产品明细数据");
|
||||
}else if(tempList.size()>200){
|
||||
return error("最多导入200条");
|
||||
}
|
||||
|
||||
int index = 1;
|
||||
for(OAQuotProductTemplate2 temp:tempList){
|
||||
temp.setIndex(index);
|
||||
temp.setRbUid(rbUid);
|
||||
|
||||
String name_0 = temp.getName_0();
|
||||
if(StringUtils.isNotBlank(name_0)){
|
||||
name_0 = name_0.trim();
|
||||
name_0 = name_0.replace(" "," ");
|
||||
name_0 = name_0.toUpperCase();
|
||||
temp.setName_0(name_0);
|
||||
}
|
||||
index++;
|
||||
}
|
||||
|
||||
System.out.println("开始时间:" + DateUtils.getTime());
|
||||
//List<List<OAQuotProductTemplate>> list = ListSplitUtil.averageList(tempList,10);
|
||||
List<List<OAQuotProductTemplate2>> list = ListSplitUtil.partList(tempList,20);
|
||||
|
||||
List<OAQuotProduct> OAQuotProducts = new ArrayList<>();
|
||||
|
||||
//定义一个存所有线程回调函数的list
|
||||
List<Future<List<OAQuotProduct>>> futureList=new ArrayList<>();
|
||||
int num = 1;
|
||||
for(List<OAQuotProductTemplate2> lt:list){
|
||||
futureList.add(asyncRbTaskService.executeAsyncTask3("线程"+num+"【"+lt.size()+"条】",lt));
|
||||
num++;
|
||||
}
|
||||
//判断进程是否全部结束**
|
||||
while (true){
|
||||
//回调信息空了就结束**
|
||||
if (futureList.isEmpty()){
|
||||
break;
|
||||
}
|
||||
for (int i = 0; i < futureList.size(); i++) {
|
||||
if (futureList.get(i).isDone()){
|
||||
OAQuotProducts.addAll(futureList.get(i).get());
|
||||
//判断线程结束,输出回调信息,并将该回调清除
|
||||
futureList.remove(i);
|
||||
}else {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
System.out.println("结束时间:" + DateUtils.getTime());
|
||||
Collections.sort(OAQuotProducts);
|
||||
return success(OAQuotProducts);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取调价日期
|
||||
* @param oAQuot
|
||||
|
|
|
@ -395,7 +395,7 @@ public class QuotJsqrController extends BaseController
|
|||
}
|
||||
quot.setQuotJsxzApprovalStatus("2");//报价单-技术协助状态 设置为 已协助
|
||||
|
||||
sendNoticeToQuot(quotJsqr);// 发送给提醒
|
||||
//sendNoticeToQuot(quotJsqr);// 发送给提醒
|
||||
}
|
||||
return success(quotService.updateQuot(quot));
|
||||
}
|
||||
|
|
|
@ -359,8 +359,8 @@ public class excelUtil {
|
|||
response.setContentType("application/vnd.ms-excel");
|
||||
BigDecimal totalmoney = BigDecimal.ZERO;
|
||||
|
||||
File jnlogo_file = new File("logon/"+quot.getQuotCode()+".png");
|
||||
File wc_file = new File("logon/"+quot.getQuotCode()+".png");
|
||||
File jnlogo_file = new File("logon/"+IdUtils.createNo("jnlogo_",3)+".png");
|
||||
File wc_file = new File("logon/"+IdUtils.createNo("wc_",3)+".png");
|
||||
try {
|
||||
OutputStream os = response.getOutputStream();
|
||||
WritableWorkbook wwb = Workbook.createWorkbook(os);
|
||||
|
|
|
@ -31,7 +31,7 @@ server:
|
|||
uri-encoding: UTF-8
|
||||
# 连接数满后的排队数,默认为100
|
||||
accept-count: 1000
|
||||
connection-timeout: 120s
|
||||
connection-timeout: 600s
|
||||
threads:
|
||||
# tomcat最大线程数,默认为200
|
||||
max: 800
|
||||
|
@ -110,7 +110,7 @@ token:
|
|||
# 令牌密钥
|
||||
secret: abcdefghijklmnopqrstuvwxyz
|
||||
# 令牌有效期(默认30分钟)
|
||||
expireTime: 30
|
||||
expireTime: 60
|
||||
|
||||
# MyBatis配置
|
||||
mybatis:
|
||||
|
|
|
@ -217,8 +217,8 @@ public class HttpUtils
|
|||
conn.setRequestProperty("connection", "Keep-Alive");
|
||||
conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
|
||||
conn.setRequestProperty("Accept-Charset", "utf-8");
|
||||
conn.setRequestProperty("contentType", "application/json");
|
||||
conn.setRequestProperty("Content-Type", "application/json");
|
||||
conn.setRequestProperty("contentType", "application/json; charset=utf-8");
|
||||
conn.setRequestProperty("Content-Type", "application/json; charset=utf-8");
|
||||
// 设置Cookie头部
|
||||
if(StringUtils.isNotEmpty(cookie)){
|
||||
String cookies[] = cookie.split("; ");
|
||||
|
|
|
@ -28,7 +28,7 @@ public class WebSocketServer
|
|||
/**
|
||||
* 默认最多允许同时在线人数100
|
||||
*/
|
||||
public static int socketMaxOnlineCount = 100;
|
||||
public static int socketMaxOnlineCount = 10000;
|
||||
|
||||
private static final Semaphore SOCKET_SEMAPHORE = new Semaphore(socketMaxOnlineCount);
|
||||
|
||||
|
|
|
@ -96,8 +96,10 @@ public class Quot extends BaseEntity
|
|||
|
||||
/** 是否打印 */
|
||||
private String quotPrint;
|
||||
/** 打印人 */
|
||||
/** 打印人账号 */
|
||||
private String quotPrintUserName;
|
||||
/** 打印人 */
|
||||
private String quotPrintUserNickName;
|
||||
|
||||
/** 总价 */
|
||||
private String quotTotalPrice;
|
||||
|
@ -309,6 +311,9 @@ public class Quot extends BaseEntity
|
|||
public String getQuotPrintUserName() { return quotPrintUserName; }
|
||||
|
||||
public void setQuotPrintUserName(String quotPrintUserName) { this.quotPrintUserName = quotPrintUserName; }
|
||||
public String getQuotPrintUserNickName() { return quotPrintUserNickName; }
|
||||
|
||||
public void setQuotPrintUserNickName(String quotPrintUserNickName) { this.quotPrintUserNickName = quotPrintUserNickName; }
|
||||
public void setQuotQuantity(String quotQuantity)
|
||||
{
|
||||
this.quotQuantity = quotQuantity;
|
||||
|
|
|
@ -147,4 +147,12 @@ public interface QuotMapper
|
|||
* @return
|
||||
*/
|
||||
String getCode(String type);
|
||||
|
||||
|
||||
/**
|
||||
* 统计有效报价单模块-获取报价单数据
|
||||
* @param quot
|
||||
* @return
|
||||
*/
|
||||
List<Quot> selectStatisticsQuotList(Quot quot);
|
||||
}
|
||||
|
|
|
@ -124,4 +124,18 @@ public interface IQuotService
|
|||
* @return
|
||||
*/
|
||||
String getCode(String type);
|
||||
|
||||
/**
|
||||
* 报价单-手动更新状态为通过
|
||||
* @param quot
|
||||
*/
|
||||
void updateQuotAllPassInfo(Quot quot);
|
||||
|
||||
|
||||
/**
|
||||
* 统计有效报价单模块-获取报价单数据
|
||||
* @param quot
|
||||
* @return
|
||||
*/
|
||||
List<Quot> selectStatisticsQuotList(Quot quot);
|
||||
}
|
||||
|
|
|
@ -269,4 +269,24 @@ public class QuotServiceImpl implements IQuotService
|
|||
public String getCode(String type) {
|
||||
return quotMapper.getCode(type);
|
||||
}
|
||||
|
||||
/**
|
||||
* 报价单-手动更新状态为通过
|
||||
* @param quot
|
||||
*/
|
||||
@Override
|
||||
public void updateQuotAllPassInfo(Quot quot) {
|
||||
quotMapper.updateQuot(quot);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 统计有效报价单模块-获取报价单数据
|
||||
* @param quot
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<Quot> selectStatisticsQuotList(Quot quot) {
|
||||
return quotMapper.selectStatisticsQuotList(quot);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,41 @@
|
|||
package com.ruoyi.redBook.domain;
|
||||
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
public class OAQuotProductTemplate2 {
|
||||
private Integer index;
|
||||
|
||||
private String rbUid;
|
||||
|
||||
@Excel(name = "品名型号")
|
||||
private String name_0;//品名型号
|
||||
|
||||
@Excel(name = "数量")
|
||||
private BigDecimal count;//数量
|
||||
|
||||
public Integer getIndex() { return index; }
|
||||
|
||||
public void setIndex(Integer index) { this.index = index; }
|
||||
|
||||
public String getRbUid() { return rbUid; }
|
||||
|
||||
public void setRbUid(String rbUid) { this.rbUid = rbUid; }
|
||||
|
||||
public String getName_0() {
|
||||
return name_0;
|
||||
}
|
||||
|
||||
public void setName_0(String name_0) {
|
||||
this.name_0 = name_0;
|
||||
}
|
||||
|
||||
public BigDecimal getCount() {
|
||||
return count;
|
||||
}
|
||||
|
||||
public void setCount(BigDecimal count) {
|
||||
this.count = count;
|
||||
}
|
||||
}
|
|
@ -117,14 +117,22 @@ public interface OARedBookMapper
|
|||
String getFixDatePrice(@Param("name_0") String name_0,@Param("spec") String spec,@Param("voltage") String voltage, @Param("uid_0") String uid_0);
|
||||
|
||||
/**
|
||||
* 导入明细批量获取红本价格
|
||||
* @param name_0
|
||||
* 导入明细批量获取红本价格-型号、规格、电压、数量
|
||||
* @param name_1
|
||||
* @param spec
|
||||
* @param rbUid
|
||||
* @return
|
||||
*/
|
||||
OAQuotProduct getFixDatePrice2(@Param("name_1") String name_1, @Param("spec") String spec, @Param("voltage") String voltage, @Param("uid_0") String rbUid);
|
||||
|
||||
/**
|
||||
* 导入明细批量获取红本价格-品名型号
|
||||
* @param name_0
|
||||
* @param rbUid
|
||||
* @return
|
||||
*/
|
||||
OAQuotProduct getFixDatePrice3(@Param("name_0") String name_0, @Param("uid_0") String rbUid);
|
||||
|
||||
/**
|
||||
* 查询已生成的报价单列表
|
||||
* @param oaQuot
|
||||
|
|
|
@ -141,12 +141,20 @@ public interface IRedBookService
|
|||
List<OAQuotProduct> setRedBookPrice(List<OAQuotProduct> list);
|
||||
|
||||
/**
|
||||
* 导入明细批量获取红本价格
|
||||
* 导入明细批量获取红本价格-型号、规格、电压、数量
|
||||
* @param list
|
||||
* @return
|
||||
*/
|
||||
List<OAQuotProduct> setRedBookPrice2(List<OAQuotProductTemplate> list);
|
||||
|
||||
/**
|
||||
* 导入明细批量获取红本价格-品名型号
|
||||
* @param list
|
||||
* @return
|
||||
*/
|
||||
List<OAQuotProduct> setRedBookPrice3(List<OAQuotProductTemplate2> list);
|
||||
|
||||
|
||||
/**
|
||||
* 获取单据编号
|
||||
* @param type
|
||||
|
|
|
@ -3,6 +3,7 @@ package com.ruoyi.redBook.service.impl;
|
|||
import com.ruoyi.common.utils.DateUtils;
|
||||
import com.ruoyi.redBook.domain.OAQuotProduct;
|
||||
import com.ruoyi.redBook.domain.OAQuotProductTemplate;
|
||||
import com.ruoyi.redBook.domain.OAQuotProductTemplate2;
|
||||
import com.ruoyi.redBook.service.IRedBookService;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.scheduling.annotation.AsyncResult;
|
||||
|
@ -32,7 +33,7 @@ public class AsyncRbTaskService {
|
|||
}
|
||||
|
||||
/**
|
||||
* 导入明细批量获取红本价格
|
||||
* 导入明细批量获取红本价格-型号、规格、电压、数量
|
||||
* @param threadname
|
||||
* @param list
|
||||
* @return
|
||||
|
@ -44,5 +45,19 @@ public class AsyncRbTaskService {
|
|||
System.out.println(threadname+"结束时间:" + DateUtils.getTime());
|
||||
return new AsyncResult<>( OAQuotProducts);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导入明细批量获取红本价格-品名型号
|
||||
* @param threadname
|
||||
* @param list
|
||||
* @return
|
||||
*/
|
||||
@Async
|
||||
public Future<List<OAQuotProduct>> executeAsyncTask3(String threadname, List<OAQuotProductTemplate2> list) {
|
||||
System.out.println(threadname+"开始时间:" + DateUtils.getTime());
|
||||
List<OAQuotProduct> OAQuotProducts = iRedBookService.setRedBookPrice3(list);
|
||||
System.out.println(threadname+"结束时间:" + DateUtils.getTime());
|
||||
return new AsyncResult<>( OAQuotProducts);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -208,12 +208,17 @@ public class RedBookServiceImpl implements IRedBookService
|
|||
for(OAQuotProduct oAQuotProduct : list){
|
||||
String price = oaRedBookMapper.getFixDatePrice(oAQuotProduct.getName_0(),oAQuotProduct.getSpec(),oAQuotProduct.getVoltage(),oAQuotProduct.getUid_0());
|
||||
oAQuotProduct.setPrice(price);
|
||||
if(StringUtils.isEmpty(price)){
|
||||
oAQuotProduct.setName_1("");
|
||||
oAQuotProduct.setVoltage("");
|
||||
oAQuotProduct.setStu("");
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
* 导入明细批量获取红本价格
|
||||
* 导入明细批量获取红本价格-型号、规格、电压、数量
|
||||
* @param list
|
||||
* @return
|
||||
*/
|
||||
|
@ -224,19 +229,44 @@ public class RedBookServiceImpl implements IRedBookService
|
|||
OAQuotProduct oAQuotProduct = new OAQuotProduct();
|
||||
for(OAQuotProductTemplate oAQuotProductTemplate : list){
|
||||
OAQuotProduct rbProduct = oaRedBookMapper.getFixDatePrice2(oAQuotProductTemplate.getName_1(),oAQuotProductTemplate.getSpec(),oAQuotProductTemplate.getVoltage(),oAQuotProductTemplate.getRbUid());
|
||||
if(rbProduct!=null){
|
||||
oAQuotProduct = new OAQuotProduct();
|
||||
oAQuotProduct.setIndex(oAQuotProductTemplate.getIndex());
|
||||
oAQuotProduct.setUid_0(rbProduct.getUid_0());
|
||||
oAQuotProduct.setName_0(rbProduct.getName_0());
|
||||
oAQuotProduct.setUid_0(oAQuotProductTemplate.getRbUid());
|
||||
oAQuotProduct.setName_0(rbProduct!=null?rbProduct.getName_0():"");
|
||||
oAQuotProduct.setName_1(oAQuotProductTemplate.getName_1());
|
||||
oAQuotProduct.setSpec(oAQuotProductTemplate.getSpec());
|
||||
oAQuotProduct.setVoltage(rbProduct.getVoltage());
|
||||
oAQuotProduct.setStu(rbProduct.getStu());
|
||||
oAQuotProduct.setPrice(rbProduct.getPrice());
|
||||
oAQuotProduct.setVoltage(rbProduct!=null?rbProduct.getVoltage():"");
|
||||
oAQuotProduct.setStu(rbProduct!=null?rbProduct.getStu():"");
|
||||
oAQuotProduct.setPrice(rbProduct!=null?rbProduct.getPrice():"");
|
||||
oAQuotProduct.setCount(oAQuotProductTemplate.getCount());
|
||||
OAQuotProducts.add(oAQuotProduct);
|
||||
}
|
||||
return OAQuotProducts;
|
||||
}
|
||||
|
||||
/**
|
||||
* 导入明细批量获取红本价格-品名型号
|
||||
* @param list
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
@DataSource(DataSourceType.OAREDBOOK)
|
||||
public List<OAQuotProduct> setRedBookPrice3(List<OAQuotProductTemplate2> list) {
|
||||
List<OAQuotProduct> OAQuotProducts = new ArrayList<>();
|
||||
OAQuotProduct oAQuotProduct = new OAQuotProduct();
|
||||
for(OAQuotProductTemplate2 oAQuotProductTemplate : list){
|
||||
OAQuotProduct rbProduct = oaRedBookMapper.getFixDatePrice3(oAQuotProductTemplate.getName_0(),oAQuotProductTemplate.getRbUid());
|
||||
oAQuotProduct = new OAQuotProduct();
|
||||
oAQuotProduct.setIndex(oAQuotProductTemplate.getIndex());
|
||||
oAQuotProduct.setUid_0(oAQuotProductTemplate.getRbUid());
|
||||
oAQuotProduct.setName_0(oAQuotProductTemplate.getName_0());
|
||||
oAQuotProduct.setName_1(rbProduct!=null?rbProduct.getName_1():"");
|
||||
oAQuotProduct.setSpec(rbProduct!=null?rbProduct.getSpec():"");
|
||||
oAQuotProduct.setVoltage(rbProduct!=null?rbProduct.getVoltage():"品名不规范");
|
||||
oAQuotProduct.setStu(rbProduct!=null?rbProduct.getStu():"");
|
||||
oAQuotProduct.setPrice(rbProduct!=null?rbProduct.getPrice():"");
|
||||
oAQuotProduct.setCount(oAQuotProductTemplate.getCount());
|
||||
OAQuotProducts.add(oAQuotProduct);
|
||||
}
|
||||
return OAQuotProducts;
|
||||
}
|
||||
|
|
|
@ -35,6 +35,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<result property="quotMatpriceDiff" column="quot_matprice_diff" />
|
||||
<result property="quotPrint" column="quot_print" />
|
||||
<result property="quotPrintUserName" column="quot_print_user_name" />
|
||||
<result property="quotPrintUserNickName" column="quot_print_user_nickName" />
|
||||
|
||||
<result property="createBy" column="create_by" />
|
||||
<result property="createName" column="create_name" />
|
||||
<result property="createTime" column="create_time" />
|
||||
|
@ -111,7 +113,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
a.quot_phone, a.quot_inquiry_date, a.quot_project, a.quot_quotation_date, a.quot_quotation_from,
|
||||
a.quot_quotation_require, a.quot_feedback_explanation, a.quot_quantity, a.quot_total_price,
|
||||
a.quot_check_user_name, u2.nick_name quot_check_user_nickname, a.quot_approval_status,a.quot_materials_count,
|
||||
a.quot_lv_price,a.quot_tong_price,a.quot_matprice_diff,a.quot_print,u3.nick_name quot_print_user_name,
|
||||
a.quot_lv_price,a.quot_tong_price,a.quot_matprice_diff,a.quot_print,a.quot_print_user_name,u3.nick_name quot_print_user_nickName,
|
||||
a.create_by, a.create_time, a.update_by, a.update_time, u.nick_name create_name,
|
||||
|
||||
a.quot_jsxz_standard,a.quot_jsxz_approval_status,a.quot_jsxz_chapter,
|
||||
|
@ -144,7 +146,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<!-- 数据范围过滤 -->
|
||||
${params.dataScope}
|
||||
</where>
|
||||
order by a.quot_code desc
|
||||
order by a.quot_inquiry_date desc
|
||||
</select>
|
||||
|
||||
<select id="selectQuotListCount" resultType="String">
|
||||
|
@ -156,7 +158,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
a.quot_salesman_dept_id, a.quot_salesman_dept_name, a.quot_address, a.quot_contacts, a.quot_phone, a.quot_inquiry_date,
|
||||
a.quot_project, a.quot_quotation_date, a.quot_quotation_from, a.quot_quotation_require, a.quot_feedback_explanation,
|
||||
a.quot_quantity, a.quot_total_price, a.quot_check_user_name, u2.nick_name quot_check_user_nickname, a.quot_approval_status,
|
||||
a.quot_materials_count,a.quot_lv_price,a.quot_tong_price,a.quot_matprice_diff,a.quot_print,u3.nick_name quot_print_user_name,
|
||||
a.quot_materials_count,a.quot_lv_price,a.quot_tong_price,a.quot_matprice_diff,a.quot_print,a.quot_print_user_name,u3.nick_name quot_print_user_nickName,
|
||||
a.create_by, a.create_time, a.update_by, a.update_time,
|
||||
|
||||
a.quot_jsxz_standard,a.quot_jsxz_approval_status,a.quot_jsxz_chapter,
|
||||
|
@ -217,44 +219,44 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="quotSalesmanName != null and quotSalesmanName != ''">quot_salesman_name,</if>
|
||||
<if test="quotCustomerBm != null and quotCustomerBm != ''">quot_customer_bm,</if>
|
||||
<if test="quotCustomerName != null and quotCustomerName != ''">quot_customer_name,</if>
|
||||
<if test="quotSalesmanDeptId != null">quot_salesman_dept_id,</if>
|
||||
<if test="quotSalesmanDeptName != null">quot_salesman_dept_name,</if>
|
||||
<if test="quotAddress != null">quot_address,</if>
|
||||
<if test="quotContacts != null">quot_contacts,</if>
|
||||
<if test="quotPhone != null">quot_phone,</if>
|
||||
<if test="quotSalesmanDeptId != null and quotSalesmanDeptId != ''">quot_salesman_dept_id,</if>
|
||||
<if test="quotSalesmanDeptName != null and quotSalesmanDeptName != ''">quot_salesman_dept_name,</if>
|
||||
<if test="quotAddress != null and quotAddress != ''">quot_address,</if>
|
||||
<if test="quotContacts != null and quotContacts != ''">quot_contacts,</if>
|
||||
<if test="quotPhone != null and quotPhone != ''">quot_phone,</if>
|
||||
<if test="quotInquiryDate != null">quot_inquiry_date,</if>
|
||||
<if test="quotProject != null and quotProject != ''">quot_project,</if>
|
||||
<if test="quotQuotationDate != null">quot_quotation_date,</if>
|
||||
<if test="quotQuotationFrom != null">quot_quotation_from,</if>
|
||||
<if test="quotQuotationFrom != null and quotQuotationFrom != ''">quot_quotation_from,</if>
|
||||
<if test="quotQuotationRequire != null and quotQuotationRequire != ''">quot_quotation_require,</if>
|
||||
<if test="quotFeedbackExplanation != null">quot_feedback_explanation,</if>
|
||||
<if test="quotQuantity != null">quot_quantity,</if>
|
||||
<if test="quotTotalPrice != null">quot_total_price,</if>
|
||||
<if test="quotCheckUserName != null">quot_check_user_name,</if>
|
||||
<if test="quotApprovalStatus != null">quot_approval_status,</if>
|
||||
<if test="quotMaterialsCount != null">quot_materials_count,</if>
|
||||
<if test="quotLvPrice != null">quot_lv_price,</if>
|
||||
<if test="quotTongPrice != null">quot_tong_price,</if>
|
||||
<if test="quotMatpriceDiff != null">quot_matprice_diff,</if>
|
||||
<if test="quotPrint != null">quot_print,</if>
|
||||
<if test="quotPrintUserName != null">quot_print_user_name,</if>
|
||||
<if test="createBy != null">create_by,</if>
|
||||
<if test="quotFeedbackExplanation != null and quotFeedbackExplanation != ''">quot_feedback_explanation,</if>
|
||||
<if test="quotQuantity != null and quotQuantity != ''">quot_quantity,</if>
|
||||
<if test="quotTotalPrice != null and quotTotalPrice != ''">quot_total_price,</if>
|
||||
<if test="quotCheckUserName != null and quotCheckUserName != ''">quot_check_user_name,</if>
|
||||
<if test="quotApprovalStatus != null and quotApprovalStatus != ''">quot_approval_status,</if>
|
||||
<if test="quotMaterialsCount != null and quotMaterialsCount != ''">quot_materials_count,</if>
|
||||
<if test="quotLvPrice != null and quotLvPrice != ''">quot_lv_price,</if>
|
||||
<if test="quotTongPrice != null and quotTongPrice != ''">quot_tong_price,</if>
|
||||
<if test="quotMatpriceDiff != null and quotMatpriceDiff != ''">quot_matprice_diff,</if>
|
||||
<if test="quotPrint != null and quotPrint != ''">quot_print,</if>
|
||||
<if test="quotPrintUserName != null and quotPrintUserName != ''">quot_print_user_name,</if>
|
||||
<if test="createBy != null and createBy != ''">create_by,</if>
|
||||
<if test="createTime != null">create_time,</if>
|
||||
<if test="updateBy != null">update_by,</if>
|
||||
<if test="updateBy != null and updateBy != ''">update_by,</if>
|
||||
<if test="updateTime != null">update_time,</if>
|
||||
|
||||
<if test="quotJsxzStandard != null">quot_jsxz_standard,</if>
|
||||
<if test="quotJsxzApprovalStatus != null">quot_jsxz_approval_status,</if>
|
||||
<if test="quotJsxzChapter != null">quot_jsxz_chapter,</if>
|
||||
<if test="quotJsxzTechnicalRequirement != null">quot_jsxz_technical_requirement,</if>
|
||||
<if test="quotJsxzGroupValues != null">quot_jsxz_group_values,</if>
|
||||
<if test="quotJsxzConfirmId != null">quot_jsxz_confirm_id,</if>
|
||||
<if test="quotJsxzStandard != null and quotJsxzStandard != ''">quot_jsxz_standard,</if>
|
||||
<if test="quotJsxzApprovalStatus != null and quotJsxzApprovalStatus != ''">quot_jsxz_approval_status,</if>
|
||||
<if test="quotJsxzChapter != null and quotJsxzChapter != ''">quot_jsxz_chapter,</if>
|
||||
<if test="quotJsxzTechnicalRequirement != null and quotJsxzTechnicalRequirement != ''">quot_jsxz_technical_requirement,</if>
|
||||
<if test="quotJsxzGroupValues != null and quotJsxzGroupValues != ''">quot_jsxz_group_values,</if>
|
||||
<if test="quotJsxzConfirmId != null and quotJsxzConfirmId != ''">quot_jsxz_confirm_id,</if>
|
||||
|
||||
<if test="quotHjId != null">quot_hj_id,</if>
|
||||
<if test="quotHjApprovalStatus != null">quot_hj_approval_status,</if>
|
||||
<if test="quotHjId != null and quotHjId != ''">quot_hj_id,</if>
|
||||
<if test="quotHjApprovalStatus != null and quotHjApprovalStatus != ''">quot_hj_approval_status,</if>
|
||||
|
||||
<if test="quotJswApprovalStatus != null">quot_jsw_approval_status,</if>
|
||||
<if test="quotOAApprovalStatus != null">quot_oa_approval_status,</if>
|
||||
<if test="quotJswApprovalStatus != null and quotJswApprovalStatus != ''">quot_jsw_approval_status,</if>
|
||||
<if test="quotOAApprovalStatus != null and quotOAApprovalStatus != ''">quot_oa_approval_status,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="quotId != null and quotId != ''">#{quotId},</if>
|
||||
|
@ -265,44 +267,44 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="quotSalesmanName != null and quotSalesmanName != ''">#{quotSalesmanName},</if>
|
||||
<if test="quotCustomerBm != null and quotCustomerBm != ''">#{quotCustomerBm},</if>
|
||||
<if test="quotCustomerName != null and quotCustomerName != ''">#{quotCustomerName},</if>
|
||||
<if test="quotSalesmanDeptId != null">#{quotSalesmanDeptId},</if>
|
||||
<if test="quotSalesmanDeptName != null">#{quotSalesmanDeptName},</if>
|
||||
<if test="quotAddress != null">#{quotAddress},</if>
|
||||
<if test="quotContacts != null">#{quotContacts},</if>
|
||||
<if test="quotPhone != null">#{quotPhone},</if>
|
||||
<if test="quotSalesmanDeptId != null and quotSalesmanDeptId != ''">#{quotSalesmanDeptId},</if>
|
||||
<if test="quotSalesmanDeptName != null and quotSalesmanDeptName != ''">#{quotSalesmanDeptName},</if>
|
||||
<if test="quotAddress != null and quotAddress != ''">#{quotAddress},</if>
|
||||
<if test="quotContacts != null and quotContacts != ''">#{quotContacts},</if>
|
||||
<if test="quotPhone != null and quotPhone != ''">#{quotPhone},</if>
|
||||
<if test="quotInquiryDate != null">#{quotInquiryDate},</if>
|
||||
<if test="quotProject != null and quotProject != ''">#{quotProject},</if>
|
||||
<if test="quotQuotationDate != null">#{quotQuotationDate},</if>
|
||||
<if test="quotQuotationFrom != null">#{quotQuotationFrom},</if>
|
||||
<if test="quotQuotationFrom != null and quotQuotationFrom != ''">#{quotQuotationFrom},</if>
|
||||
<if test="quotQuotationRequire != null and quotQuotationRequire != ''">#{quotQuotationRequire},</if>
|
||||
<if test="quotFeedbackExplanation != null">#{quotFeedbackExplanation},</if>
|
||||
<if test="quotQuantity != null">#{quotQuantity},</if>
|
||||
<if test="quotTotalPrice != null">#{quotTotalPrice},</if>
|
||||
<if test="quotCheckUserName != null">#{quotCheckUserName},</if>
|
||||
<if test="quotApprovalStatus != null">#{quotApprovalStatus},</if>
|
||||
<if test="quotMaterialsCount != null">#{quotMaterialsCount},</if>
|
||||
<if test="quotLvPrice != null">#{quotLvPrice},</if>
|
||||
<if test="quotTongPrice != null">#{quotTongPrice},</if>
|
||||
<if test="quotMatpriceDiff != null">#{quotMatpriceDiff},</if>
|
||||
<if test="quotPrint != null">#{quotPrint},</if>
|
||||
<if test="quotPrintUserName != null">#{quotPrintUserName},</if>
|
||||
<if test="createBy != null">#{createBy},</if>
|
||||
<if test="quotFeedbackExplanation != null and quotFeedbackExplanation != ''">#{quotFeedbackExplanation},</if>
|
||||
<if test="quotQuantity != null and quotQuantity != ''">#{quotQuantity},</if>
|
||||
<if test="quotTotalPrice != null and quotTotalPrice != ''">#{quotTotalPrice},</if>
|
||||
<if test="quotCheckUserName != null and quotCheckUserName != ''">#{quotCheckUserName},</if>
|
||||
<if test="quotApprovalStatus != null and quotApprovalStatus != ''">#{quotApprovalStatus},</if>
|
||||
<if test="quotMaterialsCount != null and quotMaterialsCount != ''">#{quotMaterialsCount},</if>
|
||||
<if test="quotLvPrice != null and quotLvPrice != ''">#{quotLvPrice},</if>
|
||||
<if test="quotTongPrice != null and quotTongPrice != ''">#{quotTongPrice},</if>
|
||||
<if test="quotMatpriceDiff != null and quotMatpriceDiff != ''">#{quotMatpriceDiff},</if>
|
||||
<if test="quotPrint != null and quotPrint != ''">#{quotPrint},</if>
|
||||
<if test="quotPrintUserName != null and quotPrintUserName != ''">#{quotPrintUserName},</if>
|
||||
<if test="createBy != null and createBy != ''">#{createBy},</if>
|
||||
<if test="createTime != null">#{createTime},</if>
|
||||
<if test="updateBy != null">#{updateBy},</if>
|
||||
<if test="updateBy != null and updateBy != ''">#{updateBy},</if>
|
||||
<if test="updateTime != null">#{updateTime},</if>
|
||||
|
||||
<if test="quotJsxzStandard != null">#{quotJsxzStandard},</if>
|
||||
<if test="quotJsxzApprovalStatus != null">#{quotJsxzApprovalStatus},</if>
|
||||
<if test="quotJsxzChapter != null">#{quotJsxzChapter},</if>
|
||||
<if test="quotJsxzTechnicalRequirement != null">#{quotJsxzTechnicalRequirement},</if>
|
||||
<if test="quotJsxzGroupValues != null">#{quotJsxzGroupValues},</if>
|
||||
<if test="quotJsxzConfirmId != null">#{quotJsxzConfirmId},</if>
|
||||
<if test="quotJsxzStandard != null and quotJsxzStandard != ''">#{quotJsxzStandard},</if>
|
||||
<if test="quotJsxzApprovalStatus != null and quotJsxzApprovalStatus != ''">#{quotJsxzApprovalStatus},</if>
|
||||
<if test="quotJsxzChapter != null and quotJsxzChapter != ''">#{quotJsxzChapter},</if>
|
||||
<if test="quotJsxzTechnicalRequirement != null and quotJsxzTechnicalRequirement != ''">#{quotJsxzTechnicalRequirement},</if>
|
||||
<if test="quotJsxzGroupValues != null and quotJsxzGroupValues != ''">#{quotJsxzGroupValues},</if>
|
||||
<if test="quotJsxzConfirmId != null and quotJsxzConfirmId != ''">#{quotJsxzConfirmId},</if>
|
||||
|
||||
<if test="quotHjId != null">#{quotHjId},</if>
|
||||
<if test="quotHjApprovalStatus != null">#{quotHjApprovalStatus},</if>
|
||||
<if test="quotHjId != null and quotHjId != ''">#{quotHjId},</if>
|
||||
<if test="quotHjApprovalStatus != null and quotHjApprovalStatus != ''">#{quotHjApprovalStatus},</if>
|
||||
|
||||
<if test="quotJswApprovalStatus != null">#{quotJswApprovalStatus},</if>
|
||||
<if test="quotOAApprovalStatus != null">#{quotOAApprovalStatus},</if>
|
||||
<if test="quotJswApprovalStatus != null and quotJswApprovalStatus != ''">#{quotJswApprovalStatus},</if>
|
||||
<if test="quotOAApprovalStatus != null and quotOAApprovalStatus != ''">#{quotOAApprovalStatus},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
|
@ -320,16 +322,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="quotCode != null and quotCode != ''">quot_code,</if>
|
||||
<if test="quotSalesmanName != null and quotSalesmanName != ''">quot_salesman_name,</if>
|
||||
<if test="quotCustomerName != null and quotCustomerName != ''">quot_customer_name,</if>
|
||||
<if test="quotAddress != null">quot_address,</if>
|
||||
<if test="quotPhone != null">quot_phone,</if>
|
||||
<if test="quotAddress != null and quotAddress != ''">quot_address,</if>
|
||||
<if test="quotPhone != null and quotPhone != ''">quot_phone,</if>
|
||||
<if test="quotInquiryDate != null">quot_inquiry_date,</if>
|
||||
<if test="quotProject != null and quotProject != ''">quot_project,</if>
|
||||
<if test="quotQuotationRequire != null and quotQuotationRequire != ''">quot_quotation_require,</if>
|
||||
<if test="quotLvPrice != null">quot_lv_price,</if>
|
||||
<if test="quotTongPrice != null">quot_tong_price,</if>
|
||||
<if test="quotMatpriceDiff != null">quot_matprice_diff,</if>
|
||||
<if test="quotLvPrice != null and quotLvPrice != ''">quot_lv_price,</if>
|
||||
<if test="quotTongPrice != null and quotTongPrice != ''">quot_tong_price,</if>
|
||||
<if test="quotMatpriceDiff != null and quotMatpriceDiff != ''">quot_matprice_diff,</if>
|
||||
<if test="createTime != null">create_time,</if>
|
||||
<if test="isFinish != null">isFinish,</if>
|
||||
<if test="isFinish != null and isFinish != ''">isFinish,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="userId != null and userId != ''">#{userId},</if>
|
||||
|
@ -339,16 +341,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="quotCode != null and quotCode != ''">#{quotCode},</if>
|
||||
<if test="quotSalesmanName != null and quotSalesmanName != ''">#{quotSalesmanName},</if>
|
||||
<if test="quotCustomerName != null and quotCustomerName != ''">#{quotCustomerName},</if>
|
||||
<if test="quotAddress != null">#{quotAddress},</if>
|
||||
<if test="quotPhone != null">#{quotPhone},</if>
|
||||
<if test="quotAddress != null and quotAddress != ''">#{quotAddress},</if>
|
||||
<if test="quotPhone != null and quotPhone != ''">#{quotPhone},</if>
|
||||
<if test="quotInquiryDate != null">#{quotInquiryDate},</if>
|
||||
<if test="quotProject != null and quotProject != ''">#{quotProject},</if>
|
||||
<if test="quotQuotationRequire != null and quotQuotationRequire != ''">#{quotQuotationRequire},</if>
|
||||
<if test="quotLvPrice != null">#{quotLvPrice},</if>
|
||||
<if test="quotTongPrice != null">#{quotTongPrice},</if>
|
||||
<if test="quotMatpriceDiff != null">#{quotMatpriceDiff},</if>
|
||||
<if test="quotLvPrice != null and quotLvPrice != ''">#{quotLvPrice},</if>
|
||||
<if test="quotTongPrice != null and quotTongPrice != ''">#{quotTongPrice},</if>
|
||||
<if test="quotMatpriceDiff != null and quotMatpriceDiff != ''">#{quotMatpriceDiff},</if>
|
||||
<if test="createTime != null">#{createTime},</if>
|
||||
<if test="isFinish != null">#{isFinish},</if>
|
||||
<if test="isFinish != null and isFinish != ''">#{isFinish},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
|
@ -362,44 +364,44 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="quotSalesmanName != null and quotSalesmanName != ''">quot_salesman_name = #{quotSalesmanName},</if>
|
||||
<if test="quotCustomerBm != null and quotCustomerBm != ''">quot_customer_bm = #{quotCustomerBm},</if>
|
||||
<if test="quotCustomerName != null and quotCustomerName != ''">quot_customer_name = #{quotCustomerName},</if>
|
||||
<if test="quotSalesmanDeptId != null">quot_salesman_dept_id = #{quotSalesmanDeptId},</if>
|
||||
<if test="quotSalesmanDeptName != null">quot_salesman_dept_name = #{quotSalesmanDeptName},</if>
|
||||
<if test="quotAddress != null">quot_address = #{quotAddress},</if>
|
||||
<if test="quotContacts != null">quot_contacts = #{quotContacts},</if>
|
||||
<if test="quotPhone != null">quot_phone = #{quotPhone},</if>
|
||||
<if test="quotSalesmanDeptId != null and quotSalesmanDeptId != ''">quot_salesman_dept_id = #{quotSalesmanDeptId},</if>
|
||||
<if test="quotSalesmanDeptName != null and quotSalesmanDeptName != ''">quot_salesman_dept_name = #{quotSalesmanDeptName},</if>
|
||||
<if test="quotAddress != null and quotAddress != ''">quot_address = #{quotAddress},</if>
|
||||
<if test="quotContacts != null and quotContacts != ''">quot_contacts = #{quotContacts},</if>
|
||||
<if test="quotPhone != null and quotPhone != ''">quot_phone = #{quotPhone},</if>
|
||||
<if test="quotInquiryDate != null">quot_inquiry_date = #{quotInquiryDate},</if>
|
||||
<if test="quotProject != null and quotProject != ''">quot_project = #{quotProject},</if>
|
||||
<if test="quotQuotationDate != null">quot_quotation_date = #{quotQuotationDate},</if>
|
||||
<if test="quotQuotationFrom != null">quot_quotation_from = #{quotQuotationFrom},</if>
|
||||
<if test="quotQuotationFrom != null and quotQuotationFrom != ''">quot_quotation_from = #{quotQuotationFrom},</if>
|
||||
<if test="quotQuotationRequire != null and quotQuotationRequire != ''">quot_quotation_require = #{quotQuotationRequire},</if>
|
||||
<if test="quotFeedbackExplanation != null">quot_feedback_explanation = #{quotFeedbackExplanation},</if>
|
||||
<if test="quotQuantity != null">quot_quantity = #{quotQuantity},</if>
|
||||
<if test="quotTotalPrice != null">quot_total_price = #{quotTotalPrice},</if>
|
||||
<if test="quotCheckUserName != null">quot_check_user_name = #{quotCheckUserName},</if>
|
||||
<if test="quotApprovalStatus != null">quot_approval_status = #{quotApprovalStatus},</if>
|
||||
<if test="quotMaterialsCount != null">quot_materials_count = #{quotMaterialsCount},</if>
|
||||
<if test="quotLvPrice != null">quot_lv_price = #{quotLvPrice},</if>
|
||||
<if test="quotTongPrice != null">quot_tong_price = #{quotTongPrice},</if>
|
||||
<if test="quotMatpriceDiff != null">quot_matprice_diff = #{quotMatpriceDiff},</if>
|
||||
<if test="quotPrint != null">quot_print = #{quotPrint},</if>
|
||||
<if test="quotPrintUserName != null">quot_print_user_name = #{quotPrintUserName},</if>
|
||||
<if test="createBy != null">create_by = #{createBy},</if>
|
||||
<if test="quotFeedbackExplanation != null and quotFeedbackExplanation != ''">quot_feedback_explanation = #{quotFeedbackExplanation},</if>
|
||||
<if test="quotQuantity != null and quotQuantity != ''">quot_quantity = #{quotQuantity},</if>
|
||||
<if test="quotTotalPrice != null and quotTotalPrice != ''">quot_total_price = #{quotTotalPrice},</if>
|
||||
<if test="quotCheckUserName != null and quotCheckUserName != ''">quot_check_user_name = #{quotCheckUserName},</if>
|
||||
<if test="quotApprovalStatus != null and quotApprovalStatus != ''">quot_approval_status = #{quotApprovalStatus},</if>
|
||||
<if test="quotMaterialsCount != null and quotMaterialsCount != ''">quot_materials_count = #{quotMaterialsCount},</if>
|
||||
<if test="quotLvPrice != null and quotLvPrice != ''">quot_lv_price = #{quotLvPrice},</if>
|
||||
<if test="quotTongPrice != null and quotTongPrice != ''">quot_tong_price = #{quotTongPrice},</if>
|
||||
<if test="quotMatpriceDiff != null and quotMatpriceDiff != ''">quot_matprice_diff = #{quotMatpriceDiff},</if>
|
||||
<if test="quotPrint != null and quotPrint != ''">quot_print = #{quotPrint},</if>
|
||||
<if test="quotPrintUserName != null and quotPrintUserName != ''">quot_print_user_name = #{quotPrintUserName},</if>
|
||||
<if test="createBy != null and createBy != ''">create_by = #{createBy},</if>
|
||||
<if test="createTime != null">create_time = #{createTime},</if>
|
||||
<if test="updateBy != null">update_by = #{updateBy},</if>
|
||||
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
|
||||
<if test="updateTime != null">update_time = #{updateTime},</if>
|
||||
|
||||
<if test="quotJsxzStandard != null">quot_jsxz_standard = #{quotJsxzStandard},</if>
|
||||
<if test="quotJsxzApprovalStatus != null">quot_jsxz_approval_status = #{quotJsxzApprovalStatus},</if>
|
||||
<if test="quotJsxzChapter != null">quot_jsxz_chapter = #{quotJsxzChapter},</if>
|
||||
<if test="quotJsxzTechnicalRequirement != null">quot_jsxz_technical_requirement = #{quotJsxzTechnicalRequirement},</if>
|
||||
<if test="quotJsxzGroupValues != null">quot_jsxz_group_values = #{quotJsxzGroupValues},</if>
|
||||
<if test="quotJsxzConfirmId != null">quot_jsxz_confirm_id = #{quotJsxzConfirmId},</if>
|
||||
<if test="quotJsxzStandard != null and quotJsxzStandard != ''">quot_jsxz_standard = #{quotJsxzStandard},</if>
|
||||
<if test="quotJsxzApprovalStatus != null and quotJsxzApprovalStatus != ''">quot_jsxz_approval_status = #{quotJsxzApprovalStatus},</if>
|
||||
<if test="quotJsxzChapter != null and quotJsxzChapter != ''">quot_jsxz_chapter = #{quotJsxzChapter},</if>
|
||||
<if test="quotJsxzTechnicalRequirement != null and quotJsxzTechnicalRequirement != ''">quot_jsxz_technical_requirement = #{quotJsxzTechnicalRequirement},</if>
|
||||
<if test="quotJsxzGroupValues != null and quotJsxzGroupValues != ''">quot_jsxz_group_values = #{quotJsxzGroupValues},</if>
|
||||
<if test="quotJsxzConfirmId != null and quotJsxzConfirmId != ''">quot_jsxz_confirm_id = #{quotJsxzConfirmId},</if>
|
||||
|
||||
<if test="quotHjId != null">quot_hj_id = #{quotHjId},</if>
|
||||
<if test="quotHjApprovalStatus != null">quot_hj_approval_status = #{quotHjApprovalStatus},</if>
|
||||
<if test="quotHjId != null and quotHjId != ''">quot_hj_id = #{quotHjId},</if>
|
||||
<if test="quotHjApprovalStatus != null and quotHjApprovalStatus != ''">quot_hj_approval_status = #{quotHjApprovalStatus},</if>
|
||||
|
||||
<if test="quotJswApprovalStatus != null">quot_jsw_approval_status = #{quotJswApprovalStatus},</if>
|
||||
<if test="quotOAApprovalStatus != null">quot_oa_approval_status = #{quotOAApprovalStatus},</if>
|
||||
<if test="quotJswApprovalStatus != null and quotJswApprovalStatus != ''">quot_jsw_approval_status = #{quotJswApprovalStatus},</if>
|
||||
<if test="quotOAApprovalStatus != null and quotOAApprovalStatus != ''">quot_oa_approval_status = #{quotOAApprovalStatus},</if>
|
||||
</trim>
|
||||
where quot_id = #{quotId}
|
||||
</update>
|
||||
|
@ -499,4 +501,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<select id="getCode" resultType="String" statementType="CALLABLE">
|
||||
{call GetSerialNo(#{type,mode=IN,jdbcType=VARCHAR})}
|
||||
</select>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<select id="selectStatisticsQuotList" parameterType="Quot" resultMap="QuotResult">
|
||||
<include refid="selectQuotVo"/>
|
||||
<where>
|
||||
<if test="quotCode != null and quotCode != ''"> and quot_code like concat('%', #{quotCode}, '%')</if>
|
||||
<if test="quotCustomerName != null and quotCustomerName != ''"> and quot_customer_name like concat('%', #{quotCustomerName}, '%')</if>
|
||||
<if test="quotProject != null and quotProject != ''"> and quot_project like concat('%', #{quotProject}, '%')</if>
|
||||
<if test="quotSalesmanName != null and quotSalesmanName != ''"> and quot_salesman_name like concat('%', #{quotSalesmanName}, '%')</if>
|
||||
<if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
|
||||
and datediff(d, a.quot_quotation_date, #{params.beginTime}) <![CDATA[<=]]> 0
|
||||
</if>
|
||||
<if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
|
||||
and datediff(d, a.quot_quotation_date, #{params.endTime}) <![CDATA[>=]]> 0
|
||||
</if>
|
||||
and a.quot_approval_status = '2'
|
||||
</where>
|
||||
order by a.quot_quotation_date desc
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
|
@ -183,6 +183,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
and (B.sta_0=1 or sta_0=0)
|
||||
</select>
|
||||
|
||||
<select id="getFixDatePrice3" resultType="OAQuotProduct">
|
||||
select top 1 B.uid_0,A.namevoltage name_0,isnull(A.电压等级,N' - ') voltage,A.单位 stu,
|
||||
A.型号 name_1,isnull(A.规格,'') spec
|
||||
,convert(decimal,convert(float,A.红本价格)) price,convert(varchar(10),B.date_0,23) pricedate
|
||||
from [rb_product_price] A
|
||||
left join rb_productVersion B on A.version_uid_0=B.uid_0
|
||||
where (B.sta_0=1 or sta_0=0) and A.namevoltage=#{name_0}
|
||||
and B.uid_0 = #{uid_0}
|
||||
</select>
|
||||
|
||||
<sql id="quotsJoins">
|
||||
LEFT JOIN sys_user u on u.user_name=a.create_by
|
||||
LEFT JOIN sys_dept d on u.dept_id = d.dept_id
|
||||
|
|
|
@ -39,6 +39,23 @@ export function getReturnUpdateQuot(quotId) {
|
|||
})
|
||||
}
|
||||
|
||||
// 查询报价详细-整单通过
|
||||
export function getAllPass(quotId) {
|
||||
return request({
|
||||
url: '/quot/quot/allPass/' + quotId,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// 查询报价详细-整单驳回
|
||||
export function getAllReject(query) {
|
||||
return request({
|
||||
url: '/quot/quot/allReject',
|
||||
method: 'post',
|
||||
data: query
|
||||
})
|
||||
}
|
||||
|
||||
// 新增报价
|
||||
export function addQuot(data) {
|
||||
return request({
|
||||
|
@ -161,3 +178,12 @@ export function rejectQuot(data) {
|
|||
|
||||
|
||||
|
||||
//统计有效报价单模块-获取报价单数据
|
||||
export function listStatisticsQuotQuot(query) {
|
||||
return request({
|
||||
url: '/quot/quot/listStatisticsQuotQuot',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
@ -108,6 +108,14 @@ export function saveQuot(data) {
|
|||
data: data
|
||||
})
|
||||
}
|
||||
//生成报价单
|
||||
export function madeXjQuot(data) {
|
||||
return request({
|
||||
url: '/redBook/redBook/madeXjQuot',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
//提交报价单
|
||||
export function commitQuot(data) {
|
||||
return request({
|
||||
|
|
|
@ -36,7 +36,7 @@ $base-sub-menu-background:#000c17;
|
|||
$base-sub-menu-hover:#001528;
|
||||
*/
|
||||
|
||||
$base-sidebar-width: 200px;
|
||||
$base-sidebar-width: 210px;
|
||||
|
||||
// the :export directive is the magic sauce for webpack
|
||||
// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass
|
||||
|
|
|
@ -107,7 +107,7 @@ export default {
|
|||
dialogHeaderEl.onmousedown = null;
|
||||
if (!hasSetBodyHight) {
|
||||
let footerHeight = dragDom.querySelector('.el-dialog__footer') && dragDom.querySelector('.el-dialog__footer').offsetHeight;
|
||||
dragDom.querySelector('.el-dialog__body').style.height = 'calc(100% - ' + (dialogHeaderEl.offsetHeight + footerHeight) + 'px)';
|
||||
dragDom.querySelector('.el-dialog__body').style.height = 'calc(100% - 110px)';
|
||||
dragDom.querySelector('.el-dialog__body').style.maxHeight = dragDom.style.height
|
||||
hasSetBodyHight = true;
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
</el-tooltip>-->
|
||||
|
||||
<!--消息组件-->
|
||||
<NavbarNotice class="right-menu-item hover-effect"></NavbarNotice>
|
||||
<!-- <NavbarNotice class="right-menu-item hover-effect"></NavbarNotice>-->
|
||||
<screenfull id="screenfull" class="right-menu-item hover-effect" />
|
||||
|
||||
<el-tooltip content="布局大小" effect="dark" placement="bottom">
|
||||
|
|
|
@ -147,7 +147,7 @@
|
|||
},
|
||||
mounted() {
|
||||
// 初始化WebSocket
|
||||
this.initWebSocket();
|
||||
//this.initWebSocket();
|
||||
},
|
||||
created(){
|
||||
this.getList();
|
||||
|
|
|
@ -18,7 +18,7 @@ const service = axios.create({
|
|||
// axios中请求配置有baseURL选项,表示请求URL公共部分
|
||||
baseURL: process.env.VUE_APP_BASE_API,
|
||||
// 超时
|
||||
timeout: 300000
|
||||
timeout: 720000
|
||||
})
|
||||
|
||||
// request拦截器
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
||||
<el-form-item label="报价单号" prop="quotCode">
|
||||
<el-form-item label="询价单号" prop="quotCode">
|
||||
<el-input
|
||||
v-model="queryParams.quotCode"
|
||||
placeholder="请输入报价单号"
|
||||
placeholder="请输入询价单号"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
|
@ -25,7 +25,7 @@
|
|||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="业务员" prop="quotSalesmanName" v-if="checkRole(['QUOT'])">
|
||||
<el-form-item label="业务员" prop="quotSalesmanName" v-if="checkRole(['QUOT','PRICE_VERIFICATION'])">
|
||||
<el-input
|
||||
v-model="queryParams.quotSalesmanName"
|
||||
placeholder="请输入业务员"
|
||||
|
@ -113,13 +113,35 @@
|
|||
v-hasPermi="['quot:quot:returnUpdate']"
|
||||
>错误修订</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="warning"
|
||||
plain
|
||||
icon="el-icon-edit"
|
||||
size="mini"
|
||||
:disabled="single"
|
||||
@click="handleAllPass"
|
||||
v-hasPermi="['quot:quot:allPass']"
|
||||
>整单通过</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="warning"
|
||||
plain
|
||||
icon="el-icon-edit"
|
||||
size="mini"
|
||||
:disabled="single"
|
||||
@click="handleAllReject"
|
||||
v-hasPermi="['quot:quot:allReject']"
|
||||
>整单驳回</el-button>
|
||||
</el-col>
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
<el-table v-loading="loading" :data="quotList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="报价单ID" align="center" prop="quotId" v-if="false"/>
|
||||
<el-table-column fixed label="报价单号" align="center" prop="quotCode" width="250px">
|
||||
<el-table-column fixed label="询价单号" align="center" prop="quotCode" width="250px">
|
||||
<template slot-scope="scope">
|
||||
<el-link :underline="false" type="primary" @click="handleUpdate(scope.row)">{{scope.row.quotCode}}</el-link>
|
||||
</template>
|
||||
|
@ -129,29 +151,6 @@
|
|||
<dict-tag :options="dict.type.quot_approval_status" :value="scope.row.quotApprovalStatus"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="业务员" align="center" prop="quotSalesmanName" width="150px"/>
|
||||
<el-table-column label="客户名称" align="center" prop="quotCustomerName" width="250px"/>
|
||||
<el-table-column label="项目名称" align="center" prop="quotProject" width="250px"/>
|
||||
<el-table-column label="金思维提交状态" align="center" prop="quotJsxzApprovalStatus" width="150px" v-if="checkRole(['QUOT'])">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.quot_jsw_approval_status" :value="scope.row.quotJswApprovalStatus" v-if="scope.row.quotJswApprovalStatus!=0"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="OA提交状态" align="center" prop="quotJsxzApprovalStatus" width="150px" v-if="checkRole(['QUOT'])">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.quot_oa_approval_status" :value="scope.row.quotOAApprovalStatus" v-if="scope.row.quotOAApprovalStatus!=0"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="技术协助状态" align="center" prop="quotJsxzApprovalStatus" width="150px" v-if="checkRole(['QUOT'])">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.quot_jsxz_approval_status" :value="scope.row.quotJsxzApprovalStatus" v-if="scope.row.quotJsxzApprovalStatus!=0"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="核价协助状态" align="center" prop="quotHjApprovalStatus" width="150px" v-if="checkRole(['QUOT'])">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.quot_hj_approval_status" :value="scope.row.quotHjApprovalStatus" v-if="scope.row.quotHjApprovalStatus!=0"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="是否打印" align="center" prop="quotPrint" v-if="$auth.hasPermi('quot:quot:changQuotPrintStatus')">
|
||||
<template slot-scope="scope">
|
||||
<el-switch
|
||||
|
@ -163,8 +162,31 @@
|
|||
></el-switch>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="打印人" align="center" prop="quotPrintUserName" width="150px" v-if="$auth.hasPermi('quot:quot:changQuotPrintStatus')"/>
|
||||
<el-table-column label="金思维报价单号" align="center" prop="quotJswCode" width="280px" v-if="checkRole(['QUOT'])"/>
|
||||
<el-table-column label="打印人" align="center" prop="quotPrintUserNickName" width="150px" v-if="$auth.hasPermi('quot:quot:changQuotPrintStatus')"/>
|
||||
<el-table-column label="OA提交状态" align="center" prop="quotJsxzApprovalStatus" width="150px" v-if="checkRole(['QUOT','PRICE_VERIFICATION'])">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.quot_oa_approval_status" :value="scope.row.quotOAApprovalStatus" v-if="scope.row.quotOAApprovalStatus!=0"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="业务员" align="center" prop="quotSalesmanName" width="150px"/>
|
||||
<el-table-column label="客户名称" align="center" prop="quotCustomerName" width="250px"/>
|
||||
<el-table-column label="项目名称" align="center" prop="quotProject" width="250px"/>
|
||||
<el-table-column label="金思维提交状态" align="center" prop="quotJsxzApprovalStatus" width="150px" v-if="checkRole(['QUOT','PRICE_VERIFICATION'])">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.quot_jsw_approval_status" :value="scope.row.quotJswApprovalStatus" v-if="scope.row.quotJswApprovalStatus!=0"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="技术协助状态" align="center" prop="quotJsxzApprovalStatus" width="150px" v-if="checkRole(['QUOT','PRICE_VERIFICATION'])">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.quot_jsxz_approval_status" :value="scope.row.quotJsxzApprovalStatus" v-if="scope.row.quotJsxzApprovalStatus!=0"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="核价协助状态" align="center" prop="quotHjApprovalStatus" width="150px" v-if="checkRole(['QUOT','PRICE_VERIFICATION'])">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.quot_hj_approval_status" :value="scope.row.quotHjApprovalStatus" v-if="scope.row.quotHjApprovalStatus!=0"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="金思维报价单号" align="center" prop="quotJswCode" width="280px" v-if="checkRole(['QUOT','PRICE_VERIFICATION'])"/>
|
||||
<el-table-column label="询价日期" align="center" prop="quotInquiryDate" width="160">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.quotInquiryDate) }}</span>
|
||||
|
@ -175,7 +197,7 @@
|
|||
<span>{{ parseTime(scope.row.quotQuotationDate) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="数量" align="center" prop="quotQuantity" width="100"/>
|
||||
<el-table-column label="明细条数" align="center" prop="quotMaterialsCount" width="100"/>
|
||||
<el-table-column label="反馈说明" align="center" prop="quotFeedbackExplanation" width="150px"/>
|
||||
<el-table-column label="创建人" align="center" prop="createName" width="150px"/>
|
||||
<el-table-column label="创建时间" align="center" prop="createTime" width="160">
|
||||
|
@ -208,17 +230,17 @@
|
|||
</el-form-item>
|
||||
</el-col>
|
||||
<div v-if="checkPermi(['quot:quot:xzInfo'])">
|
||||
<el-col :span="4">
|
||||
<el-col :span="4" v-if="!checkRole(['SALES_MAN'])">
|
||||
<el-form-item label="技术协助" prop="quotJsxzApprovalStatus">
|
||||
<dict-tag :options="dict.type.quot_approval_status" :value="this.form.quotJsxzApprovalStatus"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-col :span="4" v-if="!checkRole(['SALES_MAN'])">
|
||||
<el-form-item label="核价协助" prop="quotHjApprovalStatus">
|
||||
<dict-tag :options="dict.type.quot_approval_status" :value="this.form.quotHjApprovalStatus"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-col :span="4" v-if="!checkRole(['SALES_MAN'])">
|
||||
<el-form-item label="金思维协助" prop="quotJswApprovalStatus">
|
||||
<dict-tag :options="dict.type.quot_jsw_approval_status" :value="this.form.quotJswApprovalStatus"/>
|
||||
</el-form-item>
|
||||
|
@ -234,7 +256,7 @@
|
|||
<el-divider content-position="left" class="customer_divider_text">报价信息</el-divider>
|
||||
<el-row :gutter="8">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="报价单号" prop="quotCode">
|
||||
<el-form-item label="询价单号" prop="quotCode">
|
||||
<el-input v-model="form.quotCode" placeholder="系统自动生成" :disabled="true"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
@ -340,8 +362,8 @@
|
|||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6" v-if="checkRole(['QUOT','PRICE_VERIFICATION'])">
|
||||
<el-form-item label="打印人" prop="quotPrintUserName">
|
||||
<el-input v-model="form.quotPrintUserName" :disabled="true"/>
|
||||
<el-form-item label="打印人" prop="quotPrintUserNickName">
|
||||
<el-input v-model="form.quotPrintUserNickName" :disabled="true"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
@ -367,14 +389,14 @@
|
|||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="8" v-if="checkRole(['QUOT','SALES_MAN'])">
|
||||
<el-row :gutter="8" v-if="checkRole(['QUOT','PRICE_VERIFICATION','SALES_MAN'])">
|
||||
<el-col :span="24" v-if="this.form.quotApprovalStatus != '0' && this.form.quotApprovalStatus != null">
|
||||
<el-form-item label="反馈说明" prop="quotFeedbackExplanation">
|
||||
<el-input type="textarea" autosize v-model="form.quotFeedbackExplanation" placeholder="报价组填写" :disabled="this.form.quotApprovalStatus == 2"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="8" v-if="checkRole(['QUOT'])">
|
||||
<el-row :gutter="8" v-if="checkRole(['QUOT','PRICE_VERIFICATION','SALES_MAN'])">
|
||||
<el-col :span="24" v-if="this.form.quotOAApprovalStatus == '2' || this.form.quotOAApprovalStatus == '3'">
|
||||
<el-form-item label="OA审批说明" prop="quotOAApprovalStatusRemark">
|
||||
<el-input type="textarea" autosize v-model="form.quotOAApprovalStatusRemark" :disabled="true"/>
|
||||
|
@ -384,6 +406,8 @@
|
|||
|
||||
<el-divider content-position="left" class="customer_divider_text">清单附件(先保存再上传且必须是EXCEL文件)</el-divider>
|
||||
<div v-hasPermi="['quot:quot:quotXjFile']">
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-upload class="upload-demo"
|
||||
ref="quotXjFileUpload"
|
||||
name="quotFile"
|
||||
|
@ -395,8 +419,13 @@
|
|||
:show-file-list="false"
|
||||
:limit="1"
|
||||
v-if="this.form.quotApprovalStatus == '0'">
|
||||
<el-button size="small" type="primary" @click="uploadFile('quotXjFile')">上传文件</el-button>
|
||||
<el-button size="mini" type="primary" @click="uploadFile('quotXjFile')">上传文件</el-button>
|
||||
</el-upload>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="info" plain icon="el-icon-download" size="mini" @click="importTemplate">清单附件模版下载</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
<el-table class="down" v-loading="quotXjFileLoading" :data="quotXjFileList" border stripe style="width: 100%;margin-top: 10px;" height="200px">
|
||||
<el-table-column prop="fileName" label="文件名称" ></el-table-column>
|
||||
|
@ -432,7 +461,7 @@
|
|||
:show-file-list="false"
|
||||
:limit="1"
|
||||
v-if="this.form.quotApprovalStatus == '0'">
|
||||
<el-button size="small" type="primary" @click="uploadFile('quotJsgfFile')">上传文件</el-button>
|
||||
<el-button size="mini" type="primary" @click="uploadFile('quotJsgfFile')">上传文件</el-button>
|
||||
</el-upload>
|
||||
</div>
|
||||
<el-table class="down" v-loading="quotJsgfFileLoading" :data="quotJsgfFileList" border stripe style="width: 100%;margin-top: 10px;" height="200px">
|
||||
|
@ -458,14 +487,17 @@
|
|||
|
||||
<el-divider content-position="left" class="customer_divider_text">产品信息</el-divider>
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<!--<el-col :span="1.5">
|
||||
<el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAddQuotMaterial" v-if="this.form.quotApprovalStatus == '0' || this.form.quotApprovalStatus == null">添加</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="danger" icon="el-icon-delete" size="mini" @click="handleDeleteQuotMaterial" v-if="this.form.quotApprovalStatus == '0' || this.form.quotApprovalStatus == null">删除</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
</el-col>-->
|
||||
<!-- <el-col :span="1.5">
|
||||
<el-button type="info" plain icon="el-icon-upload2" size="mini" @click="handleImport" v-if="(this.form.quotApprovalStatus == '0' || this.form.quotApprovalStatus == null) || checkRole(['QUOT','PRICE_VERIFICATION'])">导入</el-button>
|
||||
</el-col>-->
|
||||
<el-col :span="1.5" v-if="checkRole(['QUOT','PRICE_VERIFICATION'])">
|
||||
<el-button type="info" plain icon="el-icon-upload2" size="mini" @click="handleImport">导入</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5" v-if="checkRole(['QUOT','PRICE_VERIFICATION'])">
|
||||
<el-button type="info" plain icon="el-icon-upload2" size="mini" @click="handleExportMaterial">导出</el-button>
|
||||
|
@ -509,22 +541,22 @@
|
|||
<el-input v-model="scope.row.matMatprice" :disabled="true"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="红本单价" prop="matPrice" v-if="checkRole(['QUOT','QUOT_MAT_PRICE_DIFF'])" width="130">
|
||||
<el-table-column label="红本单价" prop="matPrice" v-if="checkRole(['QUOT','PRICE_VERIFICATION','QUOT_MAT_PRICE_DIFF'])" width="130">
|
||||
<template slot-scope="scope">
|
||||
<el-input v-model="scope.row.matPrice" :disabled="true"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="特批下点" prop="matQuotTp" v-if="checkRole(['QUOT','QUOT_MAT_PRICE_DIFF'])" width="100">
|
||||
<el-table-column label="特批下点" prop="matQuotTp" v-if="checkRole(['QUOT','PRICE_VERIFICATION','QUOT_MAT_PRICE_DIFF'])" width="100">
|
||||
<template slot-scope="scope">
|
||||
<el-input v-model="scope.row.matQuotTp" :disabled="true"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="报价单价" prop="matQuotPrice" v-if="checkRole(['QUOT','QUOT_MAT_PRICE_DIFF'])" width="130">
|
||||
<el-table-column label="报价单价" prop="matQuotPrice" v-if="checkRole(['QUOT','PRICE_VERIFICATION','SALES_MAN','QUOT_MAT_PRICE_DIFF'])" width="130">
|
||||
<template slot-scope="scope">
|
||||
<el-input v-model="scope.row.matQuotPrice" :disabled="true"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="报价小计" prop="matQuotAllPrice" v-if="checkRole(['QUOT','QUOT_MAT_PRICE_DIFF'])" width="130">
|
||||
<el-table-column label="报价小计" prop="matQuotAllPrice" v-if="checkRole(['QUOT','PRICE_VERIFICATION','SALES_MAN','QUOT_MAT_PRICE_DIFF'])" width="130">
|
||||
<template slot-scope="scope">
|
||||
<el-input v-model="scope.row.matQuotAllPrice" :disabled="true"/>
|
||||
</template>
|
||||
|
@ -549,7 +581,7 @@
|
|||
:show-file-list="false"
|
||||
:limit="1"
|
||||
v-if="this.form.quotApprovalStatus == '1'">
|
||||
<el-button size="small" type="primary" @click="uploadFile('quotFkFile')">上传文件</el-button>
|
||||
<el-button size="mini" type="primary" @click="uploadFile('quotFkFile')">上传文件</el-button>
|
||||
</el-upload>
|
||||
</div>
|
||||
<el-table class="down" v-loading="quotFkFileLoading" :data="quotFkFileList" border stripe style="width: 100%;margin-top: 10px;" height="200px">
|
||||
|
@ -571,12 +603,11 @@
|
|||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
|
||||
<!-- 技术协助块-->
|
||||
<div v-if="checkPermi(['quot:quot:jsxzInfo'])">
|
||||
<el-divider content-position="left" class="customer_divider_text">技术协助</el-divider>
|
||||
<el-row :gutter="8">
|
||||
<el-col :span="8">
|
||||
<!--<el-col :span="8">
|
||||
<el-form-item label="标准" prop="quotJsxzStandard">
|
||||
<el-select v-model="form.quotJsxzStandard" :disabled="this.form.quotJsxzApprovalStatus != '0'">
|
||||
<el-option
|
||||
|
@ -587,7 +618,7 @@
|
|||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-col>-->
|
||||
<el-col :span="8">
|
||||
<el-form-item label="技术协助状态" prop="quotJsxzApprovalStatus">
|
||||
<el-select v-model="form.quotJsxzApprovalStatus" :disabled="true">
|
||||
|
@ -600,7 +631,7 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<!--<el-col :span="8">
|
||||
<el-form-item label="是否盖技术章" prop="quotJsxzChapter">
|
||||
<el-select v-model="form.quotJsxzChapter" :disabled="this.form.quotJsxzApprovalStatus != '0'">
|
||||
<el-option
|
||||
|
@ -611,7 +642,7 @@
|
|||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-col>-->
|
||||
</el-row>
|
||||
<el-row :gutter="8">
|
||||
<el-col :span="12">
|
||||
|
@ -914,7 +945,7 @@
|
|||
<span style="margin-left: 10px" v-hasPermi="['quot:quot:assistHj']"><el-button type="primary" plain @click="commitHjForm" v-if="this.form.quotApprovalStatus == '1'&&this.form.quotHjApprovalStatus == '0'">提交核价审核</el-button></span>
|
||||
|
||||
<!-- 业务员、报价组生成报价单-->
|
||||
<span style="float:left" v-hasPermi="['quot:quot:madeQuot']"><el-button type="warning" plain @click="madeQuot" v-if="this.form.quotApprovalStatus == '2'||checkRole(['QUOT'])">生成报价单</el-button></span>
|
||||
<span style="float:left" v-hasPermi="['quot:quot:madeQuot']"><el-button type="warning" plain @click="madeQuot" v-if="this.form.quotApprovalStatus == '2'||!checkRole(['SALES_MAN'])">生成报价单</el-button></span>
|
||||
|
||||
<!-- 报价组提交金思维、OA-->
|
||||
<span style="margin-left: 10px;float:left" v-hasPermi="['quot:quot:assistJsw']"><el-button type="warning" plain @click="commitJswForm" v-if="this.form.quotApprovalStatus == '1'&&(this.form.quotJswApprovalStatus == '0'||this.form.quotJswApprovalStatus == '2')">提交金思维</el-button></span>
|
||||
|
@ -999,7 +1030,7 @@
|
|||
</style>
|
||||
<script>
|
||||
import { NumberAdd } from '@/utils/number';// 数值计算
|
||||
import { changQuotPrintStatus,listQuot, getQuot, getReturnUpdateQuot, delQuot, addQuot, updateQuot, quotFileList, quotFileDelete, commitQuot, commitJsQuot, commitHjQuot, commitJswQuot, commitOAQuot, feedbackQuot, madeQuot, rejectQuot } from "@/api/quot/quot";
|
||||
import { changQuotPrintStatus,listQuot, getQuot, getReturnUpdateQuot,getAllPass,getAllReject, delQuot, addQuot, updateQuot, quotFileList, quotFileDelete, commitQuot, commitJsQuot, commitHjQuot, commitJswQuot, commitOAQuot, feedbackQuot, madeQuot, rejectQuot } from "@/api/quot/quot";
|
||||
import { getToken } from "@/utils/auth";
|
||||
import { checkPermi,checkRole } from '@/utils/permission';// 权限判断函数
|
||||
import { getDicts } from "@/api/system/dict/data";
|
||||
|
@ -1201,6 +1232,7 @@ export default {
|
|||
quotApprovalStatus: null,
|
||||
|
||||
quotPrintUserName: null,
|
||||
quotPrintUserNickName: null,
|
||||
quotMaterialsCount: null,
|
||||
quotTongPrice: null,
|
||||
quotLvPrice: null,
|
||||
|
@ -1296,7 +1328,6 @@ export default {
|
|||
handleReturnUpdate(row) {
|
||||
this.reset();
|
||||
const quotId = row.quotId || this.ids
|
||||
let self = this;
|
||||
this.$modal.confirm('是否确认修订所选报价单且更新状态为协助中?').then(function() {
|
||||
}).then(() => {
|
||||
getReturnUpdateQuot(quotId).then(response => {
|
||||
|
@ -1305,6 +1336,39 @@ export default {
|
|||
});
|
||||
}).catch(() => {});
|
||||
},
|
||||
// 整单通过
|
||||
handleAllPass(row) {
|
||||
this.reset();
|
||||
const quotId = row.quotId || this.ids
|
||||
this.$modal.confirm('是否确认修订所选报价单且更新状态为通过?').then(function() {
|
||||
}).then(() => {
|
||||
getAllPass(quotId).then(response => {
|
||||
this.$modal.msgSuccess("更改成功");
|
||||
this.getList();
|
||||
});
|
||||
}).catch(() => {});
|
||||
},
|
||||
// 整单驳回
|
||||
handleAllReject(row) {
|
||||
this.reset();
|
||||
const quotId = row.quotId || this.ids;
|
||||
|
||||
this.$prompt('请输入驳回原因', '是否确认修订所选报价单且更新状态为驳回?', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
inputPattern: /^.+$/,
|
||||
inputErrorMessage: '驳回原因必填'
|
||||
}).then(({ value }) => {
|
||||
this.form = {
|
||||
"quotId":quotId[0],
|
||||
"quotFeedbackExplanation":value
|
||||
}
|
||||
getAllReject(this.form).then(response => {
|
||||
this.$modal.msgSuccess("更改成功");
|
||||
this.getList();
|
||||
});
|
||||
}).catch(() => {});
|
||||
},
|
||||
|
||||
/** 修改按钮操作-详细信息设置 */
|
||||
setInfo(response){
|
||||
|
@ -1595,11 +1659,13 @@ export default {
|
|||
}
|
||||
});
|
||||
this.form.quotQuantity = sums[6];
|
||||
this.form.quotTotalPrice = checkRole(['QUOT_MAT_PRICE_DIFF'])? sums[12] : sums[11];
|
||||
this.form.quotMaterialsCount = data.length;
|
||||
this.form.quotTotalPrice = this.form.quotTotalPrice?this.form.quotTotalPrice:checkRole(['QUOT_MAT_PRICE_DIFF'])? sums[12] : sums[11];
|
||||
this.form.quotMaterialsCount = this.form.quotMaterialsCount?this.form.quotMaterialsCount:data.length;
|
||||
return sums;
|
||||
},
|
||||
|
||||
|
||||
|
||||
/*********************************附件列表数据展示、上传*****************************************/
|
||||
//获取报价单-询价附件列表
|
||||
getQuotXjFileList(){
|
||||
|
@ -1613,11 +1679,13 @@ export default {
|
|||
const param = {relationId:this.form.quotId,fileType:'quotFkFile'}
|
||||
|
||||
//协助中状态不显示反馈附件
|
||||
if(this.form.quotApprovalStatus!='1' && checkRole(['SALES_MAN'])){
|
||||
if(checkRole(['SALES_MAN'])){
|
||||
if(this.form.quotApprovalStatus!='1'){
|
||||
quotFileList(param).then(response => {
|
||||
this.quotFkFileList = response.rows;
|
||||
});
|
||||
}else if(checkRole(['QUOT'])){
|
||||
}
|
||||
}else{
|
||||
quotFileList(param).then(response => {
|
||||
this.quotFkFileList = response.rows;
|
||||
});
|
||||
|
@ -1692,7 +1760,8 @@ export default {
|
|||
this.quotXjFileLoading = true;
|
||||
let activeName = this.activeName;
|
||||
if(activeName=='quotXjFile'){
|
||||
if(file.name.split('.')[1].toLowerCase() != 'xls' && file.name.split('.')[1].toLowerCase() != 'xlsx'){
|
||||
const fileExtension = file.name.split('.').pop();
|
||||
if(fileExtension.toLowerCase() != 'xls' && fileExtension.toLowerCase() != 'xlsx'){
|
||||
this.$modal.msgError("清单附件必须是Excel格式");
|
||||
this.quotXjFileLoading = false;
|
||||
return false;
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
<el-button style="float: right;" size="mini" type="primary" icon="el-icon-search" @click="handleSearchClick">搜索</el-button>
|
||||
</el-col>
|
||||
<el-col :span="14">
|
||||
<!--<el-button style="float: right;margin-left: 5px;" size="mini" type="primary" icon="el-icon-document" @click="handleMadeXjQuotClick" :disabled="selectedResultData.length==0 || madeQuotDis">生成询价单</el-button>-->
|
||||
<el-button style="float: right;margin-left: 5px;" size="mini" type="success" icon="el-icon-document" @click="handleMadeQuotClick" :disabled="selectedResultData.length==0 || madeQuotDis">生成报价单</el-button>
|
||||
<el-button style="float: right;margin-left: 5px;" size="mini" type="warning" icon="el-icon-folder" @click="handleSaveClick" :disabled="selectedResultData.length==0">保存</el-button>
|
||||
<el-button style="float: right;margin-left: 5px;" size="mini" icon="el-icon-refresh" @click="handleRefreshClick">清空信息</el-button>
|
||||
|
@ -153,7 +154,7 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="版本uid" align="center" prop="uid_0" v-if="false"/>
|
||||
<el-table-column label="产品型号" align="center" prop="name_0" width="200" />
|
||||
<el-table-column label="产品型号" align="center" prop="name_0" width="200"/>
|
||||
<el-table-column label="型号" align="center" prop="name_1" v-if="false"/>
|
||||
<el-table-column label="规格" align="center" prop="spec" v-if="false"/>
|
||||
<el-table-column label="电压" align="center" prop="voltage"/>
|
||||
|
@ -269,7 +270,7 @@
|
|||
|
||||
</style>
|
||||
<script>
|
||||
import {toDecimal, productList,versionList,productRemarkList,productXinghList,judgeparent,productZlList,productYsxhListCheck,productYsxhList,productJmListCheck,productJmList,searchData,handleSearchData,saveQuot, madeQuot,updateSelectedResultData} from "@/api/redBook/redBook";
|
||||
import {toDecimal, productList,versionList,productRemarkList,productXinghList,judgeparent,productZlList,productYsxhListCheck,productYsxhList,productJmListCheck,productJmList,searchData,handleSearchData,saveQuot, madeQuot, madeXjQuot, updateSelectedResultData} from "@/api/redBook/redBook";
|
||||
import { getToken } from "@/utils/auth";
|
||||
export default {
|
||||
name: "productSelect",
|
||||
|
@ -348,7 +349,7 @@
|
|||
// 设置上传的请求头部
|
||||
headers: { Authorization: "Bearer " + getToken() },
|
||||
// 上传的地址
|
||||
url: process.env.VUE_APP_BASE_API + "/redBook/redBook/importData"
|
||||
url: process.env.VUE_APP_BASE_API + "/redBook/redBook/importData2"
|
||||
},
|
||||
|
||||
//折扣率 初始值
|
||||
|
@ -624,10 +625,13 @@
|
|||
},
|
||||
|
||||
/** 已选结果数据里存在所选调价版本不一致的数据 */
|
||||
cellStyle({ row }){
|
||||
cellStyle({ row, columnIndex }){
|
||||
if(row.uid_0 != this.form.rbDateUid){
|
||||
return {'background-color':'#ff494959'}
|
||||
}
|
||||
if(!row.stu && (columnIndex == 2 || columnIndex == 3)){
|
||||
return 'color:red'
|
||||
}
|
||||
},
|
||||
|
||||
//删除已选结果数据
|
||||
|
@ -776,6 +780,34 @@
|
|||
});
|
||||
},
|
||||
|
||||
// 生成询价单
|
||||
handleMadeXjQuotClick() {
|
||||
this.form.selectedResultData = this.selectedResultData;
|
||||
madeXjQuot(this.form).then(response => {
|
||||
//this.$modal.msgSuccess("生成询价单成功,单号:"+response.data.quotCode);
|
||||
// 处理返回的文件流
|
||||
const content = response;
|
||||
const blob = new Blob([content]);
|
||||
const fileName = "RB_BJD_"+this.getTodayCourse()+".xls";
|
||||
if ("download" in document.createElement("a")) {
|
||||
// 非IE下载
|
||||
const elink = document.createElement("a");
|
||||
elink.download = fileName;
|
||||
elink.style.display = "none";
|
||||
elink.href = URL.createObjectURL(blob);
|
||||
document.body.appendChild(elink);
|
||||
elink.click();
|
||||
URL.revokeObjectURL(elink.href); // 释放URL 对象
|
||||
document.body.removeChild(elink);
|
||||
}else {
|
||||
// IE10+下载
|
||||
navigator.msSaveBlob(blob, fileName);
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
},
|
||||
|
||||
/** 产品数据导入按钮操作 */
|
||||
handleImport() {
|
||||
this.productUpload.title = "产品数据导入";
|
||||
|
@ -783,7 +815,7 @@
|
|||
},
|
||||
/** 下载模板操作 */
|
||||
importTemplate() {
|
||||
this.download('redBook/redBook/importTemplate', {
|
||||
this.download('redBook/redBook/importTemplate2', {
|
||||
}, `product_template_${new Date().getTime()}.xlsx`)
|
||||
},
|
||||
// 文件上传中处理
|
||||
|
|
|
@ -0,0 +1,179 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
||||
<el-form-item label="报价时间">
|
||||
<el-date-picker
|
||||
v-model="dateRange"
|
||||
style="width: 240px"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
type="daterange"
|
||||
range-separator="-"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
:default-time="['00:00:00', '23:59:59']"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="报价单号" prop="quotCode">
|
||||
<el-input
|
||||
v-model="queryParams.quotCode"
|
||||
placeholder="请输入报价单号"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="客户名称" prop="quotCustomerName">
|
||||
<el-input
|
||||
v-model="queryParams.quotCustomerName"
|
||||
placeholder="请输入客户名称"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="项目名称" prop="quotProject">
|
||||
<el-input
|
||||
v-model="queryParams.quotProject"
|
||||
placeholder="请输入项目名称"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="业务员" prop="quotSalesmanName">
|
||||
<el-input
|
||||
v-model="queryParams.quotSalesmanName"
|
||||
placeholder="请输入业务员"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row>
|
||||
<el-col :span="4">
|
||||
<span>总条数:{{sumQuotMaterialsCount}}</span>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<span>总价:{{sumQuotTotalPrice}}</span>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-table v-loading="loading" :data="quotList" style="width: 100%;margin-top: 10px;" :height="tableHeight">
|
||||
<el-table-column fixed label="报价单号" align="center" prop="quotCode" width="250px"/>
|
||||
<el-table-column fixed label="业务员" align="center" prop="quotSalesmanName" width="150px"/>
|
||||
<el-table-column fixed label="客户名称" align="center" prop="quotCustomerName" width="250px"/>
|
||||
<el-table-column fixed label="项目名称" align="center" prop="quotProject" width="250px"/>
|
||||
<el-table-column label="明细条数" align="center" prop="quotMaterialsCount" width="100"/>
|
||||
<el-table-column label="总价" align="center" prop="quotTotalPrice" width="100"/>
|
||||
<!--<el-table-column label="金思维报价单号" align="center" prop="quotJswCode" width="280px"/>-->
|
||||
<el-table-column label="询价日期" align="center" prop="quotInquiryDate" width="160">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.quotInquiryDate) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="报价日期" align="center" prop="quotQuotationDate" width="160">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.quotQuotationDate) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="创建人" align="center" prop="createName" width="150px"/>
|
||||
<el-table-column label="创建时间" align="center" prop="createTime" width="160">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.createTime) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="审核人" align="center" prop="quotCheckUserNickname" width="160" />
|
||||
<el-table-column label="报价时间" align="center" prop="quotQuotationDate" width="160">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.quotQuotationDate) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { listStatisticsQuotQuot } from "@/api/quot/quot"; // 有效报价单统计
|
||||
import {toDecimal} from "@/api/redBook/redBook";
|
||||
import { getNowDate } from '@/utils/date'
|
||||
|
||||
export default {
|
||||
name: "statisticsQuot",
|
||||
data() {
|
||||
return {
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 显示搜索条件
|
||||
showSearch: true,
|
||||
// 总条数
|
||||
total: 0,
|
||||
// 时间范围
|
||||
dateRange: [getNowDate(),getNowDate()],
|
||||
// 报价表格数据
|
||||
quotList: [],
|
||||
// 表格高度设置
|
||||
tableHeight: window.innerHeight - 240, //表格动态高度
|
||||
screenHeight: window.innerHeight, //内容区域高度
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
quotCode: null,
|
||||
quotCustomerName: null,
|
||||
quotSalesmanName: null,
|
||||
quotProject: null
|
||||
}
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.getList();
|
||||
},
|
||||
methods: {
|
||||
/** 查询报价列表 */
|
||||
getList() {
|
||||
this.loading = true;
|
||||
listStatisticsQuotQuot(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
|
||||
this.quotList = response.rows;
|
||||
this.total = response.total;
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
|
||||
/** 搜索按钮操作 */
|
||||
handleQuery() {
|
||||
this.queryParams.pageNum = 1;
|
||||
this.getList();
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
this.resetForm("queryForm");
|
||||
this.handleQuery();
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
// 总条数
|
||||
sumQuotMaterialsCount() {
|
||||
const quotMaterialsCount = this.quotList.reduce((sum, row) => sum + parseFloat(row.quotMaterialsCount==null?0:row.quotMaterialsCount), 0);
|
||||
return toDecimal(quotMaterialsCount);
|
||||
},
|
||||
// 总价
|
||||
sumQuotTotalPrice() {
|
||||
const quotTotalPrice = this.quotList.reduce((sum, row) => sum + parseFloat(row.quotTotalPrice==null?0:row.quotTotalPrice), 0);
|
||||
return toDecimal(quotTotalPrice);
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
// 监听screenHeight从而改变table的高度
|
||||
screenHeight(val) {
|
||||
this.screenHeight = val
|
||||
this.tableHeight = this.screenHeight - 260
|
||||
}
|
||||
},
|
||||
mounted: function() {
|
||||
window.onresize = () => {
|
||||
return (() => {
|
||||
window.screenHeight = window.innerHeight
|
||||
this.screenHeight = window.screenHeight
|
||||
})()
|
||||
}
|
||||
},
|
||||
};
|
||||
</script>
|
|
@ -79,6 +79,30 @@
|
|||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-divider content-position="center">清单附件</el-divider>
|
||||
<el-row :gutter="8">
|
||||
<el-col :span="24">
|
||||
<el-table class="down" :data="quotXjFileList" border stripe style="width: 100%;" height="150px">
|
||||
<el-table-column prop="fileName" label="文件名称" width="450px"></el-table-column>
|
||||
<el-table-column prop="fileSize" label="文件大小" width="100px">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="scope.row.fileSize / 1024 / 1024 < 1">{{(scope.row.fileSize / 1024).toFixed(2) + 'KB'}}</span>
|
||||
<span v-else>{{(scope.row.fileSize / 1024 / 1024).toFixed(2) + 'MB'}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="fileTime" label="上传时间"></el-table-column>
|
||||
<el-table-column width="150px" label="操作">
|
||||
<template slot-scope="scope">
|
||||
<el-button :key="Math.random()" size="small" type="text">
|
||||
<a @click="downloadFile(scope.row.fileUrl)">下载</a>
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-divider content-position="center">技术规范要求(技术附件)</el-divider>
|
||||
<el-row :gutter="8">
|
||||
<el-col :span="24">
|
||||
|
@ -101,6 +125,7 @@
|
|||
</el-table>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<div v-if="showTl">
|
||||
<el-divider content-position="center">特缆协助</el-divider>
|
||||
<div style="margin-bottom: 10px;text-align:right">
|
||||
|
@ -799,6 +824,7 @@
|
|||
isSelfProp: true,
|
||||
// 报价单-技术确认单-技术规范附件列表数据
|
||||
quotJsgfFileList: [],
|
||||
quotXjFileList: [],
|
||||
//报价单-技术确认单-反馈附件上传地址
|
||||
uploadUrl: process.env.VUE_APP_BASE_API + "/quot/quot/quotFile",
|
||||
//报价单-技术确认单-反馈附件请求头
|
||||
|
@ -922,6 +948,7 @@
|
|||
};
|
||||
|
||||
this.quotJsgfFileList = [];
|
||||
this.quotXjFileList = [];
|
||||
this.quotJsqrFileList = [];
|
||||
|
||||
this.showTl = false;
|
||||
|
@ -963,6 +990,7 @@
|
|||
}
|
||||
|
||||
this.getQuotJsgfFileList();
|
||||
this.getQuotXjFileList();
|
||||
this.quotJsqrTlRemarkDisSet();//技术协助-特缆审核意见/组长确认意见 编辑状态设置
|
||||
this.quotJsqrDyRemarkDisSet();//技术协助-低压审核意见/组长确认意见 编辑状态设置
|
||||
this.quotJsqrZyRemarkDisSet();//技术协助-中压审核意见/组长确认意见 编辑状态设置
|
||||
|
@ -987,6 +1015,13 @@
|
|||
this.quotJsgfFileList = response.rows;
|
||||
});
|
||||
},
|
||||
//获取报价单-清单附件列表
|
||||
getQuotXjFileList(){
|
||||
const param = {relationId:this.form.quotId,fileType:'quotXjFile'}
|
||||
quotFileList(param).then(response => {
|
||||
this.quotXjFileList = response.rows;
|
||||
});
|
||||
},
|
||||
|
||||
//操作人、审核人、组长 确认事件
|
||||
doOperate(quotJsxzGroup,type,state){
|
||||
|
|
Loading…
Reference in New Issue