You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1218 lines
45 KiB
1218 lines
45 KiB
<script>
|
|
import {
|
|
deleteQuotationDetail,
|
|
insertQuotationDetail,
|
|
searchQuotationDetailPageByHeaderId, updateQuotationDetail
|
|
} from "../../../../api/quotation/quotationHeader";
|
|
import {getProjectPart, getProjectPartList} from "../../../../api/project/project";
|
|
import ToolQuotation from "./quotationDetail/toolQuotation.vue";
|
|
import PropertyTemplates from "./quotationDetail/propertyTemplates.vue";
|
|
import CostPrice from "./quotationDetail/costPrice.vue";
|
|
import BillOfMateriel from "./quotationDetail/billOfMateriel.vue";
|
|
import {Decimal} from "decimal.js";
|
|
import {searchQuoteBomHeader, searchQuoteBomList} from "../../../../api/quotation/quoteOfBom";
|
|
import QuoteRouting from "./quotationDetail/quoteRouting.vue";
|
|
import {searchQuoteRoutingHeader} from "../../../../api/quotation/quoteOfRouting";
|
|
|
|
export default {
|
|
name:'quoteDetail',
|
|
components: {QuoteRouting, BillOfMateriel, CostPrice, PropertyTemplates, ToolQuotation},
|
|
props:{
|
|
header:{
|
|
type:Object,
|
|
request:true,
|
|
},
|
|
height:{
|
|
type:Number,
|
|
default:300,
|
|
},
|
|
},
|
|
watch:{
|
|
header:function (){
|
|
this.initData()
|
|
},
|
|
update(){
|
|
// 当bom触发修改版本时触发
|
|
this.searchQuoteRoutingHeader();
|
|
}
|
|
},
|
|
data(){
|
|
const validateProductNo = (rule, value, callback) =>{
|
|
if (this.quotationDetailFlag !== true && this.quotationLeadIntoDetailFlag !== true){
|
|
return;
|
|
}
|
|
if (value === '' || value === null || value === undefined){
|
|
callback(new Error(' '))
|
|
return
|
|
}
|
|
let params = {...this.projectPartData}
|
|
params.testPartNo = value
|
|
getProjectPart(params).then(({data})=>{
|
|
if (data && data.rows.length >= 1){
|
|
callback()
|
|
}else {
|
|
this.projectPartData.testPartNo = undefined;
|
|
this.$message.error("产品编码不存在!")
|
|
callback(new Error(" "))
|
|
}
|
|
}).catch((error)=>{
|
|
this.projectPartData.testPartNo = undefined
|
|
callback(new Error(' '))
|
|
})
|
|
};
|
|
return{
|
|
allSearchFlagBom:false,
|
|
allSearchFlagRouting:false,
|
|
BOMCost:0,
|
|
ToolCost:0,
|
|
machineCost:0,
|
|
laborCost:0,
|
|
manufacturingCost:0,
|
|
packInfoCost:0,
|
|
shippingInfoCost:0,
|
|
loadingStatus:false,
|
|
update:0,
|
|
index:'',
|
|
insertQuotationDetailLoading:false,
|
|
projectPartDialogFlag:false,
|
|
quotationLeadIntoDetailFlag:false,
|
|
initQuotationDetailLoading:false,
|
|
quotationDetailFlag:false,
|
|
editQuotationDetailLoading:false,
|
|
no: 1,//当前页
|
|
size: 50,//每页条数
|
|
total: 0,//总条数
|
|
tableData:[],
|
|
projectPartTable:[],
|
|
columnList: [
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 102003,
|
|
serialNumber: '102003Table2ProductNo',
|
|
tableId: '102003Table2',
|
|
tableName: '报价详情信息表',
|
|
columnProp: 'productNo',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '产品编码',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 200
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 102003,
|
|
serialNumber: '102003Table2ProductDesc',
|
|
tableId: '102003Table2',
|
|
tableName: '报价详情信息表',
|
|
columnProp: 'productDesc',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '产品名称',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 200
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 102003,
|
|
serialNumber: '102003Table2QuotationDetailQuantity',
|
|
tableId: '102003Table2',
|
|
tableName: '报价详情信息表',
|
|
columnProp: 'quotationDetailQuantity',
|
|
headerAlign: 'center',
|
|
align: 'right',
|
|
columnLabel: '报价数量',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 100
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 102003,
|
|
serialNumber: '102003Table2ComputePartCost',
|
|
tableId: '102003Table2',
|
|
tableName: '报价详情信息表',
|
|
columnProp: 'computePartCost',
|
|
headerAlign: 'center',
|
|
align: 'right',
|
|
columnLabel: '计算后材料成本',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 102003,
|
|
serialNumber: '102003Table2ComputeMachineCost',
|
|
tableId: '102003Table2',
|
|
tableName: '报价详情信息表',
|
|
columnProp: 'computeMachineCost',
|
|
headerAlign: 'center',
|
|
align: 'right',
|
|
columnLabel: '计算后机器成本',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 102003,
|
|
serialNumber: '102003Table2ComputeLabourCost',
|
|
tableId: '102003Table2',
|
|
tableName: '报价详情信息表',
|
|
columnProp: 'computeLabourCost',
|
|
headerAlign: 'center',
|
|
align: 'right',
|
|
columnLabel: '计算后人工成本',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 102003,
|
|
serialNumber: '102003Table2ComputeFabricateCost',
|
|
tableId: '102003Table2',
|
|
tableName: '报价详情信息表',
|
|
columnProp: 'computeFabricateCost',
|
|
headerAlign: 'center',
|
|
align: 'right',
|
|
columnLabel: '计算后制造费用',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 102003,
|
|
serialNumber: '102003Table2ComputeToolCost',
|
|
tableId: '102003Table2',
|
|
tableName: '报价详情信息表',
|
|
columnProp: 'computeToolCost',
|
|
headerAlign: 'center',
|
|
align: 'right',
|
|
columnLabel: '计算后工具成本',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 102003,
|
|
serialNumber: '102003Table2AdjustPartCost',
|
|
tableId: '102003Table2',
|
|
tableName: '报价详情信息表',
|
|
columnProp: 'adjustPartCost',
|
|
headerAlign: 'center',
|
|
align: 'right',
|
|
columnLabel: '调整后材料成本',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 102003,
|
|
serialNumber: '102003Table2AdjustMachineCost',
|
|
tableId: '102003Table2',
|
|
tableName: '报价详情信息表',
|
|
columnProp: 'adjustMachineCost',
|
|
headerAlign: 'center',
|
|
align: 'right',
|
|
columnLabel: '调整后机器成本',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 102003,
|
|
serialNumber: '102003Table2AdjustLabourCost',
|
|
tableId: '102003Table2',
|
|
tableName: '报价详情信息表',
|
|
columnProp: 'adjustLabourCost',
|
|
headerAlign: 'center',
|
|
align: 'right',
|
|
columnLabel: '调整后人工成本',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 102003,
|
|
serialNumber: '102003Table2AdjustFabricateCost',
|
|
tableId: '102003Table2',
|
|
tableName: '报价详情信息表',
|
|
columnProp: 'adjustFabricateCost',
|
|
headerAlign: 'center',
|
|
align: 'right',
|
|
columnLabel: '调整后制造费用',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 102003,
|
|
serialNumber: '102003Table2AdjustToolCost',
|
|
tableId: '102003Table2',
|
|
tableName: '报价详情信息表',
|
|
columnProp: 'adjustToolCost',
|
|
headerAlign: 'center',
|
|
align: 'right',
|
|
columnLabel: '调整后工具成本',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 102003,
|
|
serialNumber: '102003Table2DetailOtherCost',
|
|
tableId: '102003Table2',
|
|
tableName: '报价详情信息表',
|
|
columnProp: 'detailOtherCost',
|
|
headerAlign: 'center',
|
|
align: 'right',
|
|
columnLabel: '其他成本',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 102003,
|
|
serialNumber: '102003Table2DetailManageCost',
|
|
tableId: '102003Table2',
|
|
tableName: '报价详情信息表',
|
|
columnProp: 'detailManageCost',
|
|
headerAlign: 'center',
|
|
align: 'right',
|
|
columnLabel: '管理成本',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 102003,
|
|
serialNumber: '102003Table2DetailTotalCost',
|
|
tableId: '102003Table2',
|
|
tableName: '报价详情信息表',
|
|
columnProp: 'detailTotalCost',
|
|
headerAlign: 'center',
|
|
align: 'right',
|
|
columnLabel: '总成本',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 102003,
|
|
serialNumber: '102003Table2DetailProfitRate',
|
|
tableId: '102003Table2',
|
|
tableName: '报价详情信息表',
|
|
columnProp: 'detailProfitRate',
|
|
headerAlign: 'center',
|
|
align: 'right',
|
|
columnLabel: '利润率%',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 102003,
|
|
serialNumber: '102003Table2DetailProfitAmount',
|
|
tableId: '102003Table2',
|
|
tableName: '报价详情信息表',
|
|
columnProp: 'detailProfitAmount',
|
|
headerAlign: 'center',
|
|
align: 'right',
|
|
columnLabel: '利润额',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 102003,
|
|
serialNumber: '102003Table2FinalUntaxedPrice',
|
|
tableId: '102003Table2',
|
|
tableName: '报价详情信息表',
|
|
columnProp: 'finalUntaxedPrice',
|
|
headerAlign: 'center',
|
|
align: 'right',
|
|
columnLabel: '未税单价',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 102003,
|
|
serialNumber: '102003Table2TaxRate',
|
|
tableId: '102003Table2',
|
|
tableName: '报价详情信息表',
|
|
columnProp: 'taxRate',
|
|
headerAlign: 'center',
|
|
align: 'right',
|
|
columnLabel: '税率%',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 102003,
|
|
serialNumber: '102003Table2FinalTaxedPrice',
|
|
tableId: '102003Table2',
|
|
tableName: '报价详情信息表',
|
|
columnProp: 'finalTaxedPrice',
|
|
headerAlign: 'center',
|
|
align: 'right',
|
|
columnLabel: '含税单价',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 102003,
|
|
serialNumber: '102003Table2SystemComputePrice',
|
|
tableId: '102003Table2',
|
|
tableName: '报价详情信息表',
|
|
columnProp: 'systemComputePrice',
|
|
headerAlign: 'center',
|
|
align: 'right',
|
|
columnLabel: '含税总价',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 102003,
|
|
serialNumber: '102003Table2QuotationDetailStatus',
|
|
tableId: '102003Table2',
|
|
tableName: '报价详情信息表',
|
|
columnProp: 'quotationDetailStatus',
|
|
headerAlign: 'center',
|
|
align: 'center',
|
|
columnLabel: '状态',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 102003,
|
|
serialNumber: '102003Table2Remark',
|
|
tableId: '102003Table2',
|
|
tableName: '报价详情信息表',
|
|
columnProp: 'remark',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '备注',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 102003,
|
|
serialNumber: '102003Table2InternalInquiryNo',
|
|
tableId: '102003Table2',
|
|
tableName: '报价详情信息表',
|
|
columnProp: 'internalInquiryNo',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '询价单号',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},
|
|
// {
|
|
// userId: this.$store.state.user.name,
|
|
// functionId: 102003,
|
|
// serialNumber: '102003Table2QuotationDetailCount',
|
|
// tableId: '102003Table2',
|
|
// tableName: '报价详情信息表',
|
|
// columnProp: 'quotationDetailCount',
|
|
// headerAlign: 'center',
|
|
// align: 'right',
|
|
// columnLabel: '报价次数',
|
|
// columnHidden: false,
|
|
// columnImage: false,
|
|
// columnSortable: false,
|
|
// sortLv: 0,
|
|
// status: true,
|
|
// fixed: '',
|
|
// columnWidth: 120
|
|
// },
|
|
],
|
|
projectPartDetailList: [
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 102003,
|
|
serialNumber: '102003Table3TestPartNo',
|
|
tableId: '102003Table3',
|
|
tableName: '项目物料表',
|
|
columnProp: 'testPartNo',
|
|
headerAlign: 'center',
|
|
align: 'center',
|
|
columnLabel: '产品编码',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 150
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 102003,
|
|
serialNumber: '102003Table3PartDesc',
|
|
tableId: '102003Table3',
|
|
tableName: '项目物料表',
|
|
columnProp: 'partDesc',
|
|
headerAlign: 'center',
|
|
align: 'center',
|
|
columnLabel: '产品名称',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 102003,
|
|
serialNumber: '102003Table3PartSpec',
|
|
tableId: '102003Table3',
|
|
tableName: '项目物料表',
|
|
columnProp: 'partSpec',
|
|
headerAlign: 'center',
|
|
align: 'center',
|
|
columnLabel: '产品规格',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 102003,
|
|
serialNumber: '102003Table3PartTypeDesc',
|
|
tableId: '102003Table3',
|
|
tableName: '项目物料表',
|
|
columnProp: 'partTypeDesc',
|
|
headerAlign: 'center',
|
|
align: 'center',
|
|
columnLabel: '产品类型',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
}, {
|
|
userId: this.$store.state.user.name,
|
|
functionId: 102001,
|
|
serialNumber: '102001Table3Type',
|
|
tableId: '102001Table3',
|
|
tableName: '项目物料表',
|
|
columnProp: 'type',
|
|
headerAlign: 'center',
|
|
align: 'center',
|
|
columnLabel: '制造类型',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 102001,
|
|
serialNumber: '102001Table3UmId',
|
|
tableId: '102001Table3',
|
|
tableName: '项目物料表',
|
|
columnProp: 'umId',
|
|
headerAlign: 'center',
|
|
align: 'center',
|
|
columnLabel: '单位',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 100
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 102003,
|
|
serialNumber: '102003Table3CodeNo',
|
|
tableId: '102003Table3',
|
|
tableName: '项目物料表',
|
|
columnProp: 'codeNo',
|
|
headerAlign: 'center',
|
|
align: 'center',
|
|
columnLabel: '模板编码',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 102003,
|
|
serialNumber: '102003Table3CodeDesc',
|
|
tableId: '102003Table3',
|
|
tableName: '项目物料表',
|
|
columnProp: 'codeDesc',
|
|
headerAlign: 'center',
|
|
align: 'center',
|
|
columnLabel: '模板名称',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
}
|
|
],
|
|
//报价明细新增对象
|
|
quotationDetail: {
|
|
quotationDetailId: undefined,//主键
|
|
quotationHeaderId: undefined,//父编号
|
|
site: this.$store.state.user.site,// 工厂编号
|
|
productNo: undefined,//产品编码
|
|
productDesc: undefined,//产品名称
|
|
quotationDetailQuantity: 1,//报价数量
|
|
internalInquiryNo: undefined,//内部询价单号
|
|
itemNo:0,//序号
|
|
quotationDetailStatus: "草稿",//报价状态
|
|
taxRate: 13,//税率
|
|
remark: undefined,//备注
|
|
flag:false
|
|
},
|
|
projectPartData:{
|
|
site:this.$store.state.user.site,
|
|
testPartNo:undefined,// 项目编号
|
|
partDesc:undefined,// 项目名称
|
|
},
|
|
fullscreen:false,
|
|
// 报价明细 参数列表
|
|
quotationDetailColumns: [
|
|
{label: "productDesc", value: "产品名称"},
|
|
{label: "quotationDetailQuantity", value: "报价数量"},
|
|
{label: "internalInquiryNo", value: "内部询价单号"},
|
|
{label: "quotationDetailStatus", value: "报价状态"},
|
|
{label: "itemNo", value: "序号"},
|
|
{label: "adjustPartCost", value: "调整后的材料成本"},
|
|
{label: "adjustMachineCost", value: "调整后的机器成本"},
|
|
{label: "adjustFabricateCost", value: "调整后的制造费用"},
|
|
{label: "adjustLabourCost", value: "调整后人的工成本"},
|
|
{label: "adjustToolCost", value: "调整后的工具成本"},
|
|
{label: "detailManageCost", value: "管理成本"},
|
|
{label: "detailOtherCost", value: "其他成本"},
|
|
{label: "detailProfitRate", value: "利润率"},
|
|
{label: "finalUntaxedPrice", value: "未税单价"},
|
|
{label: "taxRate", value: "税率"},
|
|
],
|
|
// 报价详情表单校验
|
|
quotationDetailRules: {
|
|
productNo: [{required: true,validator:validateProductNo,trigger: 'change'}],
|
|
productDesc: [{required: true, message: ' ', trigger: ['change','blur']}],
|
|
quotationDetailStatus: [{required: true, message: ' ', trigger: 'change'}],
|
|
internalInquiryNo: [{required: true, message: ' ', trigger: ['change','blur']}],
|
|
itemNo:[{required: true, message: ' ', trigger: ['change','blur']}],
|
|
quotationDetailQuantity: [{required: true, message: ' ', trigger: ['change','blur']}],
|
|
},
|
|
activeName:'bom',
|
|
}
|
|
},
|
|
methods:{
|
|
// 报价详情size 改变
|
|
detailSizeChange(val) {
|
|
this.size = val;
|
|
this.initData();
|
|
},
|
|
// 报价详情 页码
|
|
detailCurrentChange(val) {
|
|
this.no = val;
|
|
this.initData();
|
|
},
|
|
// 查询报价明细
|
|
initData() {
|
|
let params = {
|
|
no: this.no,
|
|
size: this.size,
|
|
quotationHeaderId: this.header.quotationHeaderId
|
|
}
|
|
this.tableData = [];
|
|
this.initQuotationDetailLoading = true;
|
|
searchQuotationDetailPageByHeaderId(params).then(({data}) => {
|
|
this.initQuotationDetailLoading = false;
|
|
if (data && data.code === 200) {
|
|
this.tableData = data.data.records;
|
|
this.total = data.data.total;
|
|
}else {
|
|
this.tableData = [];
|
|
this.total = 0;
|
|
}
|
|
}).catch((error)=>{
|
|
this.initQuotationDetailLoading = false;
|
|
})
|
|
},
|
|
// 修改 报价详情
|
|
editQuotationDetail(row,index) {
|
|
if (index < 10){
|
|
this.index = "00"+index;
|
|
}else if (index%10 <= 10){
|
|
this.index = "0"+index;
|
|
}else if (index%100 <= 10){
|
|
this.index = index
|
|
}
|
|
this.quotationDetail = JSON.parse(JSON.stringify(row));
|
|
this.quotationDetailFlag = true;
|
|
},
|
|
// 删除 报价明细
|
|
deleteQuotationDetailData(row){
|
|
this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {
|
|
confirmButtonText: '确定',
|
|
cancelButtonText: '取消',
|
|
type: 'warning'
|
|
}).then(() => {
|
|
deleteQuotationDetail(row).then(({data})=>{
|
|
if (data.code === 200){
|
|
this.initData();
|
|
this.$message.success(data.msg);
|
|
}else {
|
|
this.$message.error(data.msg);
|
|
}
|
|
})
|
|
})
|
|
},
|
|
openInsertQuotationDetail() {
|
|
this.quotationDetail.quotationHeaderId = this.header.quotationHeaderId;
|
|
this.quotationDetail.internalInquiryNo = this.header.internalInquiryNo;
|
|
},
|
|
closeInsertQuotationDetail() {
|
|
this.$refs['insertQuotationDetailForm'].resetFields();
|
|
this.resetQuotationDetail();
|
|
},
|
|
resetQuotationDetail(){
|
|
this.quotationDetail = {
|
|
quotationDetailId: undefined,//主键
|
|
quotationHeaderId: undefined,//父编号
|
|
site: this.$store.state.user.site,// 工厂编号
|
|
productNo: undefined,//产品编码
|
|
productDesc: undefined,//产品名称
|
|
quotationDetailQuantity: 1,//报价数量
|
|
internalInquiryNo: undefined,//内部询价单号
|
|
itemNo:0,//序号
|
|
quotationDetailStatus: "草稿",//报价状态
|
|
taxRate: 13,//税率
|
|
remark: undefined,//备注
|
|
flag:false
|
|
};
|
|
},
|
|
insertQuotationDetailBtn() {
|
|
this.$refs['insertQuotationDetailForm'].validate((validate, objects) => {
|
|
if (validate) {
|
|
this.insertQuotationDetailLoading = true;
|
|
insertQuotationDetail(this.quotationDetail).then(({data}) => {
|
|
this.insertQuotationDetailLoading = false;
|
|
if (data.code === 200) {
|
|
// 保存成功后
|
|
if (this.quotationDetail.flag) {
|
|
this.$nextTick(()=>{
|
|
this.quotationDetail = JSON.parse(JSON.stringify(data.data));
|
|
})
|
|
this.quotationDetailFlag = true;
|
|
}else {
|
|
this.quotationLeadIntoDetailFlag = false;
|
|
}
|
|
this.initData();
|
|
this.$message.success(data.msg);
|
|
} else {
|
|
this.$message.error(data.msg);
|
|
}
|
|
}).catch((error)=>{
|
|
this.insertQuotationDetailLoading = false;
|
|
})
|
|
} else {
|
|
this.rulesValidateLabel(objects, this.quotationDetailColumns);
|
|
}
|
|
})
|
|
},
|
|
// 校验处理
|
|
rulesValidateLabel(objects, labels) {
|
|
for (let filed in objects) {
|
|
for (let i = 0; i < labels.length; i++) {
|
|
let quotationToolColumn = labels[i];
|
|
if (quotationToolColumn.label === filed) {
|
|
this.$message.warning(quotationToolColumn.value+"为空或填写不正确");
|
|
return
|
|
}
|
|
}
|
|
}
|
|
},
|
|
closeProjectPartDialog(){
|
|
this.projectPartData = {
|
|
site:this.$store.state.user.site,
|
|
testPartNo:undefined,// 项目编号
|
|
partDesc:undefined,// 项目名称
|
|
}
|
|
this.projectPartTable = [];
|
|
},
|
|
openProjectPartDialog(){
|
|
this.getProjectPartList();
|
|
},
|
|
getProjectPartList(){
|
|
let params = {...this.projectPartData}
|
|
params.projectId = this.header.projectId
|
|
getProjectPartList(params).then(({data})=>{
|
|
if (data && data.code === 0){
|
|
this.projectPartTable = data.rows;
|
|
}
|
|
})
|
|
},
|
|
blurProjectHandle(){
|
|
let params = {
|
|
site:this.$store.state.user.site,
|
|
testPartNo:this.quotationDetail.productNo,
|
|
projectId: this.header.projectId
|
|
}
|
|
getProjectPartList(params).then(({data})=>{
|
|
if (data && data.code === 0){
|
|
if (data.rows && data.rows.length === 1){
|
|
this.dblClickProjectPartTable(data.rows[0])
|
|
}
|
|
}
|
|
})
|
|
},
|
|
// 项目物料双击事件
|
|
dblClickProjectPartTable(row){
|
|
this.quotationDetail.productNo = row.testPartNo;
|
|
this.quotationDetail.productDesc = row.partDesc;
|
|
this.projectPartDialogFlag = false;
|
|
},
|
|
closeDetailEditDialog(){
|
|
this.activeName = 'bom'
|
|
this.fullscreen = false;
|
|
this.resetQuotationDetail();
|
|
this.$refs.cost.restCostForm()
|
|
|
|
// 关闭新增弹框
|
|
this.quotationLeadIntoDetailFlag = false;
|
|
},
|
|
openQuotationDetail(){
|
|
this.$nextTick(()=>{
|
|
this.$refs.property.getPropertyTemplatesItem();// 属性
|
|
this.$refs.tool.initQuotationToolData();//刀具
|
|
this.searchQuoteBomList();//bom
|
|
})
|
|
},
|
|
searchQuoteRoutingHeader(){
|
|
let params = {
|
|
site:this.$store.state.user.site,
|
|
quoteDetailId:this.quotationDetail.quotationDetailId,
|
|
testPartNo:this.quotationDetail.productNo
|
|
}
|
|
searchQuoteRoutingHeader(params).then(({data})=>{
|
|
if (data && data.code === 0){
|
|
let row = data.row
|
|
let arr = [];
|
|
if (row){
|
|
arr[0] = row.version;
|
|
arr[1] = row.alternativeNo;
|
|
arr[2] = row.routingType;
|
|
arr[3] = row.partNo;
|
|
arr[4] = row.id;
|
|
arr[5] = row.parentId;
|
|
}
|
|
this.$refs.routing.setSelectRouting(arr);
|
|
}else {
|
|
this.$message.warning(data.msg)
|
|
}
|
|
}).catch((error)=>{
|
|
this.$message.error(error)
|
|
})
|
|
},
|
|
searchQuoteBomList(){
|
|
this.allSearchFlagBom = false;
|
|
this.allSearchFlagRouting = false;
|
|
let params = {
|
|
site:this.$store.state.user.site,
|
|
quoteDetailId:this.quotationDetail.quotationDetailId,
|
|
testPartNo:this.quotationDetail.productNo
|
|
}
|
|
this.loadingStatus = true
|
|
searchQuoteBomHeader(params).then(({data})=>{
|
|
if (data && data.code === 0){
|
|
let row = data.row
|
|
let arr = [];
|
|
if (row !== null){
|
|
arr[0] = row.version;
|
|
arr[1] = row.alternativeNo;
|
|
arr[2] = row.bomType;
|
|
arr[3] = row.partNo;
|
|
arr[4] = row.id;
|
|
arr[5] = row.parentId;
|
|
}
|
|
this.$refs.bom.setSelectBom(arr);
|
|
this.searchQuoteRoutingHeader();// routing
|
|
}else {
|
|
this.$message.warning(data.msg)
|
|
}
|
|
}).catch((error)=>{
|
|
this.$message.error(error)
|
|
})
|
|
},
|
|
saveQuotationDetail(){
|
|
if (!this.$refs.cost.ruleCostForm()) {
|
|
return
|
|
}
|
|
let params = this.$refs.cost.getQuotationDetail();
|
|
this.editQuotationDetailLoading = true;
|
|
updateQuotationDetail(params).then(({data}) => {
|
|
this.editQuotationDetailLoading = false;
|
|
if (data.code === 200) {
|
|
this.quotationDetailFlag = false;
|
|
this.initData();
|
|
this.$message.success(data.msg);
|
|
} else {
|
|
this.$message.warning(data.msg);
|
|
}
|
|
}).catch((error)=>{
|
|
this.$message.error(error);
|
|
this.editQuotationDetailLoading = false;
|
|
})
|
|
// this.$message.success(this.$refs.cost.getQuotationDetail())
|
|
// this.quotationDetailFlag = false;
|
|
},
|
|
tabClick(tab){
|
|
if (this.activeName === 'cost'){
|
|
this.searchQuoteBomList();
|
|
}
|
|
},
|
|
editQuotationDetailStatus(row,status){
|
|
let params = JSON.parse(JSON.stringify(row))
|
|
params.quotationDetailStatus = status;
|
|
updateQuotationDetail(params).then(({data}) => {
|
|
if (data.code === 200) {
|
|
this.initData();
|
|
this.$message.success(data.msg);
|
|
} else {
|
|
this.$message.warning(data.msg);
|
|
}
|
|
}).catch((error)=>{
|
|
this.$message.error(error);
|
|
})
|
|
},
|
|
clickProjectHandle(){
|
|
this.projectPartData.testPartNo = this.quotationDetail.productNo
|
|
this.projectPartDialogFlag = true
|
|
}
|
|
},
|
|
}
|
|
</script>
|
|
|
|
<template>
|
|
<div>
|
|
<div style="margin-bottom: 10px;padding-left: 10px">
|
|
<el-button type="primary" @click="quotationLeadIntoDetailFlag = true">新增</el-button>
|
|
</div>
|
|
<el-table v-loading="initQuotationDetailLoading" element-loading-text = "数据正在加载中"
|
|
element-loading-spinner = "el-icon-loading" :data="tableData" :height="height" border
|
|
:header-cell-style="{background:'rgba(23,179,163)',color:'#fff'}">
|
|
<el-table-column
|
|
label="操作"
|
|
fixed
|
|
width="120" align="center">
|
|
<template slot-scope="{row,$index}">
|
|
<el-link style="cursor: pointer" v-if="row.quotationDetailStatus !== '下达'" @click="editQuotationDetailStatus(row,'下达')">下达</el-link>
|
|
<el-link style="cursor: pointer" @click="editQuotationDetail(row,$index+1)">编辑</el-link>
|
|
<el-link style="cursor: pointer" @click="deleteQuotationDetailData(row)">删除</el-link>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column
|
|
header-align="center"
|
|
label="序号"
|
|
width="55"
|
|
align="center"
|
|
type="index">
|
|
</el-table-column>
|
|
<el-table-column
|
|
v-for="(item,index) in columnList" :key="index"
|
|
:sortable="item.columnSortable"
|
|
:prop="item.columnProp"
|
|
:header-align="item.headerAlign"
|
|
:show-overflow-tooltip="item.showOverflowTooltip"
|
|
:align="item.align"
|
|
:fixed="item.fixed===''?false:item.fixed"
|
|
:min-width="item.columnWidth"
|
|
:label="item.columnLabel">
|
|
<template slot-scope="scope" >
|
|
<span v-if="!item.columnHidden"> {{ scope.row[item.columnProp]}}</span>
|
|
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
<el-pagination style="margin-top: 0px"
|
|
@size-change="detailSizeChange"
|
|
@current-change="detailCurrentChange"
|
|
:current-page="no"
|
|
:page-sizes="[ 50, 100, 200, 500]"
|
|
:page-size="size"
|
|
:total="total"
|
|
layout="total,sizes, prev, pager, next, jumper">
|
|
</el-pagination>
|
|
|
|
<el-dialog title="新增报价明细" v-drag @open="openInsertQuotationDetail" @close="closeInsertQuotationDetail"
|
|
:visible.sync="quotationLeadIntoDetailFlag" width="40%" :close-on-click-modal="false">
|
|
<el-form :model="quotationDetail" ref="insertQuotationDetailForm" :rules="quotationDetailRules"
|
|
label-position="top">
|
|
<el-row :gutter="10">
|
|
<el-col :span="8">
|
|
<el-form-item label="产品编码" prop="productNo">
|
|
<span slot="label" style="" @click="clickProjectHandle"><a>产品编码</a></span>
|
|
<el-input v-model="quotationDetail.productNo" @blur="blurProjectHandle" clearable/>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="14">
|
|
<el-form-item label="产品名称" prop="productDesc">
|
|
<el-input v-model="quotationDetail.productDesc" disabled clearable/>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row :gutter="10">
|
|
<el-col :span="8">
|
|
<el-form-item label="报价数量" prop="quotationDetailQuantity">
|
|
<el-input-number style="width: 100%;margin-top: -5px;" :min="1" v-model="quotationDetail.quotationDetailQuantity" :controls="false"></el-input-number>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row>
|
|
<el-col :span="22">
|
|
<el-form-item label="">
|
|
<el-checkbox v-model="quotationDetail.flag">保存进入报价界面</el-checkbox>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row>
|
|
<el-col :span="22">
|
|
<el-form-item label="备注" style="display: block;min-height: 80px" prop="remark">
|
|
<el-input type="textarea" resize="none" v-model="quotationDetail.remark" :autosize="{minRows: 3, maxRows: 3}"
|
|
style="min-height: 80px"/>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
</el-form>
|
|
<div slot="footer" class="dialog-footer" style="margin-top: 20px">
|
|
<el-button type="primary" :loading="insertQuotationDetailLoading" @click="insertQuotationDetailBtn">保 存</el-button>
|
|
<el-button @click="quotationLeadIntoDetailFlag = false">关 闭</el-button>
|
|
</div>
|
|
</el-dialog>
|
|
<el-dialog v-drag :fullscreen="fullscreen" :visible.sync="quotationDetailFlag" @open="openQuotationDetail" @close="closeDetailEditDialog"
|
|
width="60%" top="10vh" :close-on-click-modal="false">
|
|
<div slot="title" class="medium">
|
|
<div>
|
|
<span class="el-dialog__title">报价单号 {{this.header.quotationNo+"-"+this.header.versionCode+"-"+index}}</span>
|
|
<span style="float: right;margin-right: 30px;cursor:pointer;" @click="fullscreen = !fullscreen">
|
|
<svg v-if="!fullscreen" t="1710144122404" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4774" width="16" height="16"><path d="M145.066667 85.333333h153.6c25.6 0 42.666667-17.066667 42.666666-42.666666S324.266667 0 298.666667 0H34.133333C25.6 0 17.066667 8.533333 8.533333 17.066667 0 25.6 0 34.133333 0 42.666667v256c0 25.6 17.066667 42.666667 42.666667 42.666666s42.666667-17.066667 42.666666-42.666666V145.066667l230.4 230.4c17.066667 17.066667 42.666667 17.066667 59.733334 0 17.066667-17.066667 17.066667-42.666667 0-59.733334L145.066667 85.333333z m170.666666 563.2L162.133333 802.133333l-76.8 76.8V725.333333C85.333333 699.733333 68.266667 682.666667 42.666667 682.666667s-42.666667 17.066667-42.666667 42.666666v256c0 25.6 17.066667 42.666667 42.666667 42.666667h256c25.6 0 42.666667-17.066667 42.666666-42.666667s-17.066667-42.666667-42.666666-42.666666H145.066667l76.8-76.8 153.6-153.6c17.066667-17.066667 17.066667-42.666667 0-59.733334-17.066667-17.066667-42.666667-17.066667-59.733334 0z m665.6 34.133334c-25.6 0-42.666667 17.066667-42.666666 42.666666v153.6l-76.8-76.8-153.6-153.6c-17.066667-17.066667-42.666667-17.066667-59.733334 0-17.066667 17.066667-17.066667 42.666667 0 59.733334l153.6 153.6 76.8 76.8H725.333333c-25.6 0-42.666667 17.066667-42.666666 42.666666s17.066667 42.666667 42.666666 42.666667h256c25.6 0 42.666667-17.066667 42.666667-42.666667v-256c0-25.6-17.066667-42.666667-42.666667-42.666666z m0-682.666667h-256c-25.6 0-42.666667 17.066667-42.666666 42.666667s17.066667 42.666667 42.666666 42.666666h153.6l-76.8 76.8-153.6 153.6c-17.066667 17.066667-17.066667 42.666667 0 59.733334 17.066667 17.066667 42.666667 17.066667 59.733334 0l153.6-153.6 76.8-76.8v153.6c0 25.6 17.066667 42.666667 42.666666 42.666666s42.666667-17.066667 42.666667-42.666666v-256c0-25.6-17.066667-42.666667-42.666667-42.666667z" fill="#8a8a8a" p-id="4775"></path></svg>
|
|
<svg v-else t="1710143735808" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4603" width="16" height="16"><path d="M354.133333 682.666667H256v-42.666667h170.666667v170.666667H384v-98.133334L243.2 853.333333l-29.866667-29.866666L354.133333 682.666667z m358.4 0l140.8 140.8-29.866666 29.866666-140.8-140.8V810.666667h-42.666667v-170.666667h170.666667v42.666667h-98.133334zM354.133333 384L213.333333 243.2l29.866667-29.866667L384 354.133333V256h42.666667v170.666667H256V384h98.133333z m358.4 0H810.666667v42.666667h-170.666667V256h42.666667v98.133333L823.466667 213.333333l29.866666 29.866667L712.533333 384z" fill="#444444" p-id="4604"></path></svg>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
<el-form :rules="quotationDetailRules" style="margin-top: 5px" ref="quotationDetailForm"
|
|
:model="quotationDetail" label-width="80px" :inline="true" label-position="top">
|
|
<el-form-item label="产品编码" prop="productNo">
|
|
<el-input clearable disabled style="width: 200px" v-model="quotationDetail.productNo"/>
|
|
</el-form-item>
|
|
<el-form-item label="产品名称" prop="productDesc">
|
|
<el-input clearable disabled style="width: 240px" v-model="quotationDetail.productDesc"/>
|
|
</el-form-item>
|
|
<el-form-item label="报价数量" prop="quotationDetailQuantity">
|
|
<el-input-number disabled style="width: 100%;margin-top: -5px;" :min="1" v-model="quotationDetail.quotationDetailQuantity" :controls="false"></el-input-number>
|
|
</el-form-item>
|
|
<el-form-item label="备注" style="display: block;min-height: 90px;width: 63%">
|
|
<el-input type="textarea" resize="none" disabled v-model="quotationDetail.remark" :autosize="{minRows: 3, maxRows: 3}"
|
|
style="min-height: 80px" />
|
|
</el-form-item>
|
|
</el-form>
|
|
<el-tabs v-model="activeName" @tab-click="tabClick" :style="{height:`${fullscreen?740:500}px`}" border stripe>
|
|
<el-tab-pane name="bom" label="材料">
|
|
<bill-of-materiel ref="bom" :all-search-flag.sync="allSearchFlagBom" :total-cost.sync="BOMCost" :loading-status.sync="loadingStatus" :updateTree.sync="update" v-if="quotationDetailFlag" :height="fullscreen?655:415" :detail="quotationDetail"></bill-of-materiel>
|
|
</el-tab-pane>
|
|
<el-tab-pane name="routing" label="工艺">
|
|
<quote-routing ref="routing" :machine-cost.sync="machineCost" :labor-cost.sync="laborCost" :manufacturing-cost.sync="manufacturingCost" :all-search-flag.sync="allSearchFlagRouting" v-if="quotationDetailFlag" :loading-status.sync="loadingStatus" :height="fullscreen?655:415" :detail="quotationDetail"></quote-routing>
|
|
</el-tab-pane>
|
|
<el-tab-pane name="tool" label="工具">
|
|
<tool-quotation ref="tool" :total-cost.sync="ToolCost" v-if="quotationDetailFlag" :height="fullscreen?660:420" :detail="quotationDetail"></tool-quotation>
|
|
</el-tab-pane>
|
|
<el-tab-pane name="property" label="其他成本">
|
|
<property-templates ref="property" :pack-cost.sync="packInfoCost" :shipping-cost.sync="shippingInfoCost" v-if="quotationDetailFlag" :height="fullscreen?660:420" :detail="quotationDetail" ></property-templates>
|
|
</el-tab-pane>
|
|
<el-tab-pane name="cost" label="成本&价格">
|
|
<cost-price ref="cost" :tool-cost.sync="ToolCost"
|
|
:bom-cost.sync="BOMCost" :machine-cost.sync="machineCost"
|
|
:manufacturing-cost.sync="manufacturingCost"
|
|
:labor-cost.sync="laborCost"
|
|
:pack-cost.sync="packInfoCost" :shipping-cost.sync="shippingInfoCost"
|
|
:loading-status.sync="loadingStatus"
|
|
v-if="quotationDetailFlag"
|
|
:height="fullscreen?660:420"
|
|
:detail="quotationDetail"></cost-price>
|
|
</el-tab-pane>
|
|
</el-tabs>
|
|
<div slot="footer" style="padding-top: 10px">
|
|
<el-button type="primary" :loading="editQuotationDetailLoading" @click="saveQuotationDetail">确 定</el-button>
|
|
<el-button @click=" quotationDetailFlag= false">取 消</el-button>
|
|
</div>
|
|
</el-dialog>
|
|
|
|
<el-dialog v-drag title="产品列表" @close="closeProjectPartDialog" @open="openProjectPartDialog"
|
|
:visible.sync="projectPartDialogFlag">
|
|
<!--搜索条件-->
|
|
<el-form :model="projectPartData" ref="projectPartDataForm" :inline="true" label-position="top">
|
|
<el-form-item label="产品编号" prop="toolNo">
|
|
<el-input v-model="projectPartData.testPartNo" clearable/>
|
|
</el-form-item>
|
|
<el-form-item label="产品名称" prop="toolDescription">
|
|
<el-input v-model="projectPartData.partDesc" clearable/>
|
|
</el-form-item>
|
|
<el-form-item label=" ">
|
|
<el-button @click="getProjectPartList" type="primary"> 查 询 </el-button>
|
|
</el-form-item>
|
|
</el-form>
|
|
<el-table height="300px" stripe border width="30%" @row-dblclick="dblClickProjectPartTable"
|
|
:data="projectPartTable" ref="projectPartDataTable" :style="{marginTop:'10px'}">
|
|
<el-table-column
|
|
v-for="(item,index) in projectPartDetailList" :key="index"
|
|
:sortable="item.columnSortable"
|
|
:prop="item.columnProp"
|
|
:header-align="item.headerAlign"
|
|
:show-overflow-tooltip="item.showOverflowTooltip"
|
|
:align="item.align"
|
|
:fixed="item.fixed===''?false:item.fixed"
|
|
:min-width="item.columnWidth"
|
|
:label="item.columnLabel">
|
|
<template slot-scope="scope">
|
|
<span v-if="!item.columnHidden">{{scope.row[item.columnProp]}}</span>
|
|
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-dialog>
|
|
</div>
|
|
</template>
|
|
|
|
<style scoped>
|
|
.el-input-number /deep/ .el-input__inner{
|
|
text-align: right;
|
|
padding-right: 5px !important;
|
|
}
|
|
</style>
|