'20240516'

This commit is contained in:
xd 2024-05-16 13:04:21 +08:00
parent 68e3dd3086
commit a40d03899f
7 changed files with 115 additions and 36 deletions

View File

@ -208,7 +208,7 @@ public class RedBookController extends BaseController
* @return * @return
*/ */
@DataSource(DataSourceType.MASTER) @DataSource(DataSourceType.MASTER)
@Log(title = "保存报价单", businessType = BusinessType.INSERT) @Log(title = "保存红本报价单", businessType = BusinessType.INSERT)
@PostMapping("/saveQuot") @PostMapping("/saveQuot")
public AjaxResult saveQuot(HttpServletResponse response, @RequestBody OAQuot quot) public AjaxResult saveQuot(HttpServletResponse response, @RequestBody OAQuot quot)
{ {
@ -223,7 +223,21 @@ public class RedBookController extends BaseController
} }
return success(quot); return success(quot);
} }
/**
* 报价单提交
* @param quot
* @return
*/
@DataSource(DataSourceType.MASTER)
@Log(title = "提交红本报价单", businessType = BusinessType.UPDATE)
@PostMapping("/commitQuot")
public AjaxResult commitQuot(HttpServletResponse response, @RequestBody OAQuot quot)
{
quot.setQuotApprovalStatus("1");//提交状态更新为 待审核
quot.setUpdateBy(getUsername());
redBookService.updateOAQuot(quot);
return success(quot);
}
/** /**
* 报价单生成 * 报价单生成
* @param quot * @param quot

View File

@ -14,6 +14,7 @@ public class OAQuot extends BaseEntity {
private String totalPrice;//总金额 private String totalPrice;//总金额
private String rbDateUid;//调价版本 private String rbDateUid;//调价版本
private String quotApprovalStatus;//提交状态
private List<OAQuotProduct> selectedResultData; private List<OAQuotProduct> selectedResultData;
@ -65,6 +66,10 @@ public class OAQuot extends BaseEntity {
public void setRbDateUid(String rbDateUid) { this.rbDateUid = rbDateUid; } public void setRbDateUid(String rbDateUid) { this.rbDateUid = rbDateUid; }
public String getQuotApprovalStatus() { return quotApprovalStatus; }
public void setQuotApprovalStatus(String quotApprovalStatus) { this.quotApprovalStatus = quotApprovalStatus; }
public List<OAQuotProduct> getSelectedResultData() { public List<OAQuotProduct> getSelectedResultData() {
return selectedResultData; return selectedResultData;
} }

View File

@ -121,6 +121,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="quotLxrdh != null and quotLxrdh != ''">quotLxrdh = #{quotLxrdh},</if> <if test="quotLxrdh != null and quotLxrdh != ''">quotLxrdh = #{quotLxrdh},</if>
<if test="totalPrice != null and totalPrice != ''">totalPrice = #{totalPrice},</if> <if test="totalPrice != null and totalPrice != ''">totalPrice = #{totalPrice},</if>
<if test="rbDateUid != null and rbDateUid != ''">rbDateUid = #{rbDateUid},</if> <if test="rbDateUid != null and rbDateUid != ''">rbDateUid = #{rbDateUid},</if>
<if test="quotApprovalStatus != null and quotApprovalStatus != ''">quotApprovalStatus = #{quotApprovalStatus},</if>
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if> <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
update_time = getdate() update_time = getdate()
</trim> </trim>
@ -163,7 +164,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
LEFT JOIN sys_dept d on u.dept_id = d.dept_id LEFT JOIN sys_dept d on u.dept_id = d.dept_id
</sql> </sql>
<select id="listQuots" parameterType="OAQuot" resultType="OAQuot"> <select id="listQuots" parameterType="OAQuot" resultType="OAQuot">
select a.quot_id,a.quotCode,a.quotCustomer,a.quotProject,a.quotLxr,a.quotLxrdh,a.totalPrice, select a.quot_id,a.quotCode,a.quotCustomer,a.quotProject,a.quotLxr,a.quotLxrdh,a.totalPrice,a.quotApprovalStatus,
a.create_by,a.create_time createTime, a.create_by,a.create_time createTime,
a.update_by,a.update_time updateTime a.update_by,a.update_time updateTime
from OAQuot a from OAQuot a
@ -193,6 +194,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="quotLxrdh" column="quotLxrdh" /> <result property="quotLxrdh" column="quotLxrdh" />
<result property="totalPrice" column="totalPrice" /> <result property="totalPrice" column="totalPrice" />
<result property="rbDateUid" column="rbDateUid" /> <result property="rbDateUid" column="rbDateUid" />
<result property="quotApprovalStatus" column="quotApprovalStatus" />
</resultMap> </resultMap>
<resultMap id="QuotQuotMaterialResult" type="OAQuot" extends="QuotResult"> <resultMap id="QuotQuotMaterialResult" type="OAQuot" extends="QuotResult">
@ -216,7 +218,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectQuotByQuotId" parameterType="String" resultMap="QuotQuotMaterialResult"> <select id="selectQuotByQuotId" parameterType="String" resultMap="QuotQuotMaterialResult">
select a.quot_id, a.quotCode, a.quotCustomer, a.quotProject, a.quotLxr, select a.quot_id, a.quotCode, a.quotCustomer, a.quotProject, a.quotLxr,
a.quotLxrdh, a.totalPrice,a.rbDateUid, a.quotLxrdh, a.totalPrice,a.rbDateUid,a.quotApprovalStatus,
b.quot_product_id, b.name_0, b.name_1, b.quot_product_id, b.name_0, b.name_1,
b.spec, b.voltage, b.stu, b.spec, b.voltage, b.stu,

View File

@ -108,6 +108,14 @@ export function saveQuot(data) {
data: data data: data
}) })
} }
//提交报价单
export function commitQuot(data) {
return request({
url: '/redBook/redBook/commitQuot',
method: 'post',
data: data
})
}
//生成报价单 //生成报价单
export function madeQuot(data) { export function madeQuot(data) {
return request({ return request({

View File

@ -13,44 +13,56 @@
<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>
</el-row> </el-row>
<el-row :gutter="5" class="mt5"> <el-row :gutter="5" class="mt5">
<splitpanes class="default-theme" split="vertical"> <splitpanes class="default-theme" split="vertical">
<pane> <pane :size="60">
<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-form-item label="目录:"> <el-form-item label="目录:" class="customer-form-item">
<el-link :underline="false" class="block" :type="selectedModelTag==item.name_0?'warning':'primary'" @click="selModelTag(item)" v-for="(item, index) in modelList" :key="index">{{item.name_0}}</el-link> <el-col :span="6" v-for="(item, index) in modelList" :key="index" style="padding: 0px">
<el-link :underline="false" class="block" :type="selectedModelTag==item.name_0?'warning':'primary'" @click="selModelTag(item)">{{item.name_0}}</el-link>
</el-col>
</el-form-item> </el-form-item>
<el-form-item label="备注:" v-if="showRemarkList"> <el-form-item label="备注:" v-if="showRemarkList">
<div class="text-content"> <el-col :span="24">
<div v-if="expandedIndex === id"> <div class="text-content">
<el-button type="text" style="float: right" @click="toggleText(-1)">收起</el-button> <div v-if="expandedIndex === id">
<div v-for="(item, index) in remarkList" :key="index" style="line-height: 25px"> <el-button type="text" style="float: right" @click="toggleText(-1)">收起</el-button>
{{index+1}}{{item.remark_0}}
</div>
</div>
<div v-else>
<el-button type="text" style="float: right" @click="toggleText(id)">更多</el-button>
<div class="text-preview">
<div v-for="(item, index) in remarkList" :key="index" style="line-height: 25px"> <div v-for="(item, index) in remarkList" :key="index" style="line-height: 25px">
{{index+1}}{{item.remark_0}} {{index+1}}{{item.remark_0}}
</div> </div>
</div> </div>
<div v-else>
<el-button type="text" style="float: right" @click="toggleText(id)">更多</el-button>
<div class="text-preview">
<div v-for="(item, index) in remarkList" :key="index" style="line-height: 25px">
{{index+1}}{{item.remark_0}}
</div>
</div>
</div>
</div> </div>
</div> </el-col>
</el-form-item> </el-form-item>
<el-form-item label="型号:" v-if="showXinghList"> <el-form-item label="型号:" v-if="showXinghList" class="customer-form-item">
<el-link :underline="false" class="block" :type="selectedXinghTag==item.name_0?'warning':'primary'" plain @click="selXinghTag(item)" v-for="(item, index) in xinghList" :key="index">{{item.name_0}}</el-link> <el-col :span="6" v-for="(item, index) in xinghList" :key="index">
<el-link :underline="false" class="block" :type="selectedXinghTag==item.name_0?'warning':'primary'" plain @click="selXinghTag(item)">{{item.name_0}}</el-link>
</el-col>
</el-form-item> </el-form-item>
<el-form-item label="子类:" v-if="showZlList"> <el-form-item label="子类:" v-if="showZlList" class="customer-form-item">
<el-link :underline="false" class="block" size="mini" :type="selectedZlTag==item.name_0?'warning':'primary'" plain @click="selZlTag(item)" v-for="(item, index) in zlList" :key="index">{{item.name_0}}</el-link> <el-col :span="6" v-for="(item, index) in zlList" :key="index">
<el-link :underline="false" class="block" size="mini" :type="selectedZlTag==item.name_0?'warning':'primary'" plain @click="selZlTag(item)">{{item.name_0}}</el-link>
</el-col>
</el-form-item> </el-form-item>
<el-form-item label="衍生型号:" v-if="showYsxhList"> <el-form-item label="衍生型号:" v-if="showYsxhList" class="customer-form-item">
<el-link :underline="false" class="block" :type="selectedYsxhTag==item.name_0?'warning':'primary'" plain @click="selYsxhTag(item)" v-for="(item, index) in ysxhList" :key="index">{{item.name_0}}</el-link> <el-col :span="6" v-for="(item, index) in ysxhList" :key="index">
<el-link :underline="false" class="block" :type="selectedYsxhTag==item.name_0?'warning':'primary'" plain @click="selYsxhTag(item)">{{item.name_0}}</el-link>
</el-col>
</el-form-item> </el-form-item>
<el-form-item label="截面:" v-if="showJmList"> <el-form-item label="截面:" v-if="showJmList" class="customer-form-item">
<el-link :underline="false"class="block" :type="selectedJmTag==item.section?'warning':'primary'" plain @click="selJmTag(item)" v-for="(item, index) in jmList" :key="index">{{item.section}}</el-link> <el-col :span="3" v-for="(item, index) in jmList" :key="index">
<el-link :underline="false"class="block" :type="selectedJmTag==item.section?'warning':'primary'" plain @click="selJmTag(item)">{{item.section}}</el-link>
</el-col>
</el-form-item> </el-form-item>
<el-table width="100%" v-loading="searchResultLoading" ref="searchResultTable" :data="searchResultPagedData" @row-dblclick="handleRowDblclick"> <el-table width="100%" v-loading="searchResultLoading" ref="searchResultTable" :data="searchResultPagedData" @row-dblclick="handleRowDblclick">
<el-table-column label="版本uid" align="center" prop="uid_0" v-if="false"/> <el-table-column label="版本uid" align="center" prop="uid_0" v-if="false"/>
<el-table-column label="产品型号" align="center" prop="name_0"/> <el-table-column label="产品型号" align="center" prop="name_0"/>
@ -111,7 +123,7 @@
<el-input style="width:65px" v-model="perc" size="small" @blur="changeData" @keyup.enter.native="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" @keyup.enter.native="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;margin-left: 5px" :disabled="selectedResultData.length==0">
<el-option <el-option
v-for="item in versionList" v-for="item in versionList"
:key="item.value" :key="item.value"
@ -141,6 +153,7 @@
<el-select v-model="scope.row.stu" @change="selectTypeChange(scope.row)"> <el-select v-model="scope.row.stu" @change="selectTypeChange(scope.row)">
<el-option label="KM" value="KM"/> <el-option label="KM" value="KM"/>
<el-option label="M" value="M"/> <el-option label="M" value="M"/>
<el-option label="只" value="只"/>
</el-select> </el-select>
</template> </template>
</el-table-column> </el-table-column>
@ -179,6 +192,12 @@
</div> </div>
</template> </template>
<style> <style>
/* 修改边框样式 */
.customer-form-item .el-form-item__content {
border: 1px solid #1682e645; /* 更改为蓝色边框 */
border-radius: 4px; /* 圆角 */
padding: 5px; /* 内边距 */
}
/* 设置间距 */ /* 设置间距 */
.block { .block {
margin-left: 20px; margin-left: 20px;

View File

@ -20,6 +20,16 @@
clearable clearable
/> />
</el-form-item> </el-form-item>
<el-form-item label="提交状态" prop="quotApprovalStatus">
<el-select v-model="queryParams.quotApprovalStatus" placeholder="请选择提交状态" clearable>
<el-option
v-for="dict in dict.type.rb_quot_approval_status"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <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-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@ -33,8 +43,8 @@
<el-button type="text" @click="handleDeleteClick(scope.row)">删除</el-button> <el-button type="text" @click="handleDeleteClick(scope.row)">删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="quot_id" align="center" prop="quot_id" v-if="false"/> <el-table-column fixed="left" label="quot_id" align="center" prop="quot_id" v-if="false"/>
<el-table-column label="报价单号" width="260" align="center" prop="quotCode"> <el-table-column fixed="left" label="报价单号" width="260" align="center" prop="quotCode">
<template slot-scope="scope"> <template slot-scope="scope">
<el-link :underline="false" type="primary" @click="handleDetail(scope.row)">{{scope.row.quotCode}}</el-link> <el-link :underline="false" type="primary" @click="handleDetail(scope.row)">{{scope.row.quotCode}}</el-link>
</template> </template>
@ -46,6 +56,11 @@
<el-table-column label="联系人电话" width="100" align="center" prop="quotLxrdh" /> <el-table-column label="联系人电话" width="100" align="center" prop="quotLxrdh" />
<el-table-column label="创建日期" width="180" align="center" prop="createTime" /> <el-table-column label="创建日期" width="180" align="center" prop="createTime" />
<el-table-column label="更新日期" width="180" align="center" prop="updateTime" /> <el-table-column label="更新日期" width="180" align="center" prop="updateTime" />
<el-table-column label="提交状态" align="center" prop="quotApprovalStatus" width="150px">
<template slot-scope="scope">
<dict-tag :options="dict.type.rb_quot_approval_status" :value="scope.row.quotApprovalStatus"/>
</template>
</el-table-column>
</el-table> </el-table>
<!-- 报价详情对话框 --> <!-- 报价详情对话框 -->
@ -89,7 +104,7 @@
<el-input style="width:65px" v-model="perc" size="small" @blur="changeData" @keyup.enter.native="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" @keyup.enter.native="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="margin-left: 20px;width: 235px;" :disabled="selectedResultData.length==0"> <el-select v-model="form.rbDateUid" style="margin-left: 20px;width: 235px;" :disabled="selectedResultData.length==0 || form.quotApprovalStatus!=0">
<el-option <el-option
v-for="item in versionList" v-for="item in versionList"
:key="item.value" :key="item.value"
@ -98,7 +113,7 @@
@click.native="selectRbDate(item.value)"/> @click.native="selectRbDate(item.value)"/>
</el-select> </el-select>
<el-button style="float: right;margin-left: 5px;" size="small" type="success" icon="el-icon-document" @click="handleMadeQuotClick" :disabled="selectedResultData.length==0">生成报价单</el-button> <el-button style="float: right;margin-left: 5px;" size="small" type="success" icon="el-icon-document" @click="handleMadeQuotClick" :disabled="selectedResultData.length==0">生成报价单</el-button>
<el-button style="float: right;" size="small" type="warning" icon="el-icon-folder" @click="handleSaveClick" :disabled="selectedResultData.length==0">保存</el-button> <el-button style="float: right;" size="small" type="warning" icon="el-icon-folder" @click="handleSaveClick" v-if="this.form.quotApprovalStatus==0" :disabled="selectedResultData.length==0">保存</el-button>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -106,7 +121,7 @@
<el-table v-loading="selectedResultLoading" width="100%;" :row-class-name="selectedResultIndex" :data="selectedResultData" height="350px"> <el-table v-loading="selectedResultLoading" width="100%;" :row-class-name="selectedResultIndex" :data="selectedResultData" height="350px">
<el-table-column fixed="left" label="" align="center" prop="index" width="50"/> <el-table-column fixed="left" label="" align="center" prop="index" width="50"/>
<el-table-column label="版本uid" align="center" prop="uid_0" v-if="false"/> <el-table-column label="版本uid" align="center" prop="uid_0" v-if="false"/>
<el-table-column fixed="left" label="产品型号" align="center" prop="name_0" width="180" /> <el-table-column fixed="left" label="产品型号" align="center" prop="name_0" width="180"/>
<el-table-column label="型号" align="center" prop="name_1" v-if="false"/> <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="spec" v-if="false"/>
<el-table-column label="电压" align="center" prop="voltage"/> <el-table-column label="电压" align="center" prop="voltage"/>
@ -131,6 +146,9 @@
<el-table-column label="总价" align="center" prop="allPrice"/> <el-table-column label="总价" align="center" prop="allPrice"/>
</el-table> </el-table>
</el-form> </el-form>
<div slot="footer" class="dialog-footer" v-if="this.form.quotApprovalStatus==0">
<el-button type="primary" @click="handleCommitClick">提交报价</el-button>
</div>
</el-dialog> </el-dialog>
<pagination <pagination
v-show="total>0" v-show="total>0"
@ -147,10 +165,11 @@
} }
</style> </style>
<script> <script>
import {toDecimal, versionList,listQuots,getQuotDetail,deleteQuots,updateSelectedResultData,madeQuot,saveQuot } from "@/api/redBook/redBook"; import {toDecimal, versionList,listQuots,getQuotDetail,deleteQuots,updateSelectedResultData,madeQuot,saveQuot,commitQuot } from "@/api/redBook/redBook";
export default { export default {
name: "quots", name: "quots",
dicts:['rb_quot_approval_status'],
data() { data() {
return { return {
// //
@ -172,7 +191,7 @@
}, },
// //
form: {}, form: {quotApprovalStatus:''},
// //
title: "", title: "",
// //
@ -330,6 +349,18 @@
}) })
}, },
//
handleCommitClick() {
const allPrice = this.selectedResultData.reduce((sum, row) => sum + parseFloat(row.allPrice), 0);
this.form.totalPrice = allPrice.toFixed(2);
this.form.selectedResultData = this.selectedResultData;
commitQuot(this.form).then(response => {
this.$modal.msgSuccess("提交报价单成功");
this.open = false;
this.getList();
})
},
// //
handleMadeQuotClick() { handleMadeQuotClick() {
this.form.selectedResultData = this.selectedResultData; this.form.selectedResultData = this.selectedResultData;

View File

@ -322,7 +322,7 @@ export default {
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete(row) { handleDelete(row) {
const dictIds = row.dictId || this.ids; const dictIds = row.dictId || this.ids;
this.$modal.confirm('是否确认删除字典编号为"' + dictIds + '"的数据项?').then(function() { this.$modal.rbDateUid('是否确认删除字典编号为"' + dictIds + '"的数据项?').then(function() {
return delType(dictIds); return delType(dictIds);
}).then(() => { }).then(() => {
this.getList(); this.getList();