Browse Source

2024-07-23

master
qiezi 1 year ago
parent
commit
f2f9b784f5
  1. 5
      src/api/quotation/quote.js
  2. 578
      src/views/modules/quotation/index.vue
  3. 565
      src/views/modules/quotation/inquiry/inquiryQuoteDetail.vue
  4. 5
      src/views/modules/quotation/requestForQuote.vue
  5. 80
      src/views/modules/quotation/sellForQuotation.vue
  6. 3892
      src/views/modules/quotation/sellForQuotation/quotationDetail.vue
  7. 52
      src/views/modules/quotation/sellForQuotation/quotationDetail/quoteBomInfo.vue
  8. 23
      src/views/modules/quotation/sellForQuotation/quotationDetail/quoteCostPrice.vue
  9. 10
      src/views/modules/quotation/sellForQuotation/quoteDetail.vue
  10. 684
      src/views/modules/quotation/sellForQuotation/quoteDetailInfo.vue

5
src/api/quotation/quote.js

@ -2,4 +2,7 @@ import {createAPI} from "../../utils/httpRequest";
export const getQuoteList = (data)=>createAPI(`/quote/list`,'post',data)
export const getQuotePage = (data,no,size)=>createAPI(`/quote/page/${no}/${size}`,'post',data)
export const getQuotePage = (data)=>createAPI(`/quote/page/${data.no}/${data.size}`,'post',data)
export const queryQuoteByInquiryNo = (data) => createAPI(`/quote/detail`,'post',data)

578
src/views/modules/quotation/index.vue

@ -1,578 +0,0 @@
<script>
import {getQuotePage} from "../../../api/quotation/quote";
import QuoteDetail from "./sellForQuotation/quoteDetail.vue";
import quotationCustomerContact from "./sellForQuotation/quotationCustomerContact.vue";
import quotationExamineAndApprove from "./sellForQuotation/quotationExamineAndApprove.vue";
import {getCustomerInformation, getProjectInformation} from "../../../api/quotation/quotationInformation";
import ProjectInfo from "./sellForQuotation/projectInfo.vue";
import CustomerInfo from "./sellForQuotation/customerInfo.vue";
import {getCustomerContactData} from "../../../api/project/project";
import CustomerContact from "./sellForQuotation/customerContact.vue";
import QuoteDetailInfo from "./sellForQuotation/quoteDetailInfo.vue";
import {getQuoteDetailList} from "../../../api/quotation/quoteDetail";
const quote = {
customerNo: "",
customerName: "",
tracker: "",
trackerName: "",
quotationNo: "",
customerInquiryNo: "",
internalInquiryNo: "",
projectId: "",
projectName: "",
quoter:"",
quoterName:"",
quotationStatus:"",
}
export default {
name: "quotationManagement",
components: {
QuoteDetailInfo,
CustomerContact,
CustomerInfo,
ProjectInfo,
quotationExamineAndApprove,
quotationCustomerContact,
QuoteDetail,
},
props:{
height:{
type:Number,
default:300,
},
},
data(){
return {
quoteSearch:{
...quote,
startDate:"",
endDate:"",
},
no: 0,
size:50,
total:0,
quotePageLoading:false,
quoteList:[],
currentQuote:{
...quote,
},
quoteSave:{
...quote,
},
columnList: [
{
userId: this.$store.state.user.name,
functionId: 102004,
serialNumber: '102004Table1QuotationNo',
tableId: '102004Table1',
tableName: '报价信息表',
columnProp: 'quotationNo',
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: 102004,
serialNumber: '102004Table1QuotationDate',
tableId: '102004Table1',
tableName: '报价信息表',
columnProp: 'quotationDate',
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: 102004,
serialNumber: '102004Table1CustomerNo',
tableId: '102004Table1',
tableName: '报价信息表',
columnProp: 'customerNo',
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: 102004,
serialNumber: '102004Table1CustomerName',
tableId: '102004Table1',
tableName: '报价信息表',
columnProp: 'customerName',
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: 102004,
serialNumber: '102004Table1ProjectId',
tableId: '102004Table1',
tableName: '报价信息表',
columnProp: 'projectId',
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: 102004,
serialNumber: '102004Table1ProjectName',
tableId: '102004Table1',
tableName: '报价信息表',
columnProp: 'projectName',
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: 102004,
serialNumber: '102004Table1QuoterName',
tableId: '102004Table1',
tableName: '报价信息表',
columnProp: 'quoterName',
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: 102004,
serialNumber: '102004Table1TrackerName',
tableId: '102004Table1',
tableName: '报价信息表',
columnProp: 'trackerName',
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: 102004,
serialNumber: '102004Table1Currency',
tableId: '102004Table1',
tableName: '报价信息表',
columnProp: 'currency',
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: 102004,
serialNumber: '102004Table1QuotationStatus',
tableId: '102004Table1',
tableName: '报价信息表',
columnProp: 'quotationStatus',
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: 102004,
serialNumber: '102004Table1CustomerInquiryNo',
tableId: '102004Table1',
tableName: '报价信息表',
columnProp: 'customerInquiryNo',
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: 102004,
serialNumber: '102004Table1InternalInquiryNo',
tableId: '102004Table1',
tableName: '报价信息表',
columnProp: 'internalInquiryNo',
headerAlign: 'center',
align: 'center',
columnLabel: '内部询价单号',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 120
},
],
activeTabName:"quote_detail",
quoteDetailList:[],
projectInfo:{},
customerInfo:{},
customerContactList:[],
}
},
watch:{
currentQuote(newVal,oldVal){
//
if (this.currentQuote && this.currentQuote.quotationHeaderId){
this.getQuoteDetailList();//
this.getQuoteProjectInfo();//
this.getCustomerInformation();//
this.getCustomerContactData();//
}
}
},
methods:{
getQuotePage(){
let params = {
...this.quoteSearch,
site:this.$store.state.user.site,
}
this.quotePageLoading = true;
getQuotePage(params,this.no,this.size).then(({data})=>{
if (data && data.code === 0){
this.quoteList = data.rows;
this.total = data.total;
if (this.total > 0){
this.currentQuote = this.quoteList[0];
}
}else {
this.$message.warning(data.msg)
}
this.quotePageLoading = false;
}).catch((error)=>{
this.$message.error(error);
this.quotePageLoading = false;
})
},
rowStyle({row}){
if (row.quotationHeaderId === this.currentQuote.quotationHeaderId) {
return {'background-color': '#E8F7F6'}
}
},
rowClick(row){
this.currentQuote = {...row};
},
changeQuoteSize(val){
this.size = val;
this.getQuotePage();
},
changeQuoteNo(val) {
this.no = val;
this.getQuotePage();
},
getQuoteProjectInfo(){
let params = {
site:this.currentQuote.site,
projectId:this.currentQuote.projectId,
}
getProjectInformation(params).then(({data})=>{
if (data && data.code === 0){
if (data.rows && data.rows.length > 0){
this.projectInfo = data.rows[0];
}else {
this.projectInfo = {};
}
}else {
this.$message.warning(data.msg)
}
}).catch((error)=>{
this.$message.error(error);
})
},
getCustomerInformation(){
let params = {
site:this.currentQuote.site,
customerNo:this.currentQuote.customerNo,
}
getCustomerInformation(params).then(({data})=>{
if (data && data.code === 0){
if (data.rows && data.rows.length > 0){
this.customerInfo = data.rows[0];
}else {
this.customerInfo = {};
}
}else {
this.$message.warning(data.msg)
}
}).catch((error)=>{
this.$message.error(error);
})
},
getCustomerContactData(){
let params = {
site:this.currentQuote.site,
customerId:this.currentQuote.customerNo,
projectId:this.currentQuote.projectId,
}
getCustomerContactData(params).then(({data})=>{
if (data && data.code === 0){
this.customerContactList = data.rows;
}else {
this.$message.warning(data.msg)
}
}).catch((error)=>{
this.$message.error(error);
})
},
getQuoteDetailList(){
let params = {
quotationHeaderId:this.currentQuote.quotationHeaderId,
}
getQuoteDetailList(params).then(({data})=>{
if (data && data.code === 0){
this.quoteDetailList = data.rows;
}else {
this.$message.warning(data.msg)
}
}).catch((error)=>{
this.$message.error(error);
})
}
},
created() {
this.getQuotePage();
},
}
</script>
<template>
<div>
<div style="width: 1200px">
<el-form label-position="top" :model="quoteSearch">
<el-row :gutter="10">
<el-col :span="3">
<el-form-item label="客户编码">
<el-input v-model="quoteSearch.customerNo" clearable/>
</el-form-item>
</el-col>
<el-col :span="3">
<el-form-item label="客户名称">
<el-input v-model="quoteSearch.customerName" clearable/>
</el-form-item>
</el-col>
<el-col :span="3">
<el-form-item label="采购专员">
<el-input v-model="quoteSearch.trackerName" clearable/>
</el-form-item>
</el-col>
<el-col :span="3">
<el-form-item label="报价单号">
<el-input v-model="quoteSearch.quotationNo" clearable/>
</el-form-item>
</el-col>
<el-col :span="3">
<el-form-item label="客户询价单号">
<el-input v-model="quoteSearch.customerInquiryNo" clearable/>
</el-form-item>
</el-col>
<el-col :span="3">
<el-form-item label="内部询价单号">
<el-input v-model="quoteSearch.internalInquiryNo" clearable/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="3">
<el-form-item label="项目编码">
<el-input v-model="quoteSearch.projectId" clearable/>
</el-form-item>
</el-col>
<el-col :span="3">
<el-form-item label="项目名称">
<el-input v-model="quoteSearch.projectName" clearable/>
</el-form-item>
</el-col>
<el-col :span="3">
<el-form-item label="报价专员">
<el-input v-model="quoteSearch.quoterName" clearable/>
</el-form-item>
</el-col>
<el-col :span="3">
<el-form-item label="状态">
<el-select v-model="quoteSearch.quotationStatus">
<el-option label="全部" value=""></el-option>
<el-option label="草稿" value="草稿"></el-option>
<el-option label="下达" value="下达"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-row>
<el-col :span="11">
<el-form-item label="报价日期">
<el-date-picker
value-format="yyyy-MM-dd"
v-model="quoteSearch.startDate"
style="width: 100%"
type="date"
placeholder=" ">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="2">
<el-form-item label=" ">
<div style="text-align: center;"><i class="el-icon-right"></i></div>
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item label=" ">
<el-date-picker
value-format="yyyy-MM-dd"
style="width: 100%"
v-model="quoteSearch.endDate"
type="date"
placeholder=" ">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
</el-col>
<el-col :span="3">
<el-form-item label=" ">
<el-button plain type="primary" @click="getQuotePage"> </el-button>
<el-button type="primary" > </el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<el-table :data="quoteList" v-loading="quotePageLoading" @row-click="rowClick" border :height="height" :row-style="rowStyle">
<el-table-column label="操作" align="center" fixed="right" width="160">
<template slot-scope="scope">
<el-link >下达</el-link>
<el-link >编辑</el-link>
<el-link >删除</el-link>
<el-link >重新报价</el-link>
</template>
</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]}}{{index === 0 ? ("-" + scope.row['versionCode']) : ''}}</span>
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]"
style="width: 100px; height: 80px"/></span>
</template>
</el-table-column>
</el-table>
<div>
<el-pagination style="margin-top: 5px"
@size-change="changeQuoteSize"
@current-change="changeQuoteNo"
:current-page="no"
:page-sizes="[50, 100, 200, 500]"
:page-size="size"
:total="total"
layout="total,sizes, prev, pager, next, jumper">
</el-pagination>
</div>
<el-tabs v-model="activeTabName"
style="box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);border: 2px;min-height: 420px;margin-top: 5px;">
<el-tab-pane label="报价明细" name="quote_detail">
<quote-detail :header="currentQuote"></quote-detail>
</el-tab-pane>
<el-tab-pane label="报价明细" name="quote_detail_info">
<quote-detail-info :height="330" :quote="currentQuote" :data-list="quoteDetailList"></quote-detail-info>
</el-tab-pane>
<el-tab-pane label="报价审批" name="quotation_examine_and_approve">
<quotation-examine-and-approve></quotation-examine-and-approve>
</el-tab-pane>
<el-tab-pane label="项目信息" name="project_info">
<project-info :project="projectInfo"></project-info>
</el-tab-pane>
<el-tab-pane label="客户信息" name="customer_info">
<customer-info :customer="customerInfo"></customer-info>
</el-tab-pane>
<el-tab-pane label="客户联系人" name="customer_contact">
<customer-contact :data-list="customerContactList" :height="300"></customer-contact>
</el-tab-pane>
</el-tabs>
</div>
</template>
<style scoped>
</style>

565
src/views/modules/quotation/inquiry/inquiryQuoteDetail.vue

@ -0,0 +1,565 @@
<script>
import {queryQuoteByInquiryNo} from "../../../../api/quotation/quote";
export default {
name: "inquiryQuoteDetail",
props:{
inquiryNo:{
type: String,
required: true
},
site:{
type: String,
required: true
},
height:{
type: [String,Number],
default:"47vh",
}
},
data(){
return{
queryLoading:false,
dataList:[],
columns:[
{
userId: this.$store.state.user.name,
functionId: 102001,
serialNumber: '102001Table10QuotationNo',
tableId: '102001Table10',
tableName: '报价详情信息表',
columnProp: 'quotationNo',
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: 102001,
serialNumber: '102001Table10QuotationDate',
tableId: '102001Table10',
tableName: '报价详情信息表',
columnProp: 'quotationDate',
headerAlign: 'center',
align: 'center',
columnLabel: '报价日期',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 200
},
{
userId: this.$store.state.user.name,
functionId: 102001,
serialNumber: '102001Table10ProductNo',
tableId: '102001Table10',
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: 102001,
serialNumber: '102001Table10ProductDesc',
tableId: '102001Table10',
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: 102001,
serialNumber: '102001Table10QuotationDetailQuantity',
tableId: '102001Table10',
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: 102001,
serialNumber: '102001Table10ComputePartCost',
tableId: '102001Table10',
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: 102001,
serialNumber: '102001Table10ComputeMachineCost',
tableId: '102001Table10',
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: 102001,
serialNumber: '102001Table10ComputeLabourCost',
tableId: '102001Table10',
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: 102001,
serialNumber: '102001Table10ComputeFabricateCost',
tableId: '102001Table10',
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: 102001,
serialNumber: '102001Table10ComputeToolCost',
tableId: '102001Table10',
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: 102001,
serialNumber: '102001Table10AdjustPartCost',
tableId: '102001Table10',
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: 102001,
serialNumber: '102001Table10AdjustMachineCost',
tableId: '102001Table10',
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: 102001,
serialNumber: '102001Table10AdjustLabourCost',
tableId: '102001Table10',
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: 102001,
serialNumber: '102001Table10AdjustFabricateCost',
tableId: '102001Table10',
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: 102001,
serialNumber: '102001Table10AdjustToolCost',
tableId: '102001Table10',
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: 102001,
serialNumber: '102001Table10DetailOtherCost',
tableId: '102001Table10',
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: 102001,
serialNumber: '102001Table10DetailManageCost',
tableId: '102001Table10',
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: 102001,
serialNumber: '102001Table10DetailTotalCost',
tableId: '102001Table10',
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: 102001,
serialNumber: '102001Table10DetailProfitRate',
tableId: '102001Table10',
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: 102001,
serialNumber: '102001Table10DetailProfitAmount',
tableId: '102001Table10',
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: 102001,
serialNumber: '102001Table10FinalUntaxedPrice',
tableId: '102001Table10',
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: 102001,
serialNumber: '102001Table10TaxRate',
tableId: '102001Table10',
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: 102001,
serialNumber: '102001Table10FinalTaxedPrice',
tableId: '102001Table10',
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: 102001,
serialNumber: '102001Table10SystemComputePrice',
tableId: '102001Table10',
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: 102001,
serialNumber: '102001Table10QuotationDetailStatus',
tableId: '102001Table10',
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: 102001,
serialNumber: '102001Table10Remark',
tableId: '102001Table10',
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: 102001,
serialNumber: '102001Table10InternalInquiryNo',
tableId: '102001Table10',
tableName: '报价详情信息表',
columnProp: 'internalInquiryNo',
headerAlign: 'center',
align: 'left',
columnLabel: '询价单号',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 120
},
],
};
},
methods:{
handleQuery(){
let params = {
internalInquiryNo: this.inquiryNo,
site: this.site
}
this.queryLoading = true;
queryQuoteByInquiryNo(params).then(({data})=>{
if (data && data.code === 0){
this.dataList = data.rows;
}else {
this.$message.warning(data.msg);
}
this.queryLoading = false;
}).catch((error)=>{
this.$message.error(error)
this.queryLoading = false;
})
},
handleClickDetail(row){
this.$router.push({
name: 'quotation-sellForQuotation',
params:{
quotationHeaderId:row.quotationHeaderId,
from:'inquiry'
}
})
}
},
watch:{
inquiryNo(newVal, oldVal){
this.handleQuery();
},
site(newVal, oldVal){
this.handleQuery();
}
}
}
</script>
<template>
<el-table :height="height" :data="dataList" border v-loading="queryLoading" style="margin-top: 5px">
<el-table-column label="操作" min-width="80px" fixed="left" align="center">
<template slot-scope="scope">
<a @click="handleClickDetail(scope.row)">详情</a>
</template>
</el-table-column>
<el-table-column
v-for="(item,index) in columns" :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>
</template>
<style scoped>
</style>

5
src/views/modules/quotation/requestForQuote.vue

@ -986,9 +986,8 @@
</el-row>
</el-form>
</el-tab-pane>
<el-tab-pane label="报价明细" name="quote_detail" >
<inquiry-quote-detail :site="quotationCurrentRow.site" :inquiry-no="quotationCurrentRow.quotationNo"></inquiry-quote-detail>
</el-tab-pane>
</el-tabs>
@ -1037,6 +1036,7 @@ import priceCheckProperties from "./priceCheckProperties.vue";
import {getPriceCheckPropertiesList} from "../../../api/quotation/priceCheckProperties";
import PriceCheckDetail from "./sellForQuotation/priceCheckDetail/priceCheckDetail.vue";
import {getPriceCheckDetailList} from "../../../api/quotation/priceCheckDetail";
import InquiryQuoteDetail from "./inquiry/inquiryQuoteDetail.vue";
export default {
computed: {
@ -1057,6 +1057,7 @@ export default {
},
},
components: {
InquiryQuoteDetail,
PriceCheckDetail,
TestProperties,
PriceCheckProperties,

80
src/views/modules/quotation/sellForQuotation.vue

@ -149,9 +149,6 @@
<!-- 标签页 -->
<el-tabs v-model="activeTabName" @tab-click="handleClickTab"
style="box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);border: 2px;min-height: 420px;margin-top: 5px;">
<el-tab-pane label="报价明细" name="quotation_detail" v-if="false">
<quotation-detail v-if="false" :quotation-header="quotationHeader"></quotation-detail>
</el-tab-pane>
<el-tab-pane label="报价明细" name="quote_detail">
<quote-detail :header="quotationHeader"></quote-detail>
</el-tab-pane>
@ -384,7 +381,6 @@
</template>
<script>
import quotationDetail from "./sellForQuotation/quotationDetail.vue";
import quotationExamineAndApprove from "./sellForQuotation/quotationExamineAndApprove.vue";
import quotationProjectInformation from "./sellForQuotation/quotationProjectInformation.vue";
import quotationCustomerInformation from "./sellForQuotation/quotationCustomerInformation.vue";
@ -402,12 +398,12 @@ import {
import QuoteDetail from "./sellForQuotation/quoteDetail.vue";
import {searchProjectInfoList} from "../../../api/quotation/quotationInformation";
import {getQuotationHeaderByPagePost} from "../../../api/quotation/quotationHeader";
import {getQuotePage} from "../../../api/quotation/quote";
export default {
components: {
QuoteDetail,
Chooselist,
quotationDetail,
quotationExamineAndApprove,
quotationProjectInformation,
quotationCustomerInformation,
@ -876,7 +872,7 @@ export default {
},
//
deleteQuotationHeader(row) {
this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {
this.$confirm('确定删除该报价单吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
@ -1237,6 +1233,53 @@ export default {
}
}
})
},
routerWatch(){
if (this.$route.params && this.$route.params.from && this.$route.params.from === 'inquiry'){
let params = {
quotationHeaderId:this.$route.params.quotationHeaderId,
no:1,
size:this.size,
}
getQuotePage(params).then(({data})=>{
if (data && data.code === 0){
this.tableData = data.rows;
this.total = data.total;
if (this.tableData.length > 0) {
this.quotationHeader = this.tableData[0];
} else {
this.quotationHeader = null;
}
}else {
this.$message.warning(data.msg)
}
}).catch((error)=>{
this.$message.error(error)
})
}else if (this.$route.params.quotationNo || this.$route.params.version) {
let params = {
quotationNo: this.$route.params.quotationNo,
versionCode: this.$route.params.version,
site: this.$store.state.user.site,
}
getQuotationHeaderByPagePost(params,undefined,this.no,this.size).then(({data})=>{
if (data && data.code === 0){
this.tableData = data.rows;
this.total = data.total;
if (this.tableData.length > 0) {
this.quotationHeader = this.tableData[0];
} else {
this.quotationHeader = null;
}
}else {
this.$message.warning(data.msg)
}
}).catch((error)=>{
this.$message.error(error)
})
}else {
this.initData();//
}
}
},
computed: {},
@ -1260,30 +1303,7 @@ export default {
mounted() {
},
activated() {
if (this.$route.params.quotationNo || this.$route.params.version) {
let params = {
quotationNo: this.$route.params.quotationNo,
versionCode: this.$route.params.version,
site: this.$store.state.user.site,
}
getQuotationHeaderByPagePost(params,undefined,this.no,this.size).then(({data})=>{
if (data && data.code === 0){
this.tableData = data.rows;
this.total = data.total;
if (this.tableData.length > 0) {
this.quotationHeader = this.tableData[0];
} else {
this.quotationHeader = null;
}
}else {
this.$message.warning(data.msg)
}
}).catch((error)=>{
this.$message.error(error)
})
}else {
this.initData();//
}
this.routerWatch()
},
}
</script>

3892
src/views/modules/quotation/sellForQuotation/quotationDetail.vue
File diff suppressed because it is too large
View File

52
src/views/modules/quotation/sellForQuotation/quotationDetail/quoteBomInfo.vue

@ -1,52 +0,0 @@
<script>
export default {
name: "quoteBomInfo",
props:{
quoteDetail:{
type:Object,
default:()=>{}
},
dataList:{
type:Array,
default:()=>[]
},
height:{
type:Number,
default:0
}
},
data(){
return{
bomList:[],
showAll:false
}
},
methods:{},
watch:{
showAll(newVal,oldVal){
if (newVal === true){
}else {
}
}
}
}
</script>
<template>
<div>
<div>
<el-link style="cursor:pointer;margin-right: 10px">切换版本</el-link>
<el-checkbox v-model="showAll">全级BOM结构</el-checkbox>
</div>
<div style="display: flex">
<div style="width: 25%">1</div>
<div style="width: 75%">2</div>
</div>
</div>
</template>
<style scoped>
</style>

23
src/views/modules/quotation/sellForQuotation/quotationDetail/quoteCostPrice.vue

@ -1,23 +0,0 @@
<script>
export default {
name: "quoteCostPrice",
props:{
quoteDetail:{
type:Object,
default:()=>{}
},
height:{
type:Number,
default:0
}
}
}
</script>
<template>
<div></div>
</template>
<style scoped>
</style>

10
src/views/modules/quotation/sellForQuotation/quoteDetail.vue

@ -1015,6 +1015,12 @@ export default {
clickProjectHandle(){
this.projectPartData.testPartNo = this.quotationDetail.productNo
this.projectPartDialogFlag = true
},
handleToBom(row){
},
handleToRouting(row){
}
},
}
@ -1031,11 +1037,13 @@ export default {
<el-table-column
label="操作"
fixed
width="120" align="center">
width="140" 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>
<el-link style="cursor: pointer" @click="deleteQuotationDetailData(row)">删除</el-link>
</template>
</el-table-column>
<el-table-column

684
src/views/modules/quotation/sellForQuotation/quoteDetailInfo.vue

@ -1,684 +0,0 @@
<script>
import PropertyTemplates from "./quotationDetail/propertyTemplates.vue";
import CostPrice from "./quotationDetail/costPrice.vue";
import BillOfMateriel from "./quotationDetail/billOfMateriel.vue";
import ToolQuotation from "./quotationDetail/toolQuotation.vue";
import QuoteRouting from "./quotationDetail/quoteRouting.vue";
import QuoteOtherCost from "./quotationDetail/quoteOtherCost.vue";
import {getQuotePropertiesBaseList, getQuotePropertiesList} from "../../../../api/quotation/quoteProperties";
import QuoteBomInfo from "./quotationDetail/quoteBomInfo.vue";
const quoteDetail = {
quotationDetailId:undefined,
quotationHeaderId:undefined,
productNo:undefined,
productDesc:undefined,
internalInquiryNo:undefined,
quotationDetailQuantity:undefined,
quotationDetailCount:undefined,
quotationDetailStatus:undefined,
computePartCost:undefined,
computeLabourCost:undefined,
computeMachineCost:undefined,
computeFabricateCost:undefined,
computeToolCost:undefined,
adjustPartCost:undefined,
adjustLabourCost:undefined,
adjustFabricateCost:undefined,
adjustToolCost:undefined,
adjustMachineCost:undefined,
detailOtherCost:undefined,
detailManageCost:undefined,
detailTotalCost:undefined,
detailProfitRate:undefined,
detailProfitAmount:undefined,
systemComputeAmount:undefined,
systemComputePrice:undefined,
finalUntaxedPrice:undefined,
finalTaxedPrice:undefined,
taxRate:13,
remark:undefined,
active:undefined,
}
export default {
name: "quoteDetailInfo",
components: {QuoteBomInfo, QuoteOtherCost, QuoteRouting, ToolQuotation, BillOfMateriel, CostPrice, PropertyTemplates},
props:{
quote:{
type:Object,
default:()=>{},
},
height:{
type:Number,
default:300,
},
dataList:{
type:Array,
default:()=>[],
}
},
data(){
return{
saveQuoteDetail:{
...quoteDetail,
},
index:'',
saveVisible:false,
columnList: [
{
userId: this.$store.state.user.name,
functionId: 102005,
serialNumber: '102005Table2ProductNo',
tableId: '102005Table2',
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: 102005,
serialNumber: '102005Table2ProductDesc',
tableId: '102005Table2',
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: 102005,
serialNumber: '102005Table2QuotationDetailQuantity',
tableId: '102005Table2',
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: 102005,
serialNumber: '102005Table2ComputePartCost',
tableId: '102005Table2',
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: 102005,
serialNumber: '102005Table2ComputeMachineCost',
tableId: '102005Table2',
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: 102005,
serialNumber: '102005Table2ComputeLabourCost',
tableId: '102005Table2',
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: 102005,
serialNumber: '102005Table2ComputeFabricateCost',
tableId: '102005Table2',
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: 102005,
serialNumber: '102005Table2ComputeToolCost',
tableId: '102005Table2',
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: 102005,
serialNumber: '102005Table2AdjustPartCost',
tableId: '102005Table2',
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: 102005,
serialNumber: '102005Table2AdjustMachineCost',
tableId: '102005Table2',
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: 102005,
serialNumber: '102005Table2AdjustLabourCost',
tableId: '102005Table2',
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: 102005,
serialNumber: '102005Table2AdjustFabricateCost',
tableId: '102005Table2',
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: 102005,
serialNumber: '102005Table2AdjustToolCost',
tableId: '102005Table2',
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: 102005,
serialNumber: '102005Table2DetailOtherCost',
tableId: '102005Table2',
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: 102005,
serialNumber: '102005Table2DetailManageCost',
tableId: '102005Table2',
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: 102005,
serialNumber: '102005Table2DetailTotalCost',
tableId: '102005Table2',
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: 102005,
serialNumber: '102005Table2DetailProfitRate',
tableId: '102005Table2',
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: 102005,
serialNumber: '102005Table2DetailProfitAmount',
tableId: '102005Table2',
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: 102005,
serialNumber: '102005Table2FinalUntaxedPrice',
tableId: '102005Table2',
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: 102005,
serialNumber: '102005Table2TaxRate',
tableId: '102005Table2',
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: 102005,
serialNumber: '102005Table2FinalTaxedPrice',
tableId: '102005Table2',
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: 102005,
serialNumber: '102005Table2SystemComputePrice',
tableId: '102005Table2',
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: 102005,
serialNumber: '102005Table2QuotationDetailStatus',
tableId: '102005Table2',
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: 102005,
serialNumber: '102005Table2Remark',
tableId: '102005Table2',
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: 102005,
serialNumber: '102005Table2InternalInquiryNo',
tableId: '102005Table2',
tableName: '报价详情信息表',
columnProp: 'internalInquiryNo',
headerAlign: 'center',
align: 'left',
columnLabel: '询价单号',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 120
},
],
fullscreen: false,
activeName:"bom",
bomTreeList:[],
quoteOtherCostList:[],
quotePropertyList:[],
}
},
methods:{
handleUpdate(row,index){
index = index+1
this.saveQuoteDetail = {...row}
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.saveVisible = true
},
closeSaveDialog(){
this.activeName = "bom";
},
handleQuoteOtherCostRefresh(val){
let params = {
itemNo:val.itemNo,
itemDesc:val.itemDesc,
site:this.saveQuoteDetail.site,
quotationDetailId: this.saveQuoteDetail.quotationDetailId,
}
getQuotePropertiesBaseList(params).then(({data})=>{
if (data && data.code === 0){
this.quoteOtherCostList = data.rows1;
this.quotePropertyList = data.rows2;
}else {
this.$message.warning(data.msg)
}
}).catch((error)=>{
this.$message.error(error)
})
},
getQuotePropertiesList(){
let params = {
site:this.saveQuoteDetail.site,
quotationDetailId: this.saveQuoteDetail.quotationDetailId,
}
getQuotePropertiesList(params).then(({data})=>{
if (data && data.code === 0){
this.quoteOtherCostList = data.rows;
}else {
this.$message.warning(data.msg)
}
}).catch((error)=>{
this.$message.error(error)
})
}
},
watch:{
saveVisible(newVal,oldVal){
if (newVal === true){
this.getQuotePropertiesList();
}else {
this.quoteOtherCostList = [];
this.quotePropertyList = [];
this.bomTreeList = [];
}
}
},
}
</script>
<template>
<div>
<div style="margin-bottom: 10px;padding-left: 10px">
<el-button type="primary" >新增</el-button>
</div>
<el-table :data="dataList"
:height="height" border
:header-cell-style="{background:'rgba(23,179,163)',color:'#fff'}">
<el-table-column
label="操作"
fixed="right"
width="120" align="center">
<template slot-scope="{row,$index}">
<el-link v-if="row.quotationDetailStatus !== '下达'">下达</el-link>
<el-link @click="handleUpdate(row,$index)">编辑</el-link>
<el-link >删除</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-dialog v-drag :fullscreen="fullscreen" :visible.sync="saveVisible"
width="1200px" top="10vh" :close-on-click-modal="false" @close="closeSaveDialog">
<div slot="title" class="medium">
<div>
<span class="el-dialog__title">报价单号 {{this.quote.quotationNo+"-"+this.quote.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>
<div style="width: 600px;margin-top: 5px">
<el-form :model="saveQuoteDetail" label-position="top">
<el-row :gutter="10">
<el-col :span="6">
<el-form-item label="产品编码" prop="productNo">
<el-input clearable disabled v-model="saveQuoteDetail.productNo"/>
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="产品名称" prop="productDesc">
<el-input clearable disabled v-model="saveQuoteDetail.productDesc"/>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="报价数量" prop="quotationDetailQuantity">
<el-input-number disabled :min="1" v-model="saveQuoteDetail.quotationDetailQuantity" :controls="false"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="备注">
<el-input type="textarea" resize="none" disabled v-model="saveQuoteDetail.remark" :autosize="{minRows: 3, maxRows: 3}"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<el-tabs v-model="activeName" :style="{height:`${fullscreen?740:500}px`}">
<el-tab-pane name="bom" label="材料">
<quote-bom-info :height="fullscreen?660:420" :quote-detail="saveQuoteDetail" :data-list="bomTreeList"></quote-bom-info>
</el-tab-pane>
<el-tab-pane name="routing" label="工艺"></el-tab-pane>
<el-tab-pane name="tool" label="工具"></el-tab-pane>
<el-tab-pane name="property" label="其他成本">
<quote-other-cost @refresh="handleQuoteOtherCostRefresh" :height="fullscreen?660:420" v-if="saveVisible" :quote-detail="saveQuoteDetail" :search-data-list="quotePropertyList" :data-list="quoteOtherCostList"></quote-other-cost>
</el-tab-pane>
<el-tab-pane name="cost" label="成本&价格"></el-tab-pane>
</el-tabs>
<div slot="footer" style="padding-top: 10px">
<el-button type="primary"> </el-button>
<el-button @click=" saveVisible= false"> </el-button>
</div>
</el-dialog>
</div>
</template>
<style scoped>
/deep/ .el-form-item--medium .el-form-item__content{
height: auto;
line-height: 1.5;
}
</style>
Loading…
Cancel
Save