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.
1619 lines
57 KiB
1619 lines
57 KiB
<template>
|
|
<div class="mode-config">
|
|
<div style="width: 1200px">
|
|
<el-form label-position="top" :model="searchData">
|
|
<el-row :gutter="10">
|
|
<el-col :span="3">
|
|
<el-form-item label="客户编码">
|
|
<el-input v-model="searchData.customerNo" clearable/>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="3">
|
|
<el-form-item label="客户名称">
|
|
<el-input v-model="searchData.customerName" clearable/>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="3">
|
|
<el-form-item label="采购专员">
|
|
<el-input v-model="searchData.trackerName" clearable/>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="3">
|
|
<el-form-item label="报价单号">
|
|
<el-input v-model="searchData.quotationNo" clearable/>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="3">
|
|
<el-form-item label="客户询价单号">
|
|
<el-input v-model="searchData.customerInquiryNo" clearable/>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="3">
|
|
<el-form-item label="内部询价单号">
|
|
<el-input v-model="searchData.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="searchData.projectId" clearable/>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="3">
|
|
<el-form-item label="项目名称">
|
|
<el-input v-model="searchData.projectName" clearable/>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="3">
|
|
<el-form-item label="报价专员">
|
|
<el-input v-model="searchData.quoterName" clearable/>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="3">
|
|
<el-form-item label="状态">
|
|
<el-select v-model="searchData.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="searchData.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="searchData.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="initDataBtn">查 询</el-button>
|
|
<el-button type="primary" @click="insertDiaLogFlag = true">新 增</el-button>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
</el-form>
|
|
</div>
|
|
<el-table :data="tableData" v-loading="initQuotationHeaderLoading" :row-style="quotationHeaderRowStyle"
|
|
element-loading-text="数据正在加载中"
|
|
element-loading-spinner="el-icon-loading" @row-click="rowClickQuotation" border
|
|
style="width: 100%;margin-top: 12px" :height="height">
|
|
<el-table-column
|
|
label="操作"
|
|
align="center"
|
|
fixed
|
|
width="160">
|
|
<template slot-scope="scope">
|
|
<el-link style="cursor: pointer" v-if="scope.row.quotationStatus === '草稿'"
|
|
@click="handleUpdateStatus(scope.row)">下达
|
|
</el-link>
|
|
<el-link style="cursor: pointer" v-if="scope.row.quotationStatus === '下达'" @click="handleUpdateStatus(scope.row,true)">取消下达</el-link>
|
|
<el-link style="cursor: pointer" v-if="scope.row.quotationStatus !== '草稿'" @click="handleDetail(scope.row)">详情</el-link>
|
|
<el-link style="cursor: pointer" v-if="scope.row.quotationStatus === '草稿'" @click="editQuotationHeader(scope.row)">编辑</el-link>
|
|
<el-link style="cursor: pointer" v-if="scope.row.quotationStatus === '草稿'" @click="deleteQuotationHeader(scope.row)">删除</el-link>
|
|
<el-link style="cursor: pointer" @click="quotationAgain(scope.row)">重新报价</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">
|
|
<template v-if="item.columnProp === 'internalInquiryNo'">
|
|
<a @click="handleRouter(scope.row[item.columnProp])" v-if="scope.row[item.columnProp]">{{ scope.row[item.columnProp] }}</a>
|
|
</template>
|
|
<template v-else>
|
|
<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>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
<!-- 分页插件 -->
|
|
<el-pagination style="margin-top: 0px"
|
|
@size-change="quotationHeaderSizeChange"
|
|
@current-change="quotationHeaderCurrentChange"
|
|
:current-page="no"
|
|
:page-sizes="[20, 50, 100, 200, 500]"
|
|
:page-size="size"
|
|
:total="total"
|
|
layout="total,sizes, prev, pager, next, jumper">
|
|
</el-pagination>
|
|
<!-- 标签页 -->
|
|
<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="quote_detail">
|
|
<quote-detail :header="quotationHeader"></quote-detail>
|
|
</el-tab-pane>
|
|
<el-tab-pane label="项目信息" name="quotation_project_information">
|
|
<quotation-project-information :quotation-header="quotationHeader"></quotation-project-information>
|
|
</el-tab-pane>
|
|
<el-tab-pane label="客户信息" name="quotation_customer_information">
|
|
<customer-info :project="quotationHeader"></customer-info>
|
|
</el-tab-pane>
|
|
<el-tab-pane label="客户联系人" name="quotation_customer_contact">
|
|
<quotation-customer-contact :quotation-header="quotationHeader"></quotation-customer-contact>
|
|
</el-tab-pane>
|
|
<el-tab-pane label="报价-附件信息" name="quote_oss">
|
|
<oss-components label="报价单号"
|
|
:columns="ossColumns"
|
|
:order-ref1="quotationHeader.site?quotationHeader.site:''"
|
|
:order-ref2="`${quotationHeader.quotationNo}-${quotationHeader.versionCode}`">
|
|
</oss-components>
|
|
</el-tab-pane>
|
|
<el-tab-pane label="询价-基本信息" name="request">
|
|
<price-check-properties ref="tabProperties"
|
|
v-model:data-list="priceCheckPropertiesList"
|
|
height="35vh"></price-check-properties>
|
|
</el-tab-pane>
|
|
<el-tab-pane label="询价-附件信息" name="oss">
|
|
<oss-components label="询价单号"
|
|
:columns="ossColumns"
|
|
:order-ref1="quotationHeader.site"
|
|
:order-ref2="quotationHeader.internalInquiryNo?quotationHeader.internalInquiryNo:''">
|
|
</oss-components>
|
|
</el-tab-pane>
|
|
<!-- 审批信息 -->
|
|
<el-tab-pane label="审批信息" name="approvalInformation">
|
|
<approval-information ref="approvalTable" v-model:data-list="approvalList" :height="300"></approval-information>
|
|
</el-tab-pane>
|
|
</el-tabs>
|
|
|
|
<!-- 新增弹框 -->
|
|
<el-dialog
|
|
:title="insertData.quotationHeaderId?`编辑销售报价-${insertData.quotationNo}-${insertData.versionCode}`:`销售报价`"
|
|
@close="closeInsertDialog" :close-on-click-modal="false" v-drag :visible.sync="insertDiaLogFlag" width="500px">
|
|
<el-form :rules="rules" label-position="top" ref="insertQuotationForm" :model="insertData"
|
|
label-width="120px">
|
|
<el-row :gutter="10">
|
|
<el-col :span="8">
|
|
<el-form-item label="内部询价单号" prop="internalInquiryNo">
|
|
<span slot="label" v-if="!detailDialogVisible" @click="clickInternalInquiryNoHandle"><a herf="#">内部询价单号</a></span>
|
|
<el-input v-model="insertData.internalInquiryNo" :disabled="detailDialogVisible" @blur="blurInternalInquiryNoHandle" clearable/>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="16">
|
|
<el-form-item label="客户询价单号" prop="customerInquiryNo">
|
|
<el-input v-model="insertData.customerInquiryNo" :disabled="detailDialogVisible" clearable/>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row :gutter="10">
|
|
<el-col :span="8">
|
|
<el-form-item prop="customerNo" label="客户编码">
|
|
<span slot="label" v-if="insertData.internalInquiryNo ==='' && !detailDialogVisible" @click="getBaseList(102,1)">
|
|
<a>客户编码</a>
|
|
</span>
|
|
<el-input v-model="insertData.customerNo" :disabled="insertData.internalInquiryNo !=='' || detailDialogVisible"
|
|
clearable @change="clearCustomer" @blur="handleQueryCustomer"/>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="16">
|
|
<el-form-item prop="customerName" label="客户名称">
|
|
<el-input v-model="insertData.customerName" disabled clearable/>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row :gutter="10">
|
|
<el-col :span="8">
|
|
<el-form-item prop="projectId" label="项目编码">
|
|
<span slot="label" v-if="insertData.customerNo !=='' && insertData.internalInquiryNo ==='' && !detailDialogVisible " @click="clickProject">
|
|
<a>项目编码</a>
|
|
</span>
|
|
<el-input v-model="insertData.projectId" :disabled="insertData.customerNo ==='' || insertData.internalInquiryNo !=='' || detailDialogVisible" clearable @blur="handleQueryProjectByCustomer"/>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="16">
|
|
<el-form-item prop="projectName" label="项目名称">
|
|
<el-input v-model="insertData.projectName" disabled clearable/>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row :gutter="10">
|
|
<el-col :span="8">
|
|
<el-form-item label="终端客户编码">
|
|
<el-input disabled v-model="insertData.finalCustomerId"></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="16">
|
|
<el-form-item label="终端客户名称">
|
|
<el-input disabled v-model="insertData.finalCustomerName"></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row :gutter="10">
|
|
<el-col :span="8">
|
|
<el-form-item label="货币" prop="currency">
|
|
<dict-data-select v-model="insertData.currency" :disabled="insertData.internalInquiryNo !=='' || detailDialogVisible" dict-type="plm_customer_information_customer_customer_currency"></dict-data-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="8">
|
|
<el-form-item label="报价日期" prop="quotationDate">
|
|
<el-date-picker
|
|
style="width: 100%"
|
|
v-model="insertData.quotationDate"
|
|
type="date"
|
|
size="mini"
|
|
:disabled="detailDialogVisible"
|
|
format="yyyy-MM-dd"
|
|
value-format="yyyy-MM-dd"
|
|
placeholder="选择日期">
|
|
</el-date-picker>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row :gutter="10">
|
|
<el-col :span="8">
|
|
<el-form-item label="报价专员" prop="quoterName">
|
|
<span slot="label" @click="getBaseList(2002)" v-if="!detailDialogVisible"><a>报价专员</a></span>
|
|
<el-input v-model="insertData.quoterName" @clear="clearQuoter" readonly :disabled="detailDialogVisible" clearable/>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="8">
|
|
<el-form-item label="采购专员" prop="trackerName">
|
|
<span slot="label" v-if="!detailDialogVisible" @click="getBaseList(2000)">
|
|
<a>采购专员</a>
|
|
</span>
|
|
<el-input v-model="insertData.trackerName" :disabled="detailDialogVisible" @clear="clearTracker" readonly clearable/>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row>
|
|
<el-col :span="24">
|
|
<el-form-item label="备注" style="width: 100%;min-height: 90px">
|
|
<el-input type="textarea" style="width: 100%" :disabled="detailDialogVisible" resize="none" :autosize="{minRows: 3, maxRows: 3}"
|
|
v-model="insertData.remark"/>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
</el-form>
|
|
<span slot="footer" class="dialog-footer">
|
|
<el-button type="primary" :loading="insertQuotationHeaderBtn" @click="saveQuotationHeader">确定</el-button>
|
|
<el-button @click="insertDiaLogFlag = false">关闭</el-button>
|
|
</span>
|
|
</el-dialog>
|
|
|
|
<!--询价单号选择弹框-->
|
|
<el-dialog title="内部询价单号"
|
|
@close="closeQuotationNoDialog"
|
|
@open="openQuotationNoDialog"
|
|
:close-on-click-modal="false"
|
|
width="1200px"
|
|
:visible.sync="quotationNoDialogFlag" v-drag>
|
|
<el-form label-position="top"
|
|
:model="quotationNoSearchData"
|
|
size="mini">
|
|
<el-row :gutter="10">
|
|
<el-col :span="3">
|
|
<el-form-item label="询价单号">
|
|
<el-input v-model="quotationNoSearchData.quotationNo" clearable/>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="3">
|
|
<el-form-item label="申请批次号">
|
|
<el-input v-model="quotationNoSearchData.quotationBatchNo" clearable></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="3">
|
|
<el-form-item label="序号">
|
|
<el-input v-model="quotationNoSearchData.quotationItemNo" clearable></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="3">
|
|
<el-form-item label="物料编码">
|
|
<el-input v-model="quotationNoSearchData.testPartNo" clearable></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="3">
|
|
<el-form-item label="物料名称">
|
|
<el-input v-model="quotationNoSearchData.partName" clearable></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="3">
|
|
<el-form-item :label="'状态'">
|
|
<el-select v-model="quotationNoSearchData.quotationStatus" style="width:100%">
|
|
<el-option label="全部" value=""></el-option>
|
|
<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="2">
|
|
<el-form-item label=" ">
|
|
<el-button type="primary" style="padding: 3px 12px" @click="searchQuotationData">查询</el-button>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
</el-form>
|
|
<el-table :data="quotationNoData" height="300" stripe border @row-dblclick="dblclickQuotationNo">
|
|
<el-table-column prop="quotationNo" header-align="center" min-width="120" label="询价单号"/>
|
|
<el-table-column prop="quotationBatchNo" header-align="center" label="询价批次号"/>
|
|
<el-table-column width="60" align="center" header-align="center" prop="quotationItemNo" label="询价序号"/>
|
|
<el-table-column prop="projectName" header-align="center" label="项目名称"/>
|
|
<el-table-column width="180" prop="testPartNo" header-align="center" label="物料编码"/>
|
|
<el-table-column prop="partName" header-align="center" label="状态"/>
|
|
<el-table-column prop="quotationStatus" header-align="center" label="物料名称"/>
|
|
<el-table-column label="终端客户编码" header-align="center" prop="finalCustomerId"/>
|
|
<el-table-column label="终端客户名称" header-align="center" prop="finalCustomerName"/>
|
|
</el-table>
|
|
<el-footer style="height:30px;margin-top: 20px;text-align:center">
|
|
<el-button type="primary" @click="quotationNoDialogFlag = false">关闭</el-button>
|
|
</el-footer>
|
|
</el-dialog>
|
|
|
|
<!-- chooseList模态框 -->
|
|
<Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
|
|
|
|
<el-dialog title="选择-项目" @close="closeProjectInfoDialog" @open="searchProjectInfoList"
|
|
:visible.sync="chooseProjectListFlag" width="35%" :close-on-click-modal="false">
|
|
<el-form label-position="top" :model="searchProjectData" ref="closeProjectInfoForm">
|
|
<el-row :gutter="10">
|
|
<el-col :span="6">
|
|
<el-form-item label="项目编码">
|
|
<el-input v-model="searchProjectData.projectId"></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="6">
|
|
<el-form-item label="项目名称">
|
|
<el-input v-model="searchProjectData.projectName"></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="6">
|
|
<el-form-item label=" ">
|
|
<el-button type="primary" @click="searchProjectInfoList">查询</el-button>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
<el-table :height="223"
|
|
:data="projectList"
|
|
border
|
|
@row-click="projectClickRow">
|
|
<el-table-column label="项目编码" prop="projectId"/>
|
|
<el-table-column label="项目名称" prop="projectName"/>
|
|
<el-table-column label="终端客户编码" prop="finalCustomerId"/>
|
|
<el-table-column label="终端客户名称" prop="finalCustomerName"/>
|
|
</el-table>
|
|
</el-form>
|
|
</el-dialog>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import quotationExamineAndApprove from "./sellForQuotation/quotationExamineAndApprove.vue";
|
|
import quotationProjectInformation from "./sellForQuotation/quotationProjectInformation.vue";
|
|
import quotationCustomerInformation from "./sellForQuotation/quotationCustomerInformation.vue";
|
|
import quotationCustomerContact from "./sellForQuotation/quotationCustomerContact.vue";
|
|
import Chooselist from '@/views/modules/common/Chooselist';
|
|
import {
|
|
getQuotationHeaderByPage,
|
|
saveQuotationHeader,
|
|
deleteByQuotationHeaderId,
|
|
quotationAgain,
|
|
} from '@/api/quotation/quotationHeader.js';
|
|
import {
|
|
searchQuotationByQuotationNo,
|
|
} from '@/api/quotation/quotationInformation.js';
|
|
import {
|
|
getNodeAuthority, // 获取节点权限
|
|
getApprovalList, // 查询审批信息
|
|
} from '@/api/changeManagement/changeManagement.js'
|
|
import QuoteDetail from "./sellForQuotation/quoteDetail.vue";
|
|
import {searchProjectInfoList} from "../../../api/quotation/quotationInformation";
|
|
import {getQuotationHeaderByPagePost, updateQuoteStatus} from "../../../api/quotation/quotationHeader";
|
|
import {getQuotePage} from "../../../api/quotation/quote";
|
|
import {queryCustomer} from "../../../api/customer/customerInformation";
|
|
import {queryProjectByCustomer} from "../../../api/project/project";
|
|
import ApprovalInformation from "../changeManagement/approvalInformation.vue";
|
|
import OssComponents from "../oss/ossComponents.vue";
|
|
import PriceCheckProperties from "./priceCheckProperties.vue";
|
|
import {getPriceCheckPropertiesList} from "../../../api/quotation/priceCheckProperties";
|
|
import CustomerInfo from "./sellForQuotation/customerInfo.vue";
|
|
import DictDataSelect from "../sys/dict-data-select.vue";
|
|
|
|
export default {
|
|
components: {
|
|
DictDataSelect,
|
|
CustomerInfo,
|
|
PriceCheckProperties,
|
|
ApprovalInformation,
|
|
OssComponents,
|
|
QuoteDetail,
|
|
Chooselist,
|
|
quotationExamineAndApprove,
|
|
quotationProjectInformation,
|
|
quotationCustomerInformation,
|
|
quotationCustomerContact,
|
|
},
|
|
props:{
|
|
height:{
|
|
type:[Number,String],
|
|
default:'30vh'
|
|
}
|
|
},
|
|
data() {
|
|
return {
|
|
initPage:false,
|
|
// 搜索条件对象
|
|
searchData: {
|
|
site: this.$store.state.user.site,// 工厂编号
|
|
customerNo: "", // 客户编码
|
|
customer: "", // 客户名称
|
|
tracker: "", // 采购专员
|
|
quotationStatus: "", //状态
|
|
projectId: "", // 项目编码
|
|
projectName: "", // 项目名称
|
|
quoterName: "", // 报价专员
|
|
startDate: "", // 开始日期
|
|
endDate: "", // 结束日期
|
|
dateValue: [],// 开始时间结束时间数组
|
|
},
|
|
chooseProjectListFlag: false,
|
|
searchProjectData: {
|
|
site: this.$store.state.user.site,
|
|
projectId: undefined,
|
|
projectName: undefined,
|
|
customerId: undefined,
|
|
},
|
|
projectList: [],
|
|
tableData: [],// 查询的数据
|
|
columnList: [
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 102003,
|
|
serialNumber: '102003Table1QuotationNo',
|
|
tableId: '102003Table1',
|
|
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: 102003,
|
|
serialNumber: '102003Table1QuotationDate',
|
|
tableId: '102003Table1',
|
|
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: 102003,
|
|
serialNumber: '102003Table1CustomerNo',
|
|
tableId: '102003Table1',
|
|
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: 102003,
|
|
serialNumber: '102003Table1CustomerName',
|
|
tableId: '102003Table1',
|
|
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: 102003,
|
|
serialNumber: '102003Table1ProjectId',
|
|
tableId: '102003Table1',
|
|
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: 102003,
|
|
serialNumber: '102003Table1ProjectName',
|
|
tableId: '102003Table1',
|
|
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: 102003,
|
|
serialNumber: '102003Table1QuoterName',
|
|
tableId: '102003Table1',
|
|
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: 102003,
|
|
serialNumber: '102003Table1TrackerName',
|
|
tableId: '102003Table1',
|
|
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: 102003,
|
|
serialNumber: '102003Table1Currency',
|
|
tableId: '102003Table1',
|
|
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: 102003,
|
|
serialNumber: '102003Table1QuotationStatus',
|
|
tableId: '102003Table1',
|
|
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: 102003,
|
|
serialNumber: '102003Table1CustomerInquiryNo',
|
|
tableId: '102003Table1',
|
|
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: 102003,
|
|
serialNumber: '102003Table1InternalInquiryNo',
|
|
tableId: '102003Table1',
|
|
tableName: '报价信息表',
|
|
columnProp: 'internalInquiryNo',
|
|
headerAlign: 'center',
|
|
align: 'center',
|
|
columnLabel: '内部询价单号',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},
|
|
],
|
|
initQuotationHeaderLoading: false,//表格加载状态
|
|
// 分页信息
|
|
no: 1,//页码
|
|
size: 20,//每页条数
|
|
total: 0,//总页数
|
|
// 标签页
|
|
activeTabName: "quote_detail",
|
|
//dialog 控制开关
|
|
insertDiaLogFlag: false,
|
|
quotationNoDialogFlag: false,
|
|
// 新增对象
|
|
insertData: {
|
|
site: this.$store.state.user.site,
|
|
quotationNo: "",//客户报价单号
|
|
quotationDate: new Date(),//报价日期
|
|
customerNo: "", // 客户编号
|
|
customerName: "",//客户名称
|
|
versionCode: "001",
|
|
projectId: "",//项目编码
|
|
projectName: "",//项目名称
|
|
tracker: "",//采购专员
|
|
quoter: "",//销售编号
|
|
quoterName: "",//报价专员
|
|
trackerName: "",//采购专员
|
|
currency: "",//货币
|
|
quotationStatus: "草稿",//状态
|
|
remark: "",//备注
|
|
customerInquiryNo: "",//客户询价单号
|
|
internalInquiryNo: "",//内部询价单号
|
|
internalInquiryBatchNo: "",//内部询价单号
|
|
requireApproval: "",//需要审批
|
|
approvalStatus: "",//审批状态
|
|
createBy: this.$store.state.user.id,//当前登录账号
|
|
createTime: new Date(),//当前时间
|
|
},
|
|
quotationHeaderColumns: [
|
|
{label: "quotationNo", value: "客户报价单号"},
|
|
{label: "quotationDate", value: "报价日期"},
|
|
{label: "customerNo", value: "客户编码"},
|
|
{label: "customerName", value: "客户名称"},
|
|
{label: "versionCode", value: "版本号"},
|
|
{label: "projectId", value: "项目编码"},
|
|
{label: "projectName", value: "项目名称"},
|
|
{label: "quoterName", value: "报价专员"},
|
|
{label: "trackerName", value: "采购专员"},
|
|
{label: "currency", value: "货币"},
|
|
{label: "quotationStatus", value: "状态"},
|
|
{label: "remark", value: "备注"},
|
|
{label: "customerInquiryNo", value: "客户询价单号"},
|
|
{label: "internalInquiryNo", value: "内部询价单号"},
|
|
{label: "requireApproval", value: "需要审批"},
|
|
{label: "approvalStatus", value: "审批状态"},
|
|
{label: "createBy", value: "创建人"},
|
|
{label: "createDate", value: "创建时间"},
|
|
{label: "updateBy", value: "更新人"},
|
|
{label: "updateDate", value: "更新时间"},
|
|
],
|
|
// 规则
|
|
rules: {
|
|
customerNo: [
|
|
{required: true, message: ' '},
|
|
],
|
|
customerName: [
|
|
{required: true, message: ' '},
|
|
],
|
|
projectId: [
|
|
{required: true, message: ' '}
|
|
],
|
|
projectName: [
|
|
{required: true, message: ' '}
|
|
],
|
|
tracker: [
|
|
{required: true, message: ' '}
|
|
],
|
|
trackerName: [
|
|
{required: true, message: ' '}
|
|
],
|
|
currency: [
|
|
{required: true, message: ' '}
|
|
],
|
|
quoter: [
|
|
{required: true, message: ' '}
|
|
],
|
|
quoterName: [
|
|
{required: true, message: ' '}
|
|
],
|
|
quotationStatus: [
|
|
{required: true, message: ' '}
|
|
],
|
|
quotationDate: [
|
|
{required: true, message: ' '}
|
|
],
|
|
},
|
|
// 参数 选择框
|
|
tagNo1: "",
|
|
tagNo: "",
|
|
// 内部报价单搜索表单对象
|
|
quotationNoSearchData: {
|
|
quotationNo: "",//单号
|
|
quotationBatchNo: "",//批次号
|
|
quotationItemNo: '',//序号
|
|
quotationStatus: "",//状态
|
|
partName:'',//物料描述
|
|
testPartNo:'',//物料编码
|
|
site: this.$store.state.user.site,//工厂编号
|
|
},
|
|
//内部报价单搜索表格数据对象
|
|
quotationNoData: [],
|
|
// 行对象
|
|
quotationHeader: {
|
|
quotationNo: "",
|
|
versionCode: "",
|
|
site: "",
|
|
},
|
|
// 按钮防重复
|
|
insertQuotationHeaderBtn: false,
|
|
approvalList: [],
|
|
|
|
ossColumns:[
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 103001,
|
|
serialNumber: '103001Table2FileName',
|
|
tableId: '103001Table2',
|
|
tableName: '文件信息表',
|
|
columnProp: 'fileName',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '文件名称',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 140
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 103001,
|
|
serialNumber: '103001Table2FileRemark',
|
|
tableId: '103001Table2',
|
|
tableName: '文件信息表',
|
|
columnProp: 'fileRemark',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '备注',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 240
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 103001,
|
|
serialNumber: '103001Table2CreateDate',
|
|
tableId: '103001Table2',
|
|
tableName: '文件信息表',
|
|
columnProp: 'createDate',
|
|
headerAlign: 'center',
|
|
align: 'center',
|
|
columnLabel: '上传时间',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 140
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 103001,
|
|
serialNumber: '103001Table2CreatedBy',
|
|
tableId: '103001Table2',
|
|
tableName: '文件信息表',
|
|
columnProp: 'createBy',
|
|
headerAlign: 'center',
|
|
align: 'center',
|
|
columnLabel: '上传人',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 140
|
|
}
|
|
],
|
|
detailDialogVisible: false,
|
|
|
|
priceCheckPropertiesList:[],
|
|
}
|
|
},
|
|
methods: {
|
|
|
|
// 查询审批信息
|
|
getApprovalList () {
|
|
let tempData = {
|
|
site: this.$store.state.user.site,
|
|
menuId: this.$route.meta.menuId,
|
|
documentNo: this.quotationHeader.quotationNo
|
|
}
|
|
getApprovalList(tempData).then(({data}) => {
|
|
if (data && data.code === 0) {
|
|
this.approvalList = data.rows
|
|
} else {
|
|
this.approvalList = []
|
|
}
|
|
})
|
|
},
|
|
|
|
// 点击quotation行事件
|
|
rowClickQuotation(row, column, event) {
|
|
if (column.label !== '操作') {
|
|
this.quotationHeader = row;
|
|
}
|
|
},
|
|
clickProject() {
|
|
if (!this.insertData.customerNo) {
|
|
this.$message.warning("客户编码不存在")
|
|
return
|
|
}
|
|
this.searchProjectData.projectId = this.insertData.projectId
|
|
// setTimeout(()=>{
|
|
// this.searchProjectData.projectId = ''
|
|
// },200)
|
|
this.chooseProjectListFlag = true
|
|
},
|
|
projectClickRow(row) {
|
|
this.insertData.projectId = row.projectId
|
|
this.insertData.projectName = row.projectName
|
|
this.insertData.finalCustomerId = row.finalCustomerId
|
|
this.insertData.finalCustomerName = row.finalCustomerName
|
|
this.chooseProjectListFlag = false
|
|
},
|
|
// 查询
|
|
initDataBtn() {
|
|
this.$route.params.ids = null;
|
|
this.initData();
|
|
},
|
|
// 初始化数据
|
|
initData() {
|
|
//如果是跳转过来的
|
|
let value = localStorage.getItem('quotationData');
|
|
if(value){
|
|
let data=JSON.parse(value);
|
|
this.searchData.quotationNo=data.quotationNo
|
|
localStorage.removeItem('quotationData');
|
|
}
|
|
let params = {
|
|
site: this.$store.state.user.site,
|
|
...this.searchData,
|
|
ids: this.$route.params.ids,
|
|
}
|
|
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 = {};
|
|
}
|
|
}else {
|
|
this.$message.warning(data.msg)
|
|
}
|
|
}).catch((error)=>{
|
|
this.$message.error(error)
|
|
})
|
|
// let ids = ""
|
|
// if (this.$route.params.ids) {
|
|
// ids = "?"
|
|
// for (let i = 0; i < this.$route.params.ids.length; i++) {
|
|
// ids += 'ids=' + this.$route.params.ids[i] + '&'
|
|
// }
|
|
// ids = ids.substring(0, ids.length - 1);
|
|
// }
|
|
// let params = {
|
|
// no: this.no,
|
|
// size: this.size,
|
|
// site: this.$store.state.user.site,
|
|
// customerNo: this.searchData.customerNo,
|
|
// customerName: this.searchData.customerName,
|
|
// trackerName: this.searchData.trackerName,
|
|
// quotationNo: this.searchData.quotationNo,
|
|
// customerInquiryNo: this.searchData.customerInquiryNo,
|
|
// internalInquiryNo: this.searchData.internalInquiryNo,
|
|
// quotationStatus: this.searchData.quotationStatus,
|
|
// projectId: this.searchData.projectId,
|
|
// projectName: this.searchData.projectName,
|
|
// quoterName: this.searchData.quoterName,
|
|
// startDate: this.searchData.startDate,
|
|
// endDate: this.searchData.endDate,
|
|
// }
|
|
// this.init(params, ids)
|
|
},
|
|
init(params, ids) {
|
|
this.initQuotationHeaderLoading = true;
|
|
getQuotationHeaderByPage(params, ids).then(({data}) => {
|
|
this.tableData = data.data.records;
|
|
this.total = data.data.total;
|
|
if (this.tableData.length > 0) {
|
|
this.quotationHeader = this.tableData[0];
|
|
} else {
|
|
this.quotationHeader = null;
|
|
}
|
|
this.initQuotationHeaderLoading = false;
|
|
}).catch((error) => {
|
|
this.initQuotationHeaderLoading = false;
|
|
})
|
|
},
|
|
// 删除方法
|
|
deleteQuotationHeader(row) {
|
|
this.$confirm('确定删除该报价单吗?', '提示', {
|
|
confirmButtonText: '确定',
|
|
cancelButtonText: '取消',
|
|
type: 'warning'
|
|
}).then(() => {
|
|
deleteByQuotationHeaderId(row).then(({data}) => {
|
|
if (data.code === 200) {
|
|
this.$message.success(data.msg);
|
|
this.initData();
|
|
} else {
|
|
this.$message.error(data.msg);
|
|
}
|
|
})
|
|
})
|
|
},
|
|
// 修改方法
|
|
editQuotationHeader(row) {
|
|
this.insertData = JSON.parse(JSON.stringify(row));
|
|
this.insertData.internalInquiryBatchNo = this.insertData.internalInquiryNo.split("-")[0]
|
|
this.insertDiaLogFlag = true;
|
|
},
|
|
// size 发送改变
|
|
quotationHeaderSizeChange(val) {
|
|
this.size = val;
|
|
this.initData();
|
|
},
|
|
// no发生改变
|
|
quotationHeaderCurrentChange(val) {
|
|
this.no = val;
|
|
this.initData();
|
|
},
|
|
// 新增QuotationHeader
|
|
saveQuotationHeader() {
|
|
// 校验
|
|
this.$refs['insertQuotationForm'].validate((valid, objects) => {
|
|
if (valid) {
|
|
this.insertQuotationHeaderBtn = true;
|
|
// 请求
|
|
saveQuotationHeader(this.insertData).then(({data}) => {
|
|
// 返回提示
|
|
if (data.code === 200) {
|
|
this.initData();
|
|
this.insertQuotationHeaderBtn = false;
|
|
this.insertDiaLogFlag = false;
|
|
}
|
|
this.$message.success(data.msg);
|
|
})
|
|
} else {
|
|
this.rulesValidateLabel(objects, this.quotationHeaderColumns);
|
|
}
|
|
})
|
|
},
|
|
// 校验处理
|
|
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
|
|
}
|
|
}
|
|
}
|
|
},
|
|
// resetInsertData 重置新增对象
|
|
resetInsertData() {
|
|
this.insertData = {
|
|
site: this.$store.state.user.site,
|
|
quotationNo: "",//客户报价单号
|
|
quotationDate: new Date(),//报价日期
|
|
customerNo: "", // 客户编号
|
|
customerName: "",//客户名称
|
|
versionCode: "001",
|
|
projectId: "",//项目编码
|
|
projectName: "",//项目名称
|
|
tracker: "",//采购专员
|
|
quoter: "",//销售编号
|
|
quoterName: "",//报价专员
|
|
trackerName: "",//采购专员
|
|
currency: "",//货币
|
|
quotationStatus: "草稿",//状态
|
|
remark: "",//备注
|
|
customerInquiryNo: "",//客户询价单号
|
|
internalInquiryNo: "",//内部询价单号
|
|
requireApproval: "",//需要审批
|
|
approvalStatus: "",//审批状态
|
|
createBy: this.$store.state.user.id,//当前登录账号
|
|
createDate: new Date(),//当前时间
|
|
}
|
|
},
|
|
// 销售员输入框清除事件
|
|
clearQuoter() {
|
|
this.insertData.quoter = "";
|
|
this.insertData.quoterName = "";
|
|
},
|
|
// 采购专员输入框清除事件
|
|
clearTracker() {
|
|
this.insertData.tracker = "";
|
|
this.insertData.trackerName = "";
|
|
},
|
|
// 新增弹框关闭事件
|
|
closeInsertDialog() {
|
|
this.resetInsertData();
|
|
this.$refs['insertQuotationForm'].resetFields();
|
|
this.insertData = {
|
|
site: this.$store.state.user.site,
|
|
quotationNo: "",//客户报价单号
|
|
quotationDate: new Date(),//报价日期
|
|
customerNo: "", // 客户编号
|
|
customerName: "",//客户名称
|
|
versionCode: "001",
|
|
projectId: "",//项目编码
|
|
projectName: "",//项目名称
|
|
tracker: "",//采购专员
|
|
quoter: "",//销售编号
|
|
quoterName: "",//报价专员
|
|
trackerName: "",//采购专员
|
|
currency: "",//货币
|
|
quotationStatus: "草稿",//状态
|
|
remark: "",//备注
|
|
customerInquiryNo: "",//客户询价单号
|
|
internalInquiryNo: "",//内部询价单号
|
|
internalInquiryBatchNo: "",//内部询价单号
|
|
requireApproval: "",//需要审批
|
|
approvalStatus: "",//审批状态
|
|
createBy: this.$store.state.user.id,//当前登录账号
|
|
createTime: new Date(),//当前时间
|
|
}
|
|
},
|
|
// 点击标签页
|
|
handleClickTab(tab, event) {
|
|
|
|
},
|
|
|
|
// ======== chooseList相关方法 ========
|
|
/**
|
|
* 获取基础数据列表S
|
|
* @param val
|
|
* @param type
|
|
*/
|
|
getBaseList(val, type) {
|
|
this.tagNo = val
|
|
this.tagNo1 = type
|
|
this.$nextTick(() => {
|
|
let strVal = ''
|
|
let conSql = ''
|
|
if (val === 102) {
|
|
if (type === 1) {
|
|
strVal = this.insertData.customerNo
|
|
}
|
|
}
|
|
if (val === 103) {
|
|
if (type === 1) {
|
|
strVal = this.insertData.tracker
|
|
}
|
|
if (type === 2) {
|
|
strVal = this.insertData.quoter
|
|
}
|
|
}
|
|
if (val === 104) {
|
|
if (type === 1) {
|
|
strVal = this.insertData.projectId
|
|
}
|
|
}
|
|
if (val === 2000) {
|
|
strVal = this.insertData.tracker
|
|
conSql = " and b.site = '" + this.$store.state.user.site + "'"
|
|
}
|
|
if (val === 2002) {
|
|
strVal = this.insertData.quoter
|
|
conSql = " and b.site = '" + this.$store.state.user.site + "'"
|
|
}
|
|
this.$refs.baseList.init(val, strVal, conSql)
|
|
})
|
|
},
|
|
/**
|
|
* 列表方法的回调
|
|
* @param val
|
|
*/
|
|
getBaseData(val) {
|
|
if (this.tagNo === 102) {
|
|
if (this.tagNo1 === 1) {
|
|
if (this.insertData.customerNo !== val.Customer_no) {
|
|
this.insertData.projectId = '';
|
|
this.insertData.projectName = '';
|
|
}
|
|
this.insertData.customerNo = val.Customer_no
|
|
this.insertData.customerName = val.Customer_desc
|
|
}
|
|
}
|
|
if (this.tagNo === 103) {
|
|
if (this.tagNo1 === 1) {
|
|
this.insertData.tracker = val.username
|
|
this.insertData.trackerName = val.user_display
|
|
}
|
|
if (this.tagNo1 === 2) {
|
|
this.insertData.quoter = val.username
|
|
this.insertData.quoterName = val.user_display
|
|
}
|
|
}
|
|
if (this.tagNo === 104) {
|
|
if (this.tagNo1 === 1) {
|
|
this.insertData.projectId = val.project_id
|
|
this.insertData.projectName = val.project_name
|
|
}
|
|
}
|
|
if (this.tagNo === 2002) {
|
|
this.insertData.quoter = val.username
|
|
this.insertData.quoterName = val.user_display
|
|
}
|
|
if (this.tagNo === 2000) {
|
|
this.insertData.tracker = val.username
|
|
this.insertData.trackerName = val.user_display
|
|
}
|
|
},
|
|
// 查询 内部报价单编号
|
|
searchQuotationData() {
|
|
searchQuotationByQuotationNo(this.quotationNoSearchData).then(({data}) => {
|
|
if (data && data.code === 0){
|
|
this.quotationNoData = data.data;
|
|
}
|
|
})
|
|
},
|
|
// 打开 内部报价单拟态框
|
|
openQuotationNoDialog() {
|
|
// 请求
|
|
this.searchQuotationData();
|
|
},
|
|
// 关闭
|
|
closeQuotationNoDialog() {
|
|
this.quotationNoSearchData = {
|
|
quotationNo: "",//单号
|
|
quotationBatchNo: "",//批次号
|
|
quotationItemNo: '',//序号
|
|
quotationStatus: '',
|
|
partName:'',//物料描述
|
|
testPartNo:'',//物料编码
|
|
site: this.$store.state.user.site,//工厂编号
|
|
}
|
|
},
|
|
// 询价表双击事件
|
|
dblclickQuotationNo(row) {
|
|
this.insertData.customerNo = row.customerNo;
|
|
this.insertData.customerName = row.customerDesc;//客户名称
|
|
this.insertData.projectId = row.projectId;//项目编码
|
|
this.insertData.projectName = row.projectName;//项目名称
|
|
this.insertData.finalCustomerId = row.finalCustomerId;
|
|
this.insertData.finalCustomerName = row.finalCustomerName;
|
|
this.insertData.tracker = row.tracker;//采购专员
|
|
this.insertData.trackerName = row.trackerName;
|
|
this.insertData.quoter = row.quoter;//销售编号
|
|
this.insertData.quoterName = row.quoterName;//销售编号
|
|
this.insertData.internalInquiryNo = row.quotationNo;//内部询价单号
|
|
this.insertData.internalInquiryBatchNo = row.quotationBatchNo;//内部询价单号
|
|
this.insertData.currency = row.customerCurrency;//内部询价单号
|
|
// 关闭弹框
|
|
this.quotationNoDialogFlag = false;
|
|
},
|
|
quotationAgain(row) {
|
|
quotationAgain(row).then(({data}) => {
|
|
if (data && data.code === 0) {
|
|
this.$message.success(data.msg)
|
|
this.initData();
|
|
} else {
|
|
this.$alert(data.msg, '错误', {
|
|
confirmButtonText: '确定'
|
|
})
|
|
}
|
|
}).catch((error) => {
|
|
this.$message.error(error)
|
|
})
|
|
},
|
|
closeProjectInfoDialog() {
|
|
this.$refs.closeProjectInfoForm.resetFields();
|
|
this.searchProjectData = {
|
|
site: this.$store.state.user.site,
|
|
projectId: undefined,
|
|
projectName: undefined,
|
|
customerId: undefined,
|
|
}
|
|
},
|
|
searchProjectInfoList() {
|
|
this.projectList = [];
|
|
this.searchProjectData.customerId = this.insertData.customerNo
|
|
searchProjectInfoList(this.searchProjectData).then(({data}) => {
|
|
if (data && data.code === 0) {
|
|
this.projectList = data.rows
|
|
} else {
|
|
this.projectList = []
|
|
}
|
|
}).catch((error) => {
|
|
this.$message.error('查询项目信息失败')
|
|
})
|
|
},
|
|
handleUpdateStatus(row, status) {
|
|
this.$confirm(`是否确认${status?'取消下达':'下达'}?`, '提示', {
|
|
confirmButtonText: '确定',
|
|
cancelButtonText: '取消',
|
|
type: 'warning'
|
|
}).then(()=>{
|
|
let params = {
|
|
...row,
|
|
quotationStatus:status?'草稿':'下达',
|
|
}
|
|
updateQuoteStatus(params).then(({data})=>{
|
|
if (data && data.code === 0){
|
|
this.$message.success(data.msg)
|
|
this.initData()
|
|
}else {
|
|
this.$message.warning(data.msg)
|
|
}
|
|
}).catch((error)=>{
|
|
this.$message.error(error)
|
|
})
|
|
})
|
|
},
|
|
restQuoteHeader() {
|
|
this.insertData = {
|
|
site: this.$store.state.user.site,
|
|
quotationNo: "",//客户报价单号
|
|
quotationDate: new Date(),//报价日期
|
|
customerNo: "", // 客户编号
|
|
customerName: "",//客户名称
|
|
versionCode: "001",
|
|
projectId: "",//项目编码
|
|
projectName: "",//项目名称
|
|
tracker: "",//采购专员
|
|
quoter: "",//销售编号
|
|
quoterName: "",//报价专员
|
|
trackerName: "",//采购专员
|
|
currency: "",//货币
|
|
quotationStatus: "草稿",//状态
|
|
remark: "",//备注
|
|
customerInquiryNo: "",//客户询价单号
|
|
internalInquiryNo: "",//内部询价单号
|
|
internalInquiryBatchNo: "",//内部询价单号
|
|
requireApproval: "",//需要审批
|
|
approvalStatus: "",//审批状态
|
|
createBy: this.$store.state.user.id,//当前登录账号
|
|
createTime: new Date(),//当前时间
|
|
}
|
|
},
|
|
clearCustomer() {
|
|
this.insertData.projectId = '';
|
|
this.insertData.projectName = '';
|
|
},
|
|
quotationHeaderRowStyle({row}) {
|
|
if (!this.quotationHeader){
|
|
return {}
|
|
}
|
|
if (row.quotationHeaderId === this.quotationHeader.quotationHeaderId) {
|
|
return {'background-color': '#E8F7F6'}
|
|
}
|
|
},
|
|
clickInternalInquiryNoHandle(){
|
|
this.quotationNoSearchData.quotationNo = this.insertData.internalInquiryNo;
|
|
// setTimeout(()=>{
|
|
// this.quotationNoSearchData.quotationNo = ''
|
|
// },200)
|
|
this.quotationNoDialogFlag = true
|
|
},
|
|
blurInternalInquiryNoHandle(){
|
|
let params = {
|
|
quotationNo:this.insertData.internalInquiryNo,
|
|
site:this.$store.state.user.site
|
|
}
|
|
searchQuotationByQuotationNo(params).then(({data}) => {
|
|
if (data && data.code === 0){
|
|
// this.quotationNoData = data.data;
|
|
let rows = data.data
|
|
if (rows.length === 1){
|
|
this.dblclickQuotationNo(rows[0])
|
|
}
|
|
}
|
|
})
|
|
},
|
|
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 if (this.$route.params && this.$route.params.ids && this.$route.params.ids.length > 0){
|
|
let params = {
|
|
site : this.$store.state.user.site,
|
|
}
|
|
getQuotationHeaderByPagePost(params,this.$route.params.ids,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 if (this.initPage === false){
|
|
this.initData();//初始化数据
|
|
}
|
|
this.initPage = true;
|
|
},
|
|
handleQueryCustomer(){
|
|
let params = {
|
|
site:this.$store.state.user.site,
|
|
customerNo:this.insertData.customerNo
|
|
}
|
|
queryCustomer(params).then(({data})=>{
|
|
if (data && data.code === 0 ) {
|
|
if (data.rows && data.rows.length === 1){
|
|
this.insertData.customerName = data.rows[0].customerDesc
|
|
}else {
|
|
this.insertData.customerName = ''
|
|
}
|
|
}else {
|
|
this.$message.warning(data.msg)
|
|
}
|
|
}).catch((error)=>{
|
|
this.$message.error(error)
|
|
})
|
|
},
|
|
handleQueryProjectByCustomer(){
|
|
let params = {
|
|
site:this.$store.state.user.site,
|
|
customerId:this.insertData.customerNo,
|
|
projectId:this.insertData.projectId
|
|
}
|
|
queryProjectByCustomer(params).then(({data})=>{
|
|
if (data && data.code === 0 ){
|
|
if (data.rows && data.rows.length === 1){
|
|
this.insertData.projectName = data.rows[0].projectName
|
|
this.insertData.finalCustomerId = data.rows[0].finalCustomerId
|
|
this.insertData.finalCustomerName = data.rows[0].finalCustomerName
|
|
}else {
|
|
this.insertData.projectName = ''
|
|
this.insertData.finalCustomerId = ''
|
|
this.insertData.finalCustomerName = ''
|
|
}
|
|
}else {
|
|
this.$message.warning(data.msg)
|
|
}
|
|
}).catch((error)=>{
|
|
this.$message.error(error)
|
|
})
|
|
},
|
|
handleDetail(row){
|
|
this.insertData = {
|
|
...row,
|
|
};
|
|
this.insertData.internalInquiryBatchNo = this.insertData.internalInquiryNo.split("-")[0]
|
|
this.detailDialogVisible = true;
|
|
this.insertDiaLogFlag = true;
|
|
},
|
|
getPriceCheckProperties() {
|
|
if (!this.quotationHeader && !this.quotationHeader.internalInquiryNo){
|
|
this.priceCheckPropertiesList = []
|
|
return
|
|
}
|
|
let params = {
|
|
site: this.quotationHeader.site,
|
|
quotationNo: this.quotationHeader.internalInquiryNo
|
|
}
|
|
getPriceCheckPropertiesList(params).then(({data}) => {
|
|
if (data && data.code === 0) {
|
|
this.priceCheckPropertiesList = data.rows
|
|
} else {
|
|
this.$message.warning(data.msg)
|
|
}
|
|
}).catch((error) => {
|
|
this.$message.error(error)
|
|
})
|
|
},
|
|
|
|
handleRouter(internalInquiryNo){
|
|
if (this.$router.resolve('quotation-requestForQuote').resolved.name === '404') {
|
|
this.$alert('权限不足,访问失败', '警告', {confirmButtonText: '确定',})
|
|
} else {
|
|
this.$router.push({
|
|
name: 'quotation-requestForQuote',
|
|
params:{
|
|
quotationNo:internalInquiryNo,
|
|
}
|
|
})
|
|
}
|
|
}
|
|
},
|
|
computed: {},
|
|
watch: {
|
|
"insertData.customerNo": {
|
|
handler() {
|
|
if (!this.insertData.customerNo || this.insertData.customerNo.length === 0) {
|
|
this.insertData.customerName = '';
|
|
this.insertData.projectId = '';
|
|
}
|
|
}
|
|
},
|
|
"insertData.projectId": {
|
|
handler() {
|
|
if (!this.insertData.projectId || this.insertData.projectId.length === 0) {
|
|
this.insertData.projectName = '';
|
|
}
|
|
}
|
|
},
|
|
insertDiaLogFlag(newVal,oldVal){
|
|
if (newVal === false){
|
|
this.detailDialogVisible = false;
|
|
}
|
|
},
|
|
quotationHeader(newVal,oldVal){
|
|
if (newVal){
|
|
this.getApprovalList()
|
|
this.getPriceCheckProperties();
|
|
}
|
|
},
|
|
"searchData.customerNo"(newVal,oldVal){
|
|
this.searchData.customerNo = newVal.toUpperCase()
|
|
},
|
|
"searchData.quotationNo"(newVal,oldVal){
|
|
this.searchData.quotationNo = newVal.toUpperCase()
|
|
},
|
|
"searchData.internalInquiryNo"(newVal,oldVal){
|
|
this.searchData.internalInquiryNo = newVal.toUpperCase()
|
|
},
|
|
"searchData.projectId"(newVal,oldVal){
|
|
this.searchData.projectId = newVal.toUpperCase()
|
|
},
|
|
},
|
|
mounted() {
|
|
},
|
|
activated() {
|
|
this.routerWatch()
|
|
},
|
|
}
|
|
</script>
|
|
|
|
<style scoped>
|
|
/deep/ .el-range-editor--mini.el-input__inner {
|
|
height: 20px;
|
|
}
|
|
|
|
/deep/ .el-range-editor.el-input__inner {
|
|
padding: 0px 10px;
|
|
}
|
|
|
|
/deep/ .el-input--mini .el-input__icon {
|
|
line-height: 20px;
|
|
}
|
|
|
|
/deep/ .el-table__body tr.current-row > td {
|
|
background-color: #E8F7F6 !important;
|
|
color: #fff;
|
|
}
|
|
|
|
</style>
|
|
|