This commit is contained in:
xd 2024-05-15 11:16:04 +08:00
parent f2aee0c152
commit f38e49bb48
5 changed files with 65 additions and 28 deletions

View File

@ -291,6 +291,7 @@ public class RedBookController extends BaseController
@PostMapping("/updateSelectedResultData") @PostMapping("/updateSelectedResultData")
public AjaxResult updateSelectedResultData(@RequestBody List<OAQuotProduct> params) public AjaxResult updateSelectedResultData(@RequestBody List<OAQuotProduct> params)
{ {
List<OAQuotProduct> oaQuotProducts = redBookService.queryRedBPriceByParams(params); List<OAQuotProduct> oaQuotProducts = redBookService.queryRedBPriceByParams(params);
logger.info("根据选择的调价日期 匹配数据结果: {}", oaQuotProducts); logger.info("根据选择的调价日期 匹配数据结果: {}", oaQuotProducts);
return success(oaQuotProducts); return success(oaQuotProducts);

View File

@ -1,5 +1,6 @@
package com.ruoyi.web.controller.redBook; package com.ruoyi.web.controller.redBook;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.redBook.domain.OAQuot; import com.ruoyi.redBook.domain.OAQuot;
import com.ruoyi.redBook.domain.OAQuotProduct; import com.ruoyi.redBook.domain.OAQuotProduct;
import jxl.HeaderFooter; import jxl.HeaderFooter;
@ -80,7 +81,17 @@ public class excelUtil {
wff_merge = new WritableCellFormat(wf_merge); wff_merge = new WritableCellFormat(wf_merge);
wff_merge.setAlignment(Alignment.LEFT); wff_merge.setAlignment(Alignment.LEFT);
wsheet.setRowView(i,380); wsheet.setRowView(i,380);
String[] bjs = {"询价单位:"+quot.getQuotCustomer(),"业务联系人:"+quot.getQuotLxr(),"项目名称:"+quot.getQuotProject(),"联 系 电 话:"+quot.getQuotLxrdh(),"询价日期:","编 制:","报价日期:","审 核:"};
String QuotCustomer = quot.getQuotCustomer();
QuotCustomer = StringUtils.isEmpty(QuotCustomer)?"":QuotCustomer;
String QuotProject = quot.getQuotProject();
QuotProject = StringUtils.isEmpty(QuotProject)?"":QuotProject;
String QuotLxr = quot.getQuotLxr();
QuotLxr = StringUtils.isEmpty(QuotLxr)?"":QuotLxr;
String QuotLxrdh = quot.getQuotLxrdh();
QuotLxrdh = StringUtils.isEmpty(QuotLxrdh)?"":QuotLxrdh;
String[] bjs = {"询价单位:"+QuotCustomer,"业务联系人:"+QuotLxr,"项目名称:"+QuotProject,"联 系 电 话:"+QuotLxrdh,"询价日期:","编 制:","报价日期:","审 核:"};
int k=0; int k=0;
while(k<bjs.length){ while(k<bjs.length){
wsheet.mergeCells(0,i,3,i); wsheet.mergeCells(0,i,3,i);
@ -189,15 +200,15 @@ public class excelUtil {
if(list.size()<=2000) if(list.size()<=2000)
{ {
wsheet.mergeCells(1,i,6,i); wsheet.mergeCells(0,i,6,i);
wsheet.setRowView(i,400); wsheet.setRowView(i,400);
wf_merge = new WritableFont(WritableFont.ARIAL,11,WritableFont.NO_BOLD,false); wf_merge = new WritableFont(WritableFont.ARIAL,11,WritableFont.NO_BOLD,false);
wff_merge = new WritableCellFormat(wf_merge); wff_merge = new WritableCellFormat(wf_merge);
wff_merge.setAlignment(Alignment.LEFT); wff_merge.setAlignment(Alignment.LEFT);
wff_merge.setBorder(Border.ALL, BorderLineStyle.THIN); wff_merge.setBorder(Border.ALL, BorderLineStyle.THIN);
label = new Label(0, i, "",wff_merge); /*label = new Label(0, i, "",wff_merge);
wsheet.addCell(label); wsheet.addCell(label);*/
label = new Label(1, i, " 合计(元)",wff_merge); label = new Label(0, i, " 合计(元)",wff_merge);
wsheet.addCell(label); wsheet.addCell(label);
label = new Label(7, i, " "+totalmoney,wff_merge); label = new Label(7, i, " "+totalmoney,wff_merge);
wsheet.addCell(label); wsheet.addCell(label);
@ -245,13 +256,13 @@ public class excelUtil {
// label = new Label(1, i, "4、产品交货总数和单根交货长度允许有±1%公差,如有不符对方要求,需重制作报价单。",wff_merge); // label = new Label(1, i, "4、产品交货总数和单根交货长度允许有±1%公差,如有不符对方要求,需重制作报价单。",wff_merge);
wsheet.addCell(label);*/ wsheet.addCell(label);*/
wsheet.mergeCells(0,i-4,0,i); wsheet.mergeCells(0,i-3,0,i);
wf_merge = new WritableFont(WritableFont.ARIAL,11,WritableFont.NO_BOLD,false); wf_merge = new WritableFont(WritableFont.ARIAL,11,WritableFont.NO_BOLD,false);
wff_merge = new WritableCellFormat(wf_merge); wff_merge = new WritableCellFormat(wf_merge);
wff_merge.setAlignment(Alignment.CENTRE); wff_merge.setAlignment(Alignment.CENTRE);
wff_merge.setVerticalAlignment(VerticalAlignment.CENTRE); wff_merge.setVerticalAlignment(VerticalAlignment.CENTRE);
wff_merge.setBorder(Border.ALL, BorderLineStyle.THIN); wff_merge.setBorder(Border.ALL, BorderLineStyle.THIN);
label = new Label(0, i-4, "备注",wff_merge); label = new Label(0, i-3, "备注",wff_merge);
wsheet.addCell(label); wsheet.addCell(label);
// 获取当前类加载器 // 获取当前类加载器

View File

@ -3,6 +3,7 @@ package com.ruoyi.redBook.domain;
import java.math.BigDecimal; import java.math.BigDecimal;
public class OAQuotProduct { public class OAQuotProduct {
private Integer index;//序号
private String uid_0;//版本uid private String uid_0;//版本uid
private String name_0;//产品型号 private String name_0;//产品型号
private String name_1;//型号 private String name_1;//型号
@ -19,6 +20,10 @@ public class OAQuotProduct {
private BigDecimal per;//一次折扣 private BigDecimal per;//一次折扣
private BigDecimal per2;//二次折扣 private BigDecimal per2;//二次折扣
public Integer getIndex() { return index; }
public void setIndex(Integer index) { this.index = index; }
public String getUid_0() { return uid_0; } public String getUid_0() { return uid_0; }
public void setUid_0(String uid_0) { this.uid_0 = uid_0; } public void setUid_0(String uid_0) { this.uid_0 = uid_0; }

View File

@ -128,9 +128,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</update> </update>
<insert id="batchOAQuotProduct"> <insert id="batchOAQuotProduct">
insert into OAQuotProduct(quot_product_id, name_0, name_1, spec, voltage,stu,price,setPrice,count,allPrice,per,per2,quot_id) values insert into OAQuotProduct(quot_product_id, name_0, name_1, spec, voltage,stu,price,setPrice,count,allPrice,per,per2,quot_id,number) values
<foreach item="item" index="index" collection="list" separator=","> <foreach item="item" index="index" collection="list" separator=",">
( #{item.quot_product_id}, #{item.name_0}, #{item.name_1}, #{item.spec}, #{item.voltage}, #{item.stu},cast(#{item.price,jdbcType=DECIMAL} as decimal(18,2)),cast(#{item.setPrice,jdbcType=DECIMAL} as decimal(18,2)), cast(#{item.count,jdbcType=DECIMAL} as decimal(18,3)), cast(#{item.allPrice,jdbcType=DECIMAL} as decimal(18,2)),cast(#{item.per,jdbcType=DECIMAL} as decimal(18,2)),cast(#{item.per2,jdbcType=DECIMAL} as decimal(18,2)), #{item.quot_id}) ( #{item.quot_product_id}, #{item.name_0}, #{item.name_1}, #{item.spec}, #{item.voltage}, #{item.stu},cast(#{item.price,jdbcType=DECIMAL} as decimal(18,2)),cast(#{item.setPrice,jdbcType=DECIMAL} as decimal(18,2)), cast(#{item.count,jdbcType=DECIMAL} as decimal(18,3)), cast(#{item.allPrice,jdbcType=DECIMAL} as decimal(18,2)),cast(#{item.per,jdbcType=DECIMAL} as decimal(18,2)),cast(#{item.per2,jdbcType=DECIMAL} as decimal(18,2)), #{item.quot_id}, #{item.index})
</foreach> </foreach>
</insert> </insert>
@ -223,7 +223,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
b.per,b.per2,b.price,b.setPrice,b.count,b.allPrice,b.quot_id b.per,b.per2,b.price,b.setPrice,b.count,b.allPrice,b.quot_id
from OAQuot a from OAQuot a
left join OAQuotProduct b on b.quot_id = a.quot_id left join OAQuotProduct b on b.quot_id = a.quot_id
where a.quot_id = #{quotId} where a.quot_id = #{quotId} order by b.number
</select> </select>
<delete id="deleteQuotsByQuotId" parameterType="java.lang.String"> <delete id="deleteQuotsByQuotId" parameterType="java.lang.String">

View File

@ -8,6 +8,7 @@
<el-button style="float: right;" size="mini" type="primary" icon="el-icon-search" @click="handleSearchClick">搜索</el-button> <el-button style="float: right;" size="mini" type="primary" icon="el-icon-search" @click="handleSearchClick">搜索</el-button>
</el-col> </el-col>
<el-col :span="14"> <el-col :span="14">
<el-button size="mini" icon="el-icon-refresh" @click="handleRefreshClick">刷新</el-button>
<el-button style="float: right;margin-left: 5px;" size="mini" type="success" icon="el-icon-document" @click="handleMadeQuotClick" :disabled="selectedResultData.length==0">生成报价单</el-button> <el-button style="float: right;margin-left: 5px;" size="mini" type="success" icon="el-icon-document" @click="handleMadeQuotClick" :disabled="selectedResultData.length==0">生成报价单</el-button>
<el-button style="float: right;" size="mini" type="warning" icon="el-icon-folder" @click="handleSaveClick" :disabled="selectedResultData.length==0">保存</el-button> <el-button style="float: right;" size="mini" type="warning" icon="el-icon-folder" @click="handleSaveClick" :disabled="selectedResultData.length==0">保存</el-button>
</el-col> </el-col>
@ -73,29 +74,29 @@
<el-card id="scroll" class="box-card scrollable" :style="{'overflow': 'auto','max-height': scrollableHeight,'height': scrollableHeight}"> <el-card id="scroll" class="box-card scrollable" :style="{'overflow': 'auto','max-height': scrollableHeight,'height': scrollableHeight}">
<el-row :gutter="8"> <el-row :gutter="8">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="询价单位" prop="quotCustomer"> <el-form-item label="询价单位" prop="quotCustomer" style="margin-bottom: 10px;">
<el-input v-model="form.quotCustomer" placeholder="请输入询价单位" /> <el-input v-model="form.quotCustomer" placeholder="请输入询价单位" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="项目名称" prop="quotProject"> <el-form-item label="项目名称" prop="quotProject" style="margin-bottom: 10px;">
<el-input v-model="form.quotProject" placeholder="请输入项目名称"/> <el-input v-model="form.quotProject" placeholder="请输入项目名称"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="8"> <el-row :gutter="8">
<el-col :span="8"> <el-col :span="8">
<el-form-item label="联系人" prop="quotLxr"> <el-form-item label="联系人" prop="quotLxr" style="margin-bottom: 10px;">
<el-input v-model="form.quotLxr" placeholder="请输入联系人" /> <el-input v-model="form.quotLxr" placeholder="请输入联系人" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="联系电话" prop="quotLxrdh"> <el-form-item label="联系电话" prop="quotLxrdh" style="margin-bottom: 10px;">
<el-input v-model="form.quotLxrdh" placeholder="请输入联系电话"/> <el-input v-model="form.quotLxrdh" placeholder="请输入联系电话"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="总价"> <el-form-item label="总价" style="margin-bottom: 10px;">
<el-input class="totalPrice-input" v-model="sumSelectedResultData"/> <el-input class="totalPrice-input" v-model="sumSelectedResultData"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -105,9 +106,9 @@
<el-form-item label="总金额" prop="totalPrice" v-if="false"> <el-form-item label="总金额" prop="totalPrice" v-if="false">
<el-input v-model="form.totalPrice"/> <el-input v-model="form.totalPrice"/>
</el-form-item> </el-form-item>
<el-form-item label="设置折扣率" label-width="100px"> <el-form-item label="设置折扣率" label-width="100px" style="margin-bottom: 10px;">
<el-input style="width:65px" v-model="perc" size="small" @blur="changeData"></el-input> <el-input style="width:65px" v-model="perc" size="small" @blur="changeData" @keyup.enter.native="changeData"></el-input>
<el-input style="width:65px;margin-left: 5px" v-model="perc2" size="small" @blur="changeData"></el-input> <el-input style="width:65px;margin-left: 5px" v-model="perc2" size="small" @blur="changeData" @keyup.enter.native="changeData"></el-input>
<!--总价:<span style="color:red;font-size: 15px">{{sumSelectedResultData}} </span>--> <!--总价:<span style="color:red;font-size: 15px">{{sumSelectedResultData}} </span>-->
<el-select v-model="form.rbDateUid" style="width: 235px;float: right" :disabled="selectedResultData.length==0"> <el-select v-model="form.rbDateUid" style="width: 235px;float: right" :disabled="selectedResultData.length==0">
<el-option <el-option
@ -134,21 +135,28 @@
<el-table-column label="规格" align="center" prop="spec" width="180" v-if="false"/> <el-table-column label="规格" align="center" prop="spec" width="180" v-if="false"/>
<el-table-column label="电压" align="center" prop="voltage" width="100"/> <el-table-column label="电压" align="center" prop="voltage" width="100"/>
<el-table-column label="红本价(元)" align="center" prop="price" width="120"/> <el-table-column label="红本价(元)" align="center" prop="price" width="120"/>
<el-table-column label="单位" align="center" prop="stu" width="50"/> <el-table-column label="单位" align="center" prop="stu" width="90">
<template slot-scope="scope">
<el-select v-model="scope.row.stu" @change="selectTypeChange(scope.row)">
<el-option label="KM" value="KM"/>
<el-option label="M" value="M"/>
</el-select>
</template>
</el-table-column>
<el-table-column label="一次折扣" align="center" prop="per" width="80"> <el-table-column label="一次折扣" align="center" prop="per" width="80">
<template slot-scope="scope"> <template slot-scope="scope">
<el-input v-model="scope.row.per" @blur="changeRowData"/> <el-input v-model="scope.row.per" @blur="changeRowData" @keyup.enter.native="changeRowData"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="二次折扣" align="center" prop="per2" width="80"> <el-table-column label="二次折扣" align="center" prop="per2" width="80">
<template slot-scope="scope"> <template slot-scope="scope">
<el-input v-model="scope.row.per2" @blur="changeRowData"/> <el-input v-model="scope.row.per2" @blur="changeRowData" @keyup.enter.native="changeRowData"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="单价" align="center" prop="setPrice" width="120"/> <el-table-column label="单价" align="center" prop="setPrice" width="120"/>
<el-table-column label="数量调整" align="center" prop="count" width="100"> <el-table-column label="数量调整" align="center" prop="count" width="100">
<template slot-scope="scope"> <template slot-scope="scope">
<el-input v-model="scope.row.count" @blur="changeRowData"/> <el-input v-model="scope.row.count" @blur="changeRowData" @keyup.enter.native="changeRowData"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="总价" align="center" prop="allPrice" width="120"/> <el-table-column label="总价" align="center" prop="allPrice" width="120"/>
@ -187,14 +195,14 @@
overflow: hidden; overflow: hidden;
display: -webkit-box; display: -webkit-box;
-webkit-box-orient: vertical; -webkit-box-orient: vertical;
-webkit-line-clamp: 2; -webkit-line-clamp: 1;
/* 控制显示的行数 */ /* 控制显示的行数 */
} }
/*总价输入框设置*/ /*总价输入框设置*/
.totalPrice-input .el-input__inner { .totalPrice-input .el-input__inner {
color: red; color: red;
} }
</style> </style>
<script> <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,updateSelectedResultData} from "@/api/redBook/redBook";
@ -284,7 +292,7 @@
/*设置内容高度*/ /*设置内容高度*/
this.scrollableHeight = (window.innerHeight - 160) + 'px'; this.scrollableHeight = (window.innerHeight - 160) + 'px';
/*设置已选择结果表格高度*/ /*设置已选择结果表格高度*/
this.tableHeight = (window.innerHeight - 380) + 'px'; this.tableHeight = (window.innerHeight - 340) + 'px';
}, },
methods: { methods: {
// || // ||
@ -297,6 +305,7 @@
}, },
// //
selModelTag(item) { selModelTag(item) {
this.expandedIndex = -1;
this.showRemarkList = false, this.showRemarkList = false,
this.remarkList = [], this.remarkList = [],
@ -501,7 +510,7 @@
const per2 = this.perc2; const per2 = this.perc2;
const count = '1'; const count = '1';
const setPrice = toDecimal(price * (per?per:1) * (per2?per2:1)); const setPrice = toDecimal(price * (per?per:1) * (per2?per2:1));
const allPrice = toDecimal(count * setPrice); const allPrice = toDecimal(count * price * (per?per:1) * (per2?per2:1));
const rowDate = { const rowDate = {
uid_0: uid_0, uid_0: uid_0,
@ -621,7 +630,19 @@
}); });
}) })
}, },
//
handleRefreshClick() {
this.form.quotCustomer = '';
this.form.quotProject = '';
this.form.quotLxr = '';
this.form.quotLxrdh = '';
this.perc = '0.8';
this.perc2 = '';
this.form.rbDateUid = this.versionList[0].value
this.selectedResultData = [];
//this.resetForm("form");
},
// //
handleSaveClick() { handleSaveClick() {
const allPrice = this.selectedResultData.reduce((sum, row) => sum + parseFloat(row.allPrice), 0); const allPrice = this.selectedResultData.reduce((sum, row) => sum + parseFloat(row.allPrice), 0);
@ -650,8 +671,7 @@
elink.click(); elink.click();
URL.revokeObjectURL(elink.href); // URL URL.revokeObjectURL(elink.href); // URL
document.body.removeChild(elink); document.body.removeChild(elink);
} }else {
else {
// IE10+ // IE10+
navigator.msSaveBlob(blob, fileName); navigator.msSaveBlob(blob, fileName);
} }