|
|
@ -139,8 +139,13 @@ |
|
|
layout="total, sizes, prev, pager, next, jumper"> |
|
|
layout="total, sizes, prev, pager, next, jumper"> |
|
|
</el-pagination> |
|
|
</el-pagination> |
|
|
|
|
|
|
|
|
<!-- 客户模态框 --> |
|
|
|
|
|
|
|
|
<!-- 报价模态框 --> |
|
|
<el-dialog :title="modalData.title" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="495px"> |
|
|
<el-dialog :title="modalData.title" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="495px"> |
|
|
|
|
|
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;"> |
|
|
|
|
|
<el-form-item label="申请单号"> |
|
|
|
|
|
<el-input v-model="modalData.quotationNo" style="width: 456px"></el-input> |
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
</el-form> |
|
|
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;"> |
|
|
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;"> |
|
|
<el-form-item prop="customerDesc" :rules="rules.customerDesc"> |
|
|
<el-form-item prop="customerDesc" :rules="rules.customerDesc"> |
|
|
<span slot="label" style="" @click="getBaseList(102,1)"><a herf="#">客户</a></span> |
|
|
<span slot="label" style="" @click="getBaseList(102,1)"><a herf="#">客户</a></span> |
|
|
@ -192,49 +197,52 @@ |
|
|
</el-form> |
|
|
</el-form> |
|
|
<el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: -5px;"> |
|
|
<el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: -5px;"> |
|
|
<el-form-item label="技术注意事项"> |
|
|
<el-form-item label="技术注意事项"> |
|
|
<textarea v-model="modalData.technicalConsiderations" style="width: 456px;height: 35px"></textarea> |
|
|
|
|
|
|
|
|
<el-input |
|
|
|
|
|
type="textarea" |
|
|
|
|
|
v-model="modalData.technicalConsiderations" |
|
|
|
|
|
:rows="1" |
|
|
|
|
|
resize='none' |
|
|
|
|
|
maxlength="300" |
|
|
|
|
|
show-word-limit |
|
|
|
|
|
style="width: 456px;height: 20px"> |
|
|
|
|
|
</el-input> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
</el-form> |
|
|
</el-form> |
|
|
<el-footer style="height:30px;margin-top: 17px;text-align:center"> |
|
|
|
|
|
|
|
|
<el-footer style="height:30px;margin-top: 20px;text-align:center"> |
|
|
<el-button type="primary" @click="saveData()">保存</el-button> |
|
|
<el-button type="primary" @click="saveData()">保存</el-button> |
|
|
<el-button type="primary" @click="modalFlag = false">关闭</el-button> |
|
|
<el-button type="primary" @click="modalFlag = false">关闭</el-button> |
|
|
</el-footer> |
|
|
</el-footer> |
|
|
</el-dialog> |
|
|
</el-dialog> |
|
|
|
|
|
|
|
|
<!-- 页签 --> |
|
|
|
|
|
<el-tabs v-model="activeTable" style="margin-top: 0px; width: 100%; height: 100%;" type="border-card" @tab-click="tabClick" class="customer-tab"> |
|
|
|
|
|
<!-- 联系人页签 --> |
|
|
|
|
|
<el-tab-pane label="联系人" name="customer_contact"> |
|
|
|
|
|
<el-form label-position="top" style="margin-top: 5px; margin-left: 0px;"> |
|
|
|
|
|
<el-form :inline="true" label-position="top" style="margin-top: 5px"> |
|
|
|
|
|
<el-button type="primary" @click="contactSaveModal()">新增</el-button> |
|
|
|
|
|
<el-button type="primary" @click="contactDeleteModal()">删除</el-button> |
|
|
|
|
|
</el-form> |
|
|
|
|
|
|
|
|
<!-- 客户联系人模态框 --> |
|
|
|
|
|
<el-dialog title="录入报价结果" :close-on-click-modal="false" v-drag :visible.sync="quotationResultModalFlag" width="785px"> |
|
|
|
|
|
<el-form :inline="true" label-position="top" :model="enterResultData" :rules="enterResultRules" style="margin-left: 0px;margin-top: 10px;"> |
|
|
|
|
|
<el-form-item label="实际报价日期" prop="actualityQuotationDate" :rules="enterResultRules.actualityQuotationDate"> |
|
|
|
|
|
<el-date-picker v-model="enterResultData.actualityQuotationDate" type="date" value-format="yyyy-MM-dd" placeholder="请选择日期" style="width: 200px"></el-date-picker> |
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
</el-form> |
|
|
|
|
|
<el-form :inline="true" label-position="top" :model="enterResultData" :rules="enterResultRules" style="margin-left:0px;margin-top: 5px;"> |
|
|
|
|
|
<el-form-item label="报价结果信息" prop="quotationResultInformation" :rules="enterResultRules.quotationResultInformation"> |
|
|
|
|
|
<el-input type="textarea" v-model="enterResultData.quotationResultInformation" :rows="3" resize='none' maxlength="300" show-word-limit style="width: 500px;height: 30px"></el-input> |
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
</el-form> |
|
|
|
|
|
<el-form :inline="true" label-position="top" :model="enterResultData" style="margin-left: 0px;margin-top: 60px;"> |
|
|
|
|
|
<el-form :inline="true" label-position="top" style="margin-top: 5px"> |
|
|
|
|
|
<el-button type="primary" @click="uploadFile()">上传文件</el-button> |
|
|
</el-form> |
|
|
</el-form> |
|
|
<el-table |
|
|
<el-table |
|
|
:data="contactList" |
|
|
|
|
|
:height="secondHeight" |
|
|
|
|
|
|
|
|
:height="200" |
|
|
|
|
|
:data="enterResultData.fileContentList" |
|
|
border |
|
|
border |
|
|
ref="contactTable" |
|
|
|
|
|
@row-click="contactClickRow" |
|
|
|
|
|
@selection-change="selectionContact" |
|
|
|
|
|
v-loading="dataListLoading" |
|
|
v-loading="dataListLoading" |
|
|
style="width: 100%; "> |
|
|
|
|
|
|
|
|
style="width: 100%"> |
|
|
<el-table-column |
|
|
<el-table-column |
|
|
type="selection" |
|
|
|
|
|
header-align="center" |
|
|
|
|
|
align="center" |
|
|
|
|
|
:selectable="selectFlag" |
|
|
|
|
|
width="50"> |
|
|
|
|
|
</el-table-column> |
|
|
|
|
|
<el-table-column |
|
|
|
|
|
v-for="(item,index) in customerContactArray" :key="index" |
|
|
|
|
|
|
|
|
v-for="(item,index) in fileColumnList" :key="index" |
|
|
:sortable="item.columnSortable" |
|
|
:sortable="item.columnSortable" |
|
|
:prop="item.columnProp" |
|
|
:prop="item.columnProp" |
|
|
:header-align="item.headerAlign" |
|
|
:header-align="item.headerAlign" |
|
|
:show-overflow-tooltip="item.showOverflowTooltip" |
|
|
:show-overflow-tooltip="item.showOverflowTooltip" |
|
|
:align="item.align" |
|
|
:align="item.align" |
|
|
:fixed="item.fixed === '' ? false : item.fixed" |
|
|
|
|
|
|
|
|
:fixed="item.fixed===''?false:item.fixed" |
|
|
:min-width="item.columnWidth" |
|
|
:min-width="item.columnWidth" |
|
|
:label="item.columnLabel"> |
|
|
:label="item.columnLabel"> |
|
|
<template slot-scope="scope"> |
|
|
<template slot-scope="scope"> |
|
|
@ -249,15 +257,137 @@ |
|
|
width="100" |
|
|
width="100" |
|
|
label="操作"> |
|
|
label="操作"> |
|
|
<template slot-scope="scope"> |
|
|
<template slot-scope="scope"> |
|
|
<a type="text" size="small" @click="updateContactModal(scope.row)">编辑</a> |
|
|
|
|
|
<a type="text" size="small" @click="detailContactModal(scope.row)">详情</a> |
|
|
|
|
|
|
|
|
<el-button type="primary" @click="deleteFile()">删除</el-button> |
|
|
</template> |
|
|
</template> |
|
|
</el-table-column> |
|
|
</el-table-column> |
|
|
</el-table> |
|
|
</el-table> |
|
|
|
|
|
</el-form> |
|
|
|
|
|
<el-footer style="height:40px;margin-top: 10px;text-align:center"> |
|
|
|
|
|
<el-button type="primary" @click="saveEnterResult()">保存</el-button> |
|
|
|
|
|
<el-button type="primary" @click="quotationResultModalFlag = false">关闭</el-button> |
|
|
|
|
|
</el-footer> |
|
|
|
|
|
</el-dialog> |
|
|
|
|
|
|
|
|
|
|
|
<!-- 页签 --> |
|
|
|
|
|
<el-tabs v-model="activeTable" style="margin-top: 0px; width: 100%; height: 100%;" type="border-card" @tab-click="tabClick" class="customer-tab"> |
|
|
|
|
|
<!-- 报价详细信息页签 --> |
|
|
|
|
|
<el-tab-pane label="报价详细信息" name="quotation_detail_information" style="height: 240px"> |
|
|
|
|
|
<el-form :inline="true" label-position="top" :model="quotationDetailData" style="margin-left: 10px;margin-top: 10px;"> |
|
|
|
|
|
<el-form-item label="技术注意事项"> |
|
|
|
|
|
<el-input |
|
|
|
|
|
type="textarea" |
|
|
|
|
|
v-model="quotationDetailData.technicalConsiderations" |
|
|
|
|
|
readonly |
|
|
|
|
|
:rows="3" |
|
|
|
|
|
resize='none' |
|
|
|
|
|
maxlength="300" |
|
|
|
|
|
show-word-limit |
|
|
|
|
|
style="width: 600px;height: 30px"> |
|
|
|
|
|
</el-input> |
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
</el-form> |
|
|
|
|
|
<el-form :inline="true" label-position="top" :model="quotationDetailData" style="margin-left: 10px;margin-top: 46px;"> |
|
|
|
|
|
<el-form-item label="客户负责人"> |
|
|
|
|
|
<el-input v-model="quotationDetailData.customerResponsiblePerson" readonly style="width: 295px"></el-input> |
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
<el-form-item label="客户负责人联系方式"> |
|
|
|
|
|
<el-input v-model="quotationDetailData.customerResponsiblePersonPhone" readonly style="width: 295px"></el-input> |
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
</el-form> |
|
|
|
|
|
</el-tab-pane> |
|
|
|
|
|
<!-- 报价结果页签 --> |
|
|
|
|
|
<el-tab-pane label="报价结果" name="quotation_result" style="height: 490px"> |
|
|
|
|
|
<el-form :inline="true" label-position="top" :model="quotationResultData" style="margin-left: 10px;margin-top: 10px;"> |
|
|
|
|
|
<el-button type="primary" @click="quotationResultModal()">录入报价结果</el-button> |
|
|
|
|
|
<el-button type="primary" @click="submitQuotationModal()">提交客户报价</el-button> |
|
|
|
|
|
<el-button type="primary" @click="customerResponseModal()">客户回复</el-button> |
|
|
|
|
|
</el-form> |
|
|
|
|
|
<el-form :inline="true" label-position="top" :model="quotationResultData" style="margin-left: 10px;margin-top: 10px;"> |
|
|
|
|
|
<el-form-item label="实际报价日期"> |
|
|
|
|
|
<el-date-picker v-model="quotationResultData.actualityQuotationDate" readonly type="date" value-format="yyyy-MM-dd" style="width: 240px"></el-date-picker> |
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
</el-form> |
|
|
|
|
|
<el-form :inline="true" label-position="top" :model="quotationResultData" style="margin-left: 10px;margin-top: 5px;"> |
|
|
|
|
|
<el-form-item label="报价结果信息"> |
|
|
|
|
|
<el-input type="textarea" v-model="quotationResultData.quotationResultInformation" readonly :rows="2" resize='none' show-word-limit style="width: 500px;height: 30px"></el-input> |
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
</el-form> |
|
|
|
|
|
<el-form :inline="true" label-position="top" :model="quotationResultData" style="margin-left: 10px;margin-top: 32px;"> |
|
|
|
|
|
<el-form-item label="附件清单"> |
|
|
|
|
|
<el-table |
|
|
|
|
|
:height="100" |
|
|
|
|
|
:data="fileContentList" |
|
|
|
|
|
border |
|
|
|
|
|
v-loading="dataListLoading" |
|
|
|
|
|
style="width: 100%"> |
|
|
|
|
|
<el-table-column |
|
|
|
|
|
v-for="(item,index) in fileColumnList" :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-column |
|
|
|
|
|
fixed="right" |
|
|
|
|
|
header-align="center" |
|
|
|
|
|
align="center" |
|
|
|
|
|
width="100" |
|
|
|
|
|
label="操作"> |
|
|
|
|
|
<template slot-scope="scope"> |
|
|
|
|
|
<a @click="downloadFile(scope.row)">下载</a> |
|
|
|
|
|
</template> |
|
|
|
|
|
</el-table-column> |
|
|
|
|
|
</el-table> |
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
</el-form> |
|
|
|
|
|
<el-form :inline="true" label-position="top" :model="quotationResultData" style="margin-left: 10px;margin-top: 83px;"> |
|
|
|
|
|
<el-form-item label="实际提交看客户日期"> |
|
|
|
|
|
<el-date-picker v-model="quotationResultData.actualitySubmissionDate" readonly type="date" value-format="yyyy-MM-dd" style="width: 240px"></el-date-picker> |
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
<el-form-item label="提交方式"> |
|
|
|
|
|
<el-input v-model="quotationResultData.submissionMethod" readonly style="width: 240px"></el-input> |
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
</el-form> |
|
|
|
|
|
<el-form :inline="true" label-position="top" :model="quotationResultData" style="margin-left: 10px;margin-top: 10px;"> |
|
|
|
|
|
<el-form-item label="提交备注"> |
|
|
|
|
|
<el-input v-model="quotationResultData.submissionRemark" readonly style="width: 760px"></el-input> |
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
</el-form> |
|
|
|
|
|
<el-form :inline="true" label-position="top" :model="quotationResultData" style="margin-left: 10px;margin-top: 10px;"> |
|
|
|
|
|
<el-form-item label="客户是否回复"> |
|
|
|
|
|
<el-checkbox type="checkbox" v-if="quotationResultData.confirmResults != null && quotationResultData.confirmResults !== ''" checked onclick="return false"/> |
|
|
|
|
|
<el-checkbox type="checkbox" v-if="quotationResultData.confirmResults == null || quotationResultData.confirmResults === ''" onclick="return false"/> |
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
<el-form-item label="客户确认结果"> |
|
|
|
|
|
<el-input v-model="quotationResultData.confirmResults" readonly style="width: 205px"></el-input> |
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
<el-form-item label="实际回复日期"> |
|
|
|
|
|
<el-date-picker v-model="quotationResultData.actualityReplyDate" readonly type="date" value-format="yyyy-MM-dd" style="width: 240px"></el-date-picker> |
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
<el-form-item label="客户确认人"> |
|
|
|
|
|
<el-input v-model="quotationResultData.confirmBy" readonly style="width: 205px"></el-input> |
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
</el-form> |
|
|
|
|
|
<el-form :inline="true" label-position="top" :model="quotationResultData" style="margin-left: 10px;margin-top: 10px;"> |
|
|
|
|
|
<el-form-item label="客户回复信息"> |
|
|
|
|
|
<el-input v-model="quotationResultData.confirmInformation" readonly style="width: 760px"></el-input> |
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
</el-form> |
|
|
</el-tab-pane> |
|
|
</el-tab-pane> |
|
|
</el-tabs> |
|
|
</el-tabs> |
|
|
|
|
|
|
|
|
<Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist> |
|
|
<Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist> |
|
|
|
|
|
|
|
|
|
|
|
<!-- 上传文件的modal --> |
|
|
|
|
|
<quotationUploadFile ref="quotationUploadFile" @refreshPageTables="getFileContentData()" v-drag></quotationUploadFile> |
|
|
</div> |
|
|
</div> |
|
|
</template> |
|
|
</template> |
|
|
|
|
|
|
|
|
@ -266,25 +396,31 @@ |
|
|
quotationInformationSearch, // 报价信息列表查询 |
|
|
quotationInformationSearch, // 报价信息列表查询 |
|
|
quotationInformationSave, // 报价信息新增 |
|
|
quotationInformationSave, // 报价信息新增 |
|
|
quotationInformationEdit, // 报价信息编辑 |
|
|
quotationInformationEdit, // 报价信息编辑 |
|
|
quotationInformationDelete // 报价信息删除 |
|
|
|
|
|
|
|
|
quotationInformationDelete, // 报价信息删除 |
|
|
|
|
|
getFileContentList, // 获取报价单附件列表 |
|
|
|
|
|
quotationResultSearch, // 获取报价结果对象 |
|
|
} from '@/api/quotation/quotationInformation.js' |
|
|
} from '@/api/quotation/quotationInformation.js' |
|
|
|
|
|
|
|
|
import Chooselist from '@/views/modules/common/Chooselist' |
|
|
import Chooselist from '@/views/modules/common/Chooselist' |
|
|
|
|
|
import quotationUploadFile from "./quotation_upload_file"; |
|
|
export default { |
|
|
export default { |
|
|
components: { |
|
|
components: { |
|
|
Chooselist |
|
|
|
|
|
|
|
|
Chooselist, |
|
|
|
|
|
quotationUploadFile |
|
|
}, |
|
|
}, |
|
|
watch: { |
|
|
watch: { |
|
|
searchData: { |
|
|
searchData: { |
|
|
deep: true, |
|
|
deep: true, |
|
|
handler: function (newV, oldV) { |
|
|
handler: function (newV, oldV) { |
|
|
this.searchData.customerNo = this.searchData.customerNo.toUpperCase() |
|
|
this.searchData.customerNo = this.searchData.customerNo.toUpperCase() |
|
|
|
|
|
this.searchData.projectId = this.searchData.projectId.toUpperCase() |
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|
modalData: { |
|
|
modalData: { |
|
|
deep: true, |
|
|
deep: true, |
|
|
handler: function (newV, oldV) { |
|
|
handler: function (newV, oldV) { |
|
|
this.modalData.customerNo = this.modalData.customerNo.toUpperCase() |
|
|
this.modalData.customerNo = this.modalData.customerNo.toUpperCase() |
|
|
|
|
|
this.modalData.projectId = this.modalData.projectId.toUpperCase() |
|
|
|
|
|
this.modalData.quotationNo = this.modalData.quotationNo.toUpperCase() |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|
@ -324,7 +460,7 @@ |
|
|
// 其它 |
|
|
// 其它 |
|
|
dataListLoading: false, |
|
|
dataListLoading: false, |
|
|
// 初始页签 |
|
|
// 初始页签 |
|
|
activeTable: 'customer_contact', |
|
|
|
|
|
|
|
|
activeTable: 'quotation_detail_information', |
|
|
// ======== 数据对象 ======== |
|
|
// ======== 数据对象 ======== |
|
|
modalData: { |
|
|
modalData: { |
|
|
flag: '', |
|
|
flag: '', |
|
|
@ -363,8 +499,33 @@ |
|
|
updateDate: '', |
|
|
updateDate: '', |
|
|
updateBy: '' |
|
|
updateBy: '' |
|
|
}, |
|
|
}, |
|
|
|
|
|
quotationDetailData: { |
|
|
|
|
|
technicalConsiderations: '', |
|
|
|
|
|
customerResponsiblePerson: '', |
|
|
|
|
|
customerResponsiblePersonPhone: '' |
|
|
|
|
|
}, |
|
|
|
|
|
quotationResultData: { |
|
|
|
|
|
actualityQuotationDate: '', |
|
|
|
|
|
quotationResultInformation: '', |
|
|
|
|
|
actualitySubmissionDate: '', |
|
|
|
|
|
submissionMethod: '', |
|
|
|
|
|
submissionRemark: '', |
|
|
|
|
|
confirmResults: '', |
|
|
|
|
|
actualityReplyDate: '', |
|
|
|
|
|
confirmBy: '', |
|
|
|
|
|
confirmInformation: '' |
|
|
|
|
|
}, |
|
|
|
|
|
enterResultData: { |
|
|
|
|
|
site: this.$store.state.user.site, |
|
|
|
|
|
quotationNo: '', |
|
|
|
|
|
actualityQuotationDate: '', |
|
|
|
|
|
quotationResultInformation: '', |
|
|
|
|
|
fileContentList: [], |
|
|
|
|
|
updateBy: this.$store.state.user.name, |
|
|
|
|
|
}, |
|
|
// ======== 数据列表 ======== |
|
|
// ======== 数据列表 ======== |
|
|
dataList: [], |
|
|
dataList: [], |
|
|
|
|
|
fileContentList: [], |
|
|
// ======== 列表表头 ======== |
|
|
// ======== 列表表头 ======== |
|
|
columnList: [ |
|
|
columnList: [ |
|
|
{ |
|
|
{ |
|
|
@ -638,6 +799,98 @@ |
|
|
columnWidth: 80 |
|
|
columnWidth: 80 |
|
|
} |
|
|
} |
|
|
], |
|
|
], |
|
|
|
|
|
fileColumnList: [ |
|
|
|
|
|
{ |
|
|
|
|
|
userId: this.$store.state.user.name, |
|
|
|
|
|
functionId: 102001, |
|
|
|
|
|
serialNumber: '102001Table2FileName', |
|
|
|
|
|
tableId: '102001Table2', |
|
|
|
|
|
tableName: '文件信息表', |
|
|
|
|
|
columnProp: 'fileName', |
|
|
|
|
|
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: '102001Table2OrderRef3', |
|
|
|
|
|
tableId: '102001Table2', |
|
|
|
|
|
tableName: '文件信息表', |
|
|
|
|
|
columnProp: 'orderRef3', |
|
|
|
|
|
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: '102001Table2CreateDate', |
|
|
|
|
|
tableId: '102001Table2', |
|
|
|
|
|
tableName: '文件信息表', |
|
|
|
|
|
columnProp: 'createDate', |
|
|
|
|
|
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: '102001Table2CreatedBy', |
|
|
|
|
|
tableId: '102001Table2', |
|
|
|
|
|
tableName: '文件信息表', |
|
|
|
|
|
columnProp: 'createdBy', |
|
|
|
|
|
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: '102001Table2FileRemark', |
|
|
|
|
|
tableId: '102001Table2', |
|
|
|
|
|
tableName: '文件信息表', |
|
|
|
|
|
columnProp: 'fileRemark', |
|
|
|
|
|
headerAlign: 'center', |
|
|
|
|
|
align: 'center', |
|
|
|
|
|
columnLabel: '备注', |
|
|
|
|
|
columnHidden: false, |
|
|
|
|
|
columnImage: false, |
|
|
|
|
|
columnSortable: false, |
|
|
|
|
|
sortLv: 0, |
|
|
|
|
|
status: true, |
|
|
|
|
|
fixed: '', |
|
|
|
|
|
columnWidth: 180 |
|
|
|
|
|
} |
|
|
|
|
|
], |
|
|
// ======== 必填规则 ======== |
|
|
// ======== 必填规则 ======== |
|
|
rules: { |
|
|
rules: { |
|
|
customerDesc: [ |
|
|
customerDesc: [ |
|
|
@ -690,6 +943,22 @@ |
|
|
} |
|
|
} |
|
|
] |
|
|
] |
|
|
}, |
|
|
}, |
|
|
|
|
|
enterResultRules: { |
|
|
|
|
|
actualityQuotationDate: [ |
|
|
|
|
|
{ |
|
|
|
|
|
required: true, |
|
|
|
|
|
message: ' ', |
|
|
|
|
|
trigger: 'change' |
|
|
|
|
|
} |
|
|
|
|
|
], |
|
|
|
|
|
quotationResultInformation: [ |
|
|
|
|
|
{ |
|
|
|
|
|
required: true, |
|
|
|
|
|
message: ' ', |
|
|
|
|
|
trigger: 'change' |
|
|
|
|
|
} |
|
|
|
|
|
] |
|
|
|
|
|
}, |
|
|
// ======== 复选数据集 ======== |
|
|
// ======== 复选数据集 ======== |
|
|
quotationSelections: [], |
|
|
quotationSelections: [], |
|
|
// ======== 选中的当前行数据 ======== |
|
|
// ======== 选中的当前行数据 ======== |
|
|
@ -697,6 +966,7 @@ |
|
|
// ======== 模态框开关控制 ======== |
|
|
// ======== 模态框开关控制 ======== |
|
|
modalFlag: false, |
|
|
modalFlag: false, |
|
|
modalDisableFlag: false, |
|
|
modalDisableFlag: false, |
|
|
|
|
|
quotationResultModalFlag: false |
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|
mounted () { |
|
|
mounted () { |
|
|
@ -761,8 +1031,8 @@ |
|
|
* 刷新页签的table数据 |
|
|
* 刷新页签的table数据 |
|
|
*/ |
|
|
*/ |
|
|
refreshCurrentTabTable () { |
|
|
refreshCurrentTabTable () { |
|
|
if (this.activeTable === 'customer_contact') { |
|
|
|
|
|
this.getCustomerContactList(); |
|
|
|
|
|
|
|
|
if (this.activeTable === 'quotation_result') { |
|
|
|
|
|
this.getQuotationResult() |
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
@ -782,13 +1052,33 @@ |
|
|
//判断是否全部存在数据 |
|
|
//判断是否全部存在数据 |
|
|
if(this.totalPage > 0){ |
|
|
if(this.totalPage > 0){ |
|
|
//设置选中行 |
|
|
//设置选中行 |
|
|
this.$refs.quotationTable.setCurrentRow(this.dataList[0]); |
|
|
|
|
|
this.refreshCurrentTabTable();//加载当前的页签的table |
|
|
|
|
|
|
|
|
this.$refs.quotationTable.setCurrentRow(this.dataList[0]) |
|
|
|
|
|
this.refreshCurrentTabTable() //加载当前的页签的table |
|
|
|
|
|
this.quotationClickRow(this.dataList[0]) |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
this.dataListLoading = false |
|
|
this.dataListLoading = false |
|
|
}) |
|
|
}) |
|
|
}, |
|
|
}, |
|
|
|
|
|
/** |
|
|
|
|
|
* 获取报价结果列表 |
|
|
|
|
|
*/ |
|
|
|
|
|
getQuotationResult () { |
|
|
|
|
|
let tempData = { |
|
|
|
|
|
site: this.$store.state.user.site, |
|
|
|
|
|
quotationNo: this.quotationCurrentRow.quotationNo |
|
|
|
|
|
} |
|
|
|
|
|
// 报价结果对象 |
|
|
|
|
|
quotationResultSearch(tempData).then(({data}) => { |
|
|
|
|
|
if (data && data.code === 0) { |
|
|
|
|
|
this.quotationResultData = data.rows[0]; |
|
|
|
|
|
} else { |
|
|
|
|
|
this.quotationResultData = {}; |
|
|
|
|
|
} |
|
|
|
|
|
}) |
|
|
|
|
|
// 附件列表 |
|
|
|
|
|
this.getFileContentData() |
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
// ======== 新增模态框 ======== |
|
|
// ======== 新增模态框 ======== |
|
|
/** |
|
|
/** |
|
|
@ -1014,6 +1304,7 @@ |
|
|
*/ |
|
|
*/ |
|
|
quotationClickRow (row) { |
|
|
quotationClickRow (row) { |
|
|
this.quotationCurrentRow = JSON.parse(JSON.stringify(row)); |
|
|
this.quotationCurrentRow = JSON.parse(JSON.stringify(row)); |
|
|
|
|
|
this.quotationDetailData = row; |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
// ======== 列表复选方法 ======== |
|
|
// ======== 列表复选方法 ======== |
|
|
@ -1025,6 +1316,69 @@ |
|
|
this.quotationSelections = val |
|
|
this.quotationSelections = val |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
// ======== 报价结果相关方法 ======== |
|
|
|
|
|
/** |
|
|
|
|
|
* 录入报价结果 |
|
|
|
|
|
*/ |
|
|
|
|
|
quotationResultModal () { |
|
|
|
|
|
this.enterResultData = { |
|
|
|
|
|
site: this.$store.state.user.site, |
|
|
|
|
|
quotationNo: this.quotationCurrentRow.quotationNo, |
|
|
|
|
|
actualityQuotationDate: '', |
|
|
|
|
|
quotationResultInformation: '', |
|
|
|
|
|
fileContentList: [], |
|
|
|
|
|
updateBy: this.$store.state.user.name, |
|
|
|
|
|
} |
|
|
|
|
|
this.quotationResultModalFlag = true |
|
|
|
|
|
}, |
|
|
|
|
|
/** |
|
|
|
|
|
* 提交客户报价 |
|
|
|
|
|
*/ |
|
|
|
|
|
submitQuotationModal () { |
|
|
|
|
|
|
|
|
|
|
|
}, |
|
|
|
|
|
/** |
|
|
|
|
|
* 客户回复 |
|
|
|
|
|
*/ |
|
|
|
|
|
customerResponseModal () { |
|
|
|
|
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
// ======== 报价单附件的相关方法 ======== |
|
|
|
|
|
/** |
|
|
|
|
|
* 获取报价单附件列表 |
|
|
|
|
|
*/ |
|
|
|
|
|
getFileContentData () { |
|
|
|
|
|
let currentData = { |
|
|
|
|
|
orderRef1: this.$store.state.user.site, |
|
|
|
|
|
orderRef2: this.quotationCurrentRow.quotationNo |
|
|
|
|
|
} |
|
|
|
|
|
getFileContentList(currentData).then(({data}) => { |
|
|
|
|
|
if (data && data.code === 0) { |
|
|
|
|
|
this.fileContentList = data.rows; |
|
|
|
|
|
} else { |
|
|
|
|
|
this.fileContentList = []; |
|
|
|
|
|
} |
|
|
|
|
|
}) |
|
|
|
|
|
}, |
|
|
|
|
|
/** |
|
|
|
|
|
* 上传文件 |
|
|
|
|
|
*/ |
|
|
|
|
|
uploadFile () { |
|
|
|
|
|
let currentData = { |
|
|
|
|
|
titleCon: '报价附件上传', |
|
|
|
|
|
site: this.$store.state.user.site, |
|
|
|
|
|
createBy: this.$store.state.user.name, |
|
|
|
|
|
quotationNo: this.enterResultData.quotationNo, |
|
|
|
|
|
fileRemark: '', |
|
|
|
|
|
folder: 'quotationFile', |
|
|
|
|
|
}; |
|
|
|
|
|
//打开组件 去做新增业务 |
|
|
|
|
|
this.$nextTick(() => { |
|
|
|
|
|
this.$refs.quotationUploadFile.init(currentData); |
|
|
|
|
|
}) |
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
// ======== chooseList相关方法 ======== |
|
|
// ======== chooseList相关方法 ======== |
|
|
/** |
|
|
/** |
|
|
* 获取基础数据列表S |
|
|
* 获取基础数据列表S |
|
|
|