This commit is contained in:
xd 2024-04-16 15:55:02 +08:00
parent efa2e9a5b1
commit f48c665c41
13 changed files with 1039 additions and 57 deletions

View File

@ -0,0 +1,104 @@
package com.ruoyi.web.controller.priceVerification;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
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.priceVerification.domain.QuotHj;
import com.ruoyi.priceVerification.service.IQuotHjService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* 报价单-核价单Controller
*
* @author ruoyi
* @date 2024-04-16
*/
@RestController
@RequestMapping("/priceVerification/priceVerification")
public class QuotHjController extends BaseController
{
@Autowired
private IQuotHjService quotHjService;
/**
* 查询报价单-核价单列表
*/
@PreAuthorize("@ss.hasPermi('priceVerification:priceVerification:list')")
@GetMapping("/list")
public TableDataInfo list(QuotHj quotHj)
{
startPage();
List<QuotHj> list = quotHjService.selectQuotHjList(quotHj);
return getDataTable(list);
}
/**
* 导出报价单-核价单列表
*/
@PreAuthorize("@ss.hasPermi('priceVerification:priceVerification:export')")
@Log(title = "报价单-核价单", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, QuotHj quotHj)
{
List<QuotHj> list = quotHjService.selectQuotHjList(quotHj);
ExcelUtil<QuotHj> util = new ExcelUtil<QuotHj>(QuotHj.class);
util.exportExcel(response, list, "报价单-核价单数据");
}
/**
* 获取报价单-核价单详细信息
*/
@PreAuthorize("@ss.hasPermi('priceVerification:priceVerification:query')")
@GetMapping(value = "/{quotHjId}")
public AjaxResult getInfo(@PathVariable("quotHjId") String quotHjId)
{
return success(quotHjService.selectQuotHjByQuotHjId(quotHjId));
}
/**
* 新增报价单-核价单
*/
@PreAuthorize("@ss.hasPermi('priceVerification:priceVerification:add')")
@Log(title = "报价单-核价单", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody QuotHj quotHj)
{
return toAjax(quotHjService.insertQuotHj(quotHj));
}
/**
* 修改报价单-核价单
*/
@PreAuthorize("@ss.hasPermi('priceVerification:priceVerification:edit')")
@Log(title = "报价单-核价单", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody QuotHj quotHj)
{
return toAjax(quotHjService.updateQuotHj(quotHj));
}
/**
* 删除报价单-核价单
*/
@PreAuthorize("@ss.hasPermi('priceVerification:priceVerification:remove')")
@Log(title = "报价单-核价单", businessType = BusinessType.DELETE)
@DeleteMapping("/{quotHjIds}")
public AjaxResult remove(@PathVariable String[] quotHjIds)
{
return toAjax(quotHjService.deleteQuotHjByQuotHjIds(quotHjIds));
}
}

View File

@ -1,6 +1,5 @@
package com.ruoyi.web.controller.quot;
import java.util.Arrays;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
@ -9,6 +8,8 @@ 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.priceVerification.domain.QuotHj;
import com.ruoyi.priceVerification.service.IQuotHjService;
import com.ruoyi.quot.domain.QuotFile;
import com.ruoyi.quot.service.IQuotFileService;
import com.ruoyi.technicalConfirm.domain.QuotJsqr;
@ -46,6 +47,10 @@ public class QuotController extends BaseController
@Autowired
private IQuotJsqrService quotJsqrService;
@Autowired
private IQuotHjService quotHjService;
/**
* 查询报价列表
@ -121,7 +126,7 @@ public class QuotController extends BaseController
}
/**
*
* 上传报价附件
* @param file 文件对象
* @param relation_id 关联业务表Id
* @param file_type 文件类别
@ -275,18 +280,43 @@ public class QuotController extends BaseController
return success();
}
/**
* 报价单提交核价协助
*/
@PreAuthorize("@ss.hasPermi('quot:quot:assistHj')")
@Log(title = "报价单提交核价协助", businessType = BusinessType.OTHER)
@PostMapping("/commitHjQuot")
public AjaxResult commitHjQuot(@RequestBody Quot quot)
{
QuotHj quotHj = new QuotHj();
String quotHjId = UUID.fastUUID().toString();
quotHj.setQuotHjId(quotHjId);
quotHj.setQuotHjCode(IdUtils.createNo("BJD_HJ_",2));
quotHj.setCreateBy(getUsername());
quotHj.setUpdateBy(getUsername());
quotHjService.insertQuotHj(quotHj);//生成报价单-核价单
quot.setQuotHjId(quotHjId);
quot.setQuotHjApprovalStatus("1");//报价单-核价单 状态设置为 协助中
quotService.updateQuot(quot);
return success();
}
/**
* 报价组提交反馈
*/
@PreAuthorize("@ss.hasPermi('quot:quot:feedback')")
@Log(title = "报价组提交反馈", businessType = BusinessType.OTHER)
@Log(title = "报价组-报价单提交反馈", businessType = BusinessType.OTHER)
@PostMapping("/feedbackQuot")
public AjaxResult feedbackQuot(@RequestBody Quot quot)
{
String quot_id = quot.getQuotId();
Quot info = quotService.selectQuotByQuotId(quot_id);
String quot_jsxz_approval_status = quot.getQuotId();
String quot_jsxz_approval_status = quot.getQuotJsxzApprovalStatus();
if("1".equals(quot_jsxz_approval_status)){
return error("技术协助还未完成");
}else{
@ -296,4 +326,23 @@ public class QuotController extends BaseController
return success();
}
/**
* 报价组驳回
*/
@PreAuthorize("@ss.hasPermi('quot:quot:reject')")
@Log(title = "报价组-报价单驳回", businessType = BusinessType.OTHER)
@PostMapping("/rejectQuot")
public AjaxResult rejectQuot(@RequestBody Quot quot)
{
String quot_id = quot.getQuotId();
Quot info = quotService.selectQuotByQuotId(quot_id);
String quot_feedback_explanation = quot.getQuotFeedbackExplanation();
if(StringUtils.isEmpty(quot_feedback_explanation)){
return error("反馈说明不能为空");
}
info.setQuotApprovalStatus("3");
quotService.updateQuot(info);
return success();
}
}

View File

@ -0,0 +1,89 @@
package com.ruoyi.priceVerification.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;
/**
* 报价单-核价单对象 quot_hj
*
* @author ruoyi
* @date 2024-04-16
*/
public class QuotHj extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 核价单Id */
private String quotHjId;
/** 核价单号 */
@Excel(name = "核价单号")
private String quotHjCode;
/** 核价类型 */
@Excel(name = "核价类型")
private String quotHjPricingType;
/** 核价日期 */
@Excel(name = "核价日期")
private String quotHjPricingDate;
/** 备注 */
@Excel(name = "备注")
private String quotHjRemark;
/** 备注 */
@Excel(name = "核价协助状态")
private String quotHjApprovalStatus;
public void setQuotHjId(String quotHjId)
{
this.quotHjId = quotHjId;
}
public String getQuotHjId()
{
return quotHjId;
}
public void setQuotHjCode(String quotHjCode)
{
this.quotHjCode = quotHjCode;
}
public String getQuotHjCode()
{
return quotHjCode;
}
public void setQuotHjPricingType(String quotHjPricingType)
{
this.quotHjPricingType = quotHjPricingType;
}
public String getQuotHjPricingType()
{
return quotHjPricingType;
}
public void setQuotHjPricingDate(String quotHjPricingDate)
{
this.quotHjPricingDate = quotHjPricingDate;
}
public String getQuotHjPricingDate()
{
return quotHjPricingDate;
}
public void setQuotHjRemark(String quotHjRemark)
{
this.quotHjRemark = quotHjRemark;
}
public String getQuotHjRemark()
{
return quotHjRemark;
}
public String getQuotHjApprovalStatus() { return quotHjApprovalStatus; }
public void setQuotHjApprovalStatus(String quotHjApprovalStatus) { this.quotHjApprovalStatus = quotHjApprovalStatus; }
}

View File

@ -0,0 +1,61 @@
package com.ruoyi.priceVerification.mapper;
import java.util.List;
import com.ruoyi.priceVerification.domain.QuotHj;
/**
* 报价单-核价单Mapper接口
*
* @author ruoyi
* @date 2024-04-16
*/
public interface QuotHjMapper
{
/**
* 查询报价单-核价单
*
* @param quotHjId 报价单-核价单主键
* @return 报价单-核价单
*/
public QuotHj selectQuotHjByQuotHjId(String quotHjId);
/**
* 查询报价单-核价单列表
*
* @param quotHj 报价单-核价单
* @return 报价单-核价单集合
*/
public List<QuotHj> selectQuotHjList(QuotHj quotHj);
/**
* 新增报价单-核价单
*
* @param quotHj 报价单-核价单
* @return 结果
*/
public int insertQuotHj(QuotHj quotHj);
/**
* 修改报价单-核价单
*
* @param quotHj 报价单-核价单
* @return 结果
*/
public int updateQuotHj(QuotHj quotHj);
/**
* 删除报价单-核价单
*
* @param quotHjId 报价单-核价单主键
* @return 结果
*/
public int deleteQuotHjByQuotHjId(String quotHjId);
/**
* 批量删除报价单-核价单
*
* @param quotHjIds 需要删除的数据主键集合
* @return 结果
*/
public int deleteQuotHjByQuotHjIds(String[] quotHjIds);
}

View File

@ -0,0 +1,61 @@
package com.ruoyi.priceVerification.service;
import java.util.List;
import com.ruoyi.priceVerification.domain.QuotHj;
/**
* 报价单-核价单Service接口
*
* @author ruoyi
* @date 2024-04-16
*/
public interface IQuotHjService
{
/**
* 查询报价单-核价单
*
* @param quotHjId 报价单-核价单主键
* @return 报价单-核价单
*/
public QuotHj selectQuotHjByQuotHjId(String quotHjId);
/**
* 查询报价单-核价单列表
*
* @param quotHj 报价单-核价单
* @return 报价单-核价单集合
*/
public List<QuotHj> selectQuotHjList(QuotHj quotHj);
/**
* 新增报价单-核价单
*
* @param quotHj 报价单-核价单
* @return 结果
*/
public int insertQuotHj(QuotHj quotHj);
/**
* 修改报价单-核价单
*
* @param quotHj 报价单-核价单
* @return 结果
*/
public int updateQuotHj(QuotHj quotHj);
/**
* 批量删除报价单-核价单
*
* @param quotHjIds 需要删除的报价单-核价单主键集合
* @return 结果
*/
public int deleteQuotHjByQuotHjIds(String[] quotHjIds);
/**
* 删除报价单-核价单信息
*
* @param quotHjId 报价单-核价单主键
* @return 结果
*/
public int deleteQuotHjByQuotHjId(String quotHjId);
}

View File

@ -0,0 +1,96 @@
package com.ruoyi.priceVerification.service.impl;
import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.priceVerification.mapper.QuotHjMapper;
import com.ruoyi.priceVerification.domain.QuotHj;
import com.ruoyi.priceVerification.service.IQuotHjService;
/**
* 报价单-核价单Service业务层处理
*
* @author ruoyi
* @date 2024-04-16
*/
@Service
public class QuotHjServiceImpl implements IQuotHjService
{
@Autowired
private QuotHjMapper quotHjMapper;
/**
* 查询报价单-核价单
*
* @param quotHjId 报价单-核价单主键
* @return 报价单-核价单
*/
@Override
public QuotHj selectQuotHjByQuotHjId(String quotHjId)
{
return quotHjMapper.selectQuotHjByQuotHjId(quotHjId);
}
/**
* 查询报价单-核价单列表
*
* @param quotHj 报价单-核价单
* @return 报价单-核价单
*/
@Override
public List<QuotHj> selectQuotHjList(QuotHj quotHj)
{
return quotHjMapper.selectQuotHjList(quotHj);
}
/**
* 新增报价单-核价单
*
* @param quotHj 报价单-核价单
* @return 结果
*/
@Override
public int insertQuotHj(QuotHj quotHj)
{
quotHj.setCreateTime(DateUtils.getNowDate());
return quotHjMapper.insertQuotHj(quotHj);
}
/**
* 修改报价单-核价单
*
* @param quotHj 报价单-核价单
* @return 结果
*/
@Override
public int updateQuotHj(QuotHj quotHj)
{
quotHj.setUpdateTime(DateUtils.getNowDate());
return quotHjMapper.updateQuotHj(quotHj);
}
/**
* 批量删除报价单-核价单
*
* @param quotHjIds 需要删除的报价单-核价单主键
* @return 结果
*/
@Override
public int deleteQuotHjByQuotHjIds(String[] quotHjIds)
{
return quotHjMapper.deleteQuotHjByQuotHjIds(quotHjIds);
}
/**
* 删除报价单-核价单信息
*
* @param quotHjId 报价单-核价单主键
* @return 结果
*/
@Override
public int deleteQuotHjByQuotHjId(String quotHjId)
{
return quotHjMapper.deleteQuotHjByQuotHjId(quotHjId);
}
}

View File

@ -119,6 +119,13 @@ public class Quot extends BaseEntity
private String quotJsqrQtApprovalStatus;//技术协助-其他协助状态
private String quotJsqrQtRemark;//技术协助-其他协助说明
/** 核价 */
private String quotHjId;//核价单id
private String quotHjCode;//核价单号
private String quotHjApprovalStatus;//核价协助状态
private String quotHjPricingDate;//核价日期
private String quotHjRemark;//核价备注
/** 报价单-产品信息 */
private List<QuotMaterial> quotMaterialList;
@ -352,4 +359,19 @@ public class Quot extends BaseEntity
public String getQuotJsqrQtRemark() { return quotJsqrQtRemark; }
public void setQuotJsqrQtRemark(String quotJsqrQtRemark) { this.quotJsqrQtRemark = quotJsqrQtRemark; }
public String getQuotHjId() { return quotHjId; }
public void setQuotHjId(String quotHjId) { this.quotHjId = quotHjId; }
public String getQuotHjCode() { return quotHjCode; }
public void setQuotHjCode(String quotHjCode) { this.quotHjCode = quotHjCode; }
public String getQuotHjApprovalStatus() { return quotHjApprovalStatus; }
public void setQuotHjApprovalStatus(String quotHjApprovalStatus) { this.quotHjApprovalStatus = quotHjApprovalStatus; }
public String getQuotHjPricingDate() { return quotHjPricingDate; }
public void setQuotHjPricingDate(String quotHjPricingDate) { this.quotHjPricingDate = quotHjPricingDate; }
public String getQuotHjRemark() { return quotHjRemark; }
public void setQuotHjRemark(String quotHjRemark) { this.quotHjRemark = quotHjRemark; }
}

View File

@ -0,0 +1,87 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.priceVerification.mapper.QuotHjMapper">
<resultMap type="QuotHj" id="QuotHjResult">
<result property="quotHjId" column="quot_hj_id" />
<result property="quotHjCode" column="quot_hj_code" />
<result property="quotHjPricingType" column="quot_hj_pricing_type" />
<result property="quotHjPricingDate" column="quot_hj_pricing_date" />
<result property="quotHjRemark" column="quot_hj_remark" />
<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="selectQuotHjVo">
select quot_hj_id, quot_hj_code, quot_hj_pricing_type, quot_hj_pricing_date, quot_hj_remark, create_by, create_time, update_by, update_time from quot_hj
</sql>
<select id="selectQuotHjList" parameterType="QuotHj" resultMap="QuotHjResult">
<include refid="selectQuotHjVo"/>
<where>
<if test="quotHjCode != null and quotHjCode != ''"> and quot_hj_code like concat('%', #{quotHjCode}, '%')</if>
<if test="params.beginQuotHjPricingDate != null and params.beginQuotHjPricingDate != '' and params.endQuotHjPricingDate != null and params.endQuotHjPricingDate != ''"> and quot_hj_pricing_date between #{params.beginQuotHjPricingDate} and #{params.endQuotHjPricingDate}</if>
</where>
</select>
<select id="selectQuotHjByQuotHjId" parameterType="String" resultMap="QuotHjResult">
<include refid="selectQuotHjVo"/>
where quot_hj_id = #{quotHjId}
</select>
<insert id="insertQuotHj" parameterType="QuotHj">
insert into quot_hj
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="quotHjId != null">quot_hj_id,</if>
<if test="quotHjCode != null">quot_hj_code,</if>
<if test="quotHjPricingType != null">quot_hj_pricing_type,</if>
<if test="quotHjPricingDate != null">quot_hj_pricing_date,</if>
<if test="quotHjRemark != null">quot_hj_remark,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="quotHjId != null">#{quotHjId},</if>
<if test="quotHjCode != null">#{quotHjCode},</if>
<if test="quotHjPricingType != null">#{quotHjPricingType},</if>
<if test="quotHjPricingDate != null">#{quotHjPricingDate},</if>
<if test="quotHjRemark != null">#{quotHjRemark},</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="updateQuotHj" parameterType="QuotHj">
update quot_hj
<trim prefix="SET" suffixOverrides=",">
<if test="quotHjCode != null">quot_hj_code = #{quotHjCode},</if>
<if test="quotHjPricingType != null">quot_hj_pricing_type = #{quotHjPricingType},</if>
<if test="quotHjPricingDate != null">quot_hj_pricing_date = #{quotHjPricingDate},</if>
<if test="quotHjRemark != null">quot_hj_remark = #{quotHjRemark},</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 quot_hj_id = #{quotHjId}
</update>
<delete id="deleteQuotHjByQuotHjId" parameterType="String">
delete from quot_hj where quot_hj_id = #{quotHjId}
</delete>
<delete id="deleteQuotHjByQuotHjIds" parameterType="String">
delete from quot_hj where quot_hj_id in
<foreach item="quotHjId" collection="array" open="(" separator="," close=")">
#{quotHjId}
</foreach>
</delete>
</mapper>

View File

@ -49,6 +49,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="quotJsqrQtApprovalStatus" column="quot_jsqr_qt_approval_status" />
<result property="quotJsqrQtRemark" column="quot_jsqr_qt_remark" />
<result property="quotHjId" column="quot_ht_id" />
<result property="quotHjCode" column="quot_hj_code" />
<result property="quotHjApprovalStatus" column="quot_hj_approval_status" />
<result property="quotHjPricingDate" column="quot_hj_pricing_date" />
<result property="quotHjRemark" column="quot_hj_remark" />
</resultMap>
<resultMap id="QuotQuotMaterialResult" type="Quot" extends="QuotResult">
@ -69,6 +75,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
left join sys_user u on u.user_name=a.create_by
left join sys_dept d on u.dept_id = d.dept_id
left join quot_jsqr q on q.quot_jsqr_id = a.quot_jsxz_confirm_id
left join quot_hj h on h.quot_hj_id = a.quot_ht_id
</sql>
<sql id="selectQuotVo">
@ -85,7 +92,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
q.quot_jsqr_tl_approval_status,q.quot_jsqr_tl_remark,
q.quot_jsqr_dy_approval_status,q.quot_jsqr_dy_remark,
q.quot_jsqr_zy_approval_status,q.quot_jsqr_zy_remark,
q.quot_jsqr_qt_approval_status,q.quot_jsqr_qt_remark
q.quot_jsqr_qt_approval_status,q.quot_jsqr_qt_remark,
a.quot_ht_id,a.quot_hj_approval_status,
h.quot_hj_code,h.quot_hj_pricing_date,
h.quot_hj_remark
from quot a
<include refid="quotJoins"/>
</sql>
@ -109,13 +121,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
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, a.quot_check_user_nickname, a.quot_approval_status,
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,
a.quot_jsxz_technical_requirement,a.quot_jsxz_group_values,a.quot_jsxz_confirm_id,
a.quot_jsxz_standard,a.quot_jsxz_approval_status,a.quot_jsxz_chapter,
a.quot_jsxz_technical_requirement,a.quot_jsxz_group_values,a.quot_jsxz_confirm_id,
q.quot_jsqr_code quot_jsxz_confirm_code,
q.quot_jsqr_tl_approval_status,q.quot_jsqr_tl_remark,
q.quot_jsqr_dy_approval_status,q.quot_jsqr_dy_remark,
q.quot_jsqr_zy_approval_status,q.quot_jsqr_zy_remark,
q.quot_jsqr_qt_approval_status,q.quot_jsqr_qt_remark,
a.quot_ht_id,a.quot_hj_approval_status,
h.quot_hj_code,h.quot_hj_pricing_date,
h.quot_hj_remark,
b.mat_id as sub_mat_id, b.mat_xingh as sub_mat_xingh, b.mat_guig as sub_mat_guig,
b.mat_diany as sub_mat_diany, b.mat_danw as sub_mat_danw, b.mat_sl as sub_mat_sl,
b.quot_id as sub_quot_id
@ -160,6 +178,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<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="quotHjId != null">quot_ht_id,</if>
<if test="quotHjApprovalStatus != null">quot_hj_approval_status,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="quotId != null and quotId != ''">#{quotId},</if>
@ -194,6 +215,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="quotJsxzTechnicalRequirement != null">#{quotJsxzTechnicalRequirement},</if>
<if test="quotJsxzGroupValues != null">#{quotJsxzGroupValues},</if>
<if test="quotJsxzConfirmId != null">#{quotJsxzConfirmId},</if>
<if test="quotHjId != null">#{quotHjId},</if>
<if test="quotHjApprovalStatus != null">#{quotHjApprovalStatus},</if>
</trim>
</insert>
@ -231,6 +255,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<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="quotHjId != null">quot_ht_id = #{quotHjId},</if>
<if test="quotHjApprovalStatus != null">quot_hj_approval_status = #{quotHjApprovalStatus},</if>
</trim>
where quot_id = #{quotId}
</update>

View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询报价单-核价单列表
export function listPriceVerification(query) {
return request({
url: '/priceVerification/priceVerification/list',
method: 'get',
params: query
})
}
// 查询报价单-核价单详细
export function getPriceVerification(quotHjId) {
return request({
url: '/priceVerification/priceVerification/' + quotHjId,
method: 'get'
})
}
// 新增报价单-核价单
export function addPriceVerification(data) {
return request({
url: '/priceVerification/priceVerification',
method: 'post',
data: data
})
}
// 修改报价单-核价单
export function updatePriceVerification(data) {
return request({
url: '/priceVerification/priceVerification',
method: 'put',
data: data
})
}
// 删除报价单-核价单
export function delPriceVerification(quotHjId) {
return request({
url: '/priceVerification/priceVerification/' + quotHjId,
method: 'delete'
})
}

View File

@ -79,6 +79,15 @@ export function commitJsQuot(data) {
})
}
//提交核价协助
export function commitHjQuot(data) {
return request({
url: '/quot/quot/commitHjQuot',
method: 'post',
data: data
})
}
//提交反馈按钮
export function feedbackQuot(data) {
return request({
@ -88,5 +97,14 @@ export function feedbackQuot(data) {
})
}
//驳回按钮
export function rejectQuot(data) {
return request({
url: '/quot/quot/rejectQuot',
method: 'post',
data: data
})
}

View File

@ -0,0 +1,290 @@
<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="quotHjCode">
<el-input
v-model="queryParams.quotHjCode"
placeholder="请输入核价单号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="核价日期">
<el-date-picker
v-model="daterangeQuotHjPricingDate"
style="width: 240px"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item>
<el-form-item>
<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="['priceVerification:priceVerification: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="['priceVerification:priceVerification: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="['priceVerification:priceVerification: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="['priceVerification:priceVerification:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="priceVerificationList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="核价单Id" align="center" prop="quotHjId" />
<el-table-column label="核价单号" align="center" prop="quotHjCode" />
<el-table-column label="核价类型" align="center" prop="quotHjPricingType" />
<el-table-column label="核价日期" align="center" prop="quotHjPricingDate" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.quotHjPricingDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="quotHjRemark" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['priceVerification:priceVerification:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['priceVerification:priceVerification:remove']"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<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="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="核价单号" prop="quotHjCode">
<el-input v-model="form.quotHjCode" placeholder="请输入核价单号" />
</el-form-item>
<el-form-item label="核价日期" prop="quotHjPricingDate">
<el-date-picker clearable
v-model="form.quotHjPricingDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择核价日期">
</el-date-picker>
</el-form-item>
<el-form-item label="备注" prop="quotHjRemark">
<el-input v-model="form.quotHjRemark" placeholder="请输入备注" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listPriceVerification, getPriceVerification, delPriceVerification, addPriceVerification, updatePriceVerification } from "@/api/priceVerification/priceVerification";
export default {
name: "PriceVerification",
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
// -
priceVerificationList: [],
//
title: "",
//
open: false,
//
daterangeQuotHjPricingDate: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
quotHjCode: null,
quotHjPricingDate: null,
},
//
form: {},
//
rules: {
}
};
},
created() {
this.getList();
},
methods: {
/** 查询报价单-核价单列表 */
getList() {
this.loading = true;
this.queryParams.params = {};
if (null != this.daterangeQuotHjPricingDate && '' != this.daterangeQuotHjPricingDate) {
this.queryParams.params["beginQuotHjPricingDate"] = this.daterangeQuotHjPricingDate[0];
this.queryParams.params["endQuotHjPricingDate"] = this.daterangeQuotHjPricingDate[1];
}
listPriceVerification(this.queryParams).then(response => {
this.priceVerificationList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
quotHjId: null,
quotHjCode: null,
quotHjPricingType: null,
quotHjPricingDate: null,
quotHjRemark: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.daterangeQuotHjPricingDate = [];
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.quotHjId)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加报价单-核价单";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const quotHjId = row.quotHjId || this.ids
getPriceVerification(quotHjId).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改报价单-核价单";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.quotHjId != null) {
updatePriceVerification(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addPriceVerification(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const quotHjIds = row.quotHjId || this.ids;
this.$modal.confirm('是否确认删除报价单-核价单编号为"' + quotHjIds + '"的数据项?').then(function() {
return delPriceVerification(quotHjIds);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('priceVerification/priceVerification/export', {
...this.queryParams
}, `priceVerification_${new Date().getTime()}.xlsx`)
}
}
};
</script>

View File

@ -508,7 +508,59 @@
</el-row>
</div>
</el-tab-pane>
<el-tab-pane label="反馈附件" name="quotFkFile" v-if="checkPermi(['quot:quot:assist','quot:quot:add'])">
<el-tab-pane label="核价" name="quotHjInfo" style="width:98%" v-if="checkPermi(['quot:quot:assistHj'])">
<el-row :gutter="8">
<el-col :span="8">
<el-form-item label="核价单号" prop="quotHjCode">
<el-input v-model="form.quotHjCode" :disabled="true" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="核价日期" prop="quotHjPricingDate">
<el-input v-model="form.quotHjPricingDate" :disabled="true" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="核价确认状态" prop="quotHjApprovalStatus">
<el-select v-model="form.quotHjApprovalStatus" :disabled="true">
<el-option
v-for="dict in dict.type.quot_hj_approval_status"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="8">
<el-col :span="24">
<el-form-item label="核价附件"></el-form-item>
</el-col>
</el-row>
<el-row :gutter="8">
<el-col :span="24">
<el-table class="down" :data="quotHjFileList" 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-tab-pane>
<el-tab-pane label="反馈附件" name="quotFkFile" v-if="checkPermi(['quot:quot:assist','quot:quot:assistHj','quot:quot:add'])">
<div v-hasPermi="['quot:quot:assist']">
<el-upload class="upload-demo"
ref="upload"
@ -582,9 +634,12 @@
<div slot="footer" class="dialog-footer">
<span v-hasPermi="['quot:quot:save']"><el-button @click="saveForm" v-if="this.form.quotApprovalStatus == '0' || this.form.quotApprovalStatus == null"> </el-button></span>
<span style="margin-left: 10px" v-hasPermi="['quot:quot:commit']"><el-button type="primary" plain @click="commitForm" v-if="this.form.quotApprovalStatus == '0' || this.form.quotApprovalStatus == null"> </el-button></span>
<span v-hasPermi="['quot:quot:assist']"><el-button type="primary" plain @click="commitJsForm" v-if="this.form.quotJsxzApprovalStatus == '0'">提交技术协助</el-button></span>
<span v-hasPermi="['quot:quot:feedback']"><el-button type="primary" plain @click="feedbackQuotForm" v-if="this.form.quotApprovalStatus == '1'&&this.form.quotJsxzApprovalStatus != '1'">提交反馈</el-button></span>
<span style="margin-left: 10px" v-hasPermi="['quot:quot:reject']"><el-button type="danger" plain @click="rejectQuotForm" v-if="this.form.quotApprovalStatus == '1'&&this.form.quotJsxzApprovalStatus != '1'">驳回</el-button></span>
<span style="margin-left: 10px" v-hasPermi="['quot:quot:assistHj']"><el-button type="primary" plain @click="commitHjForm" v-if="this.form.quotHjApprovalStatus == '0'">提交核价审核</el-button></span>
<span style="margin-left: 10px" v-hasPermi="['quot:quot:feedback']"><el-button type="primary" plain @click="feedbackQuotForm" v-if="this.form.quotApprovalStatus == '1'&&this.form.quotJsxzApprovalStatus != '1'">提交反馈</el-button></span>
<span style="margin-left: 10px" v-hasPermi="['quot:quot:reject']"><el-button type="danger" plain @click="rejectQuotForm" v-if="this.form.quotApprovalStatus == '1'&&this.form.quotJsxzApprovalStatus != '1'">驳回</el-button></span>
</div>
</el-dialog>
</div>
@ -616,13 +671,13 @@
}
</style>
<script>
import { listQuot, getQuot, delQuot, addQuot, updateQuot, quotFileList, quotFileDelete, commitQuot, commitJsQuot, feedbackQuot } from "@/api/quot/quot";
import { listQuot, getQuot, delQuot, addQuot, updateQuot, quotFileList, quotFileDelete, commitQuot, commitJsQuot, commitHjQuot, feedbackQuot, rejectQuot } from "@/api/quot/quot";
import { getToken } from "@/utils/auth";
import { checkPermi } from '@/utils/permission' //
export default {
name: "Quot",
dicts: ['quot_approval_status','quot_jsxz_group','quot_jsxz_chapter','quot_jsxz_approval_status','quot_jsxz_standard'],
dicts: ['quot_approval_status','quot_jsxz_group','quot_jsxz_chapter','quot_jsxz_approval_status','quot_jsxz_standard','quot_hj_approval_status'],
data() {
return {
//
@ -666,12 +721,14 @@ export default {
addFileTitle: "",
//
uploadDis: false,
//
//
quotJsqrFileList: [],
quotJsqrTlFileNum: 0,
quotJsqrDyFileNum: 0,
quotJsqrZyFileNum: 0,
quotJsqrQtFileNum: 0,
//
quotHjFileList: [],
//
fileType: null,
//
@ -721,48 +778,7 @@ export default {
this.loading = false;
});
},
//
reset() {
this.form = {
quotId: null,
quotCode: null,
quotSalesmanBm: null,
quotSalesmanName: null,
quotCustomerBm: null,
quotCustomerName: null,
quotSalesmanDeptId: null,
quotSalesmanDeptName: null,
quotAddress: null,
quotPhone: null,
quotInquiryDate: null,
quotProject: null,
quotQuotationDate: null,
quotQuotationFrom: null,
quotQuotationRequire: null,
quotFeedbackExplanation: null,
quotQuantity: null,
quotTotalPrice: null,
quotCheckUserName: null,
quotCheckUserNickname: null,
quotApprovalStatus: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
quotJsxzStandard: null,
quotJsxzApprovalStatus: null,
quotJsxzChapter: null,
quotJsxzTechnicalRequirement: null,
quotJsxzGroup: [],
quotJsxzGroupValues: null
};
this.quotMaterialList = [];
this.quotXjFileList = [];
this.quotFkFileList = [];
this.quotJsgfFileList = [];
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
@ -781,7 +797,6 @@ export default {
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "报价信息";
this.activeName = "quotInfo";
@ -795,7 +810,6 @@ export default {
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const quotId = row.quotId || this.ids
getQuot(quotId).then(response => {
this.form = response.data;
@ -877,7 +891,18 @@ export default {
});
},
/** 报价组提交反馈按钮 */
/** 报价组提交核价协助按钮 */
commitHjForm() {
this.form.quotMaterialList = this.quotMaterialList;
commitHjQuot(this.form).then(response => {
this.$modal.msgSuccess("提交核价协助成功");
this.open = false;
this.getList();
});
},
/** 报价组报价单提交反馈按钮 */
feedbackQuotForm() {
var quotFkFileNum = this.quotFkFileList.length;
if(quotFkFileNum==0){
@ -891,6 +916,15 @@ export default {
});
},
/** 报价组报价单驳回按钮 */
rejectQuotForm() {
rejectQuot(this.form).then(response => {
this.$modal.msgSuccess("驳回成功");
this.open = false;
this.getList();
});
},
/** 删除按钮操作 */
handleDelete(row) {