plm前端
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.

1379 lines
45 KiB

1 year ago
9 months ago
1 year ago
9 months ago
1 year ago
1 year ago
9 months ago
1 year ago
9 months ago
1 year ago
1 year ago
10 months ago
1 year ago
9 months ago
9 months ago
1 year ago
11 months ago
1 year ago
11 months ago
1 year ago
9 months ago
1 year ago
9 months ago
1 year ago
9 months ago
1 year ago
11 months ago
1 year ago
11 months ago
1 year ago
9 months ago
9 months ago
8 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
9 months ago
1 year ago
1 year ago
11 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
10 months ago
1 year ago
10 months ago
1 year ago
11 months ago
1 year ago
11 months ago
1 year ago
9 months ago
9 months ago
1 year ago
  1. <script>
  2. import QuoteSearch from "./primary/quoteSearch.vue";
  3. import QuoteTable from "./primary/quoteTable.vue";
  4. import {
  5. againQuote,
  6. queryQuotePage, queryQuotePageByAnyField,
  7. queryQuoteRoleUser,
  8. removeQuote,
  9. saveQuote,
  10. updateQuote,
  11. updateQuoteStatus
  12. } from "../../../api/quote/quote";
  13. import QuoteDetail from "./detail/quoteDetail.vue";
  14. import ChooseList from '@/views/modules/common/Chooselist';
  15. import {queryCustomer} from "../../../api/customer/customerInformation";
  16. import DictDataSelect from "../sys/dict-data-select.vue";
  17. import {queryProjectByCustomer} from "../../../api/project/project";
  18. import quotationCustomerContact from "../quotation/sellForQuotation/quotationCustomerContact.vue";
  19. import CustomerInfo from "../quotation/sellForQuotation/customerInfo.vue";
  20. import OssComponents from "../oss/ossComponents.vue";
  21. import quotationProjectInformation from "../quotation/sellForQuotation/quotationProjectInformation.vue";
  22. import {
  23. quotationInformationSearchByAnyField,
  24. searchQuotationByQuotationNo
  25. } from "../../../api/quotation/quotationInformation";
  26. import PriceCheckProperties from "../quotation/priceCheckProperties.vue";
  27. import ApprovalInformation from "../changeManagement/approvalInformation.vue";
  28. import {getPriceCheckPropertiesList} from "../../../api/quotation/priceCheckProperties";
  29. import {getApprovalList} from "../../../api/changeManagement/changeManagement";
  30. import QuoteGroupDetail from "./detail/quoteGroupDetail.vue";
  31. import FilterSearch from "../../common/filterSearch.vue";
  32. export default {
  33. name: "quote",
  34. components: {
  35. FilterSearch,
  36. QuoteGroupDetail,
  37. ApprovalInformation, PriceCheckProperties,
  38. quotationProjectInformation, OssComponents, CustomerInfo, quotationCustomerContact,
  39. DictDataSelect,
  40. QuoteDetail,
  41. ChooseList,
  42. QuoteTable, QuoteSearch
  43. },
  44. props:{
  45. isMenu:{
  46. type:Boolean,
  47. default:true,
  48. },
  49. projectNo:{
  50. type:String,
  51. },
  52. height:{
  53. type:[Number,String],
  54. default:'35vh'
  55. }
  56. },
  57. menuId:5011,
  58. data(){
  59. return{
  60. total: 0,
  61. no:1,
  62. size: 20,
  63. quote:{
  64. id: null,
  65. site:"",
  66. quoteNo: "",
  67. customerInquiryNo: "",
  68. insideInquiryNo: "",
  69. buNo: "",
  70. buId: null,
  71. versionNo: "",
  72. status:'',
  73. quoteVersionNo: "",
  74. customerNo: "",
  75. customerDesc: "",
  76. projectNo: "",
  77. projectDesc: "",
  78. finalCustomerNo: "",
  79. finalCustomerDesc:"",
  80. currency: "",
  81. quoteDate: "",
  82. quoter: "",
  83. quoterName: "",
  84. purchase: "",
  85. purchaseName: "",
  86. remark: "",
  87. createBy: "",
  88. createDate: "",
  89. updateBy: "",
  90. updateDate: "",
  91. application: "",
  92. annualDemand: "",
  93. costModel: "UFIDA",
  94. markup:0,
  95. chipPrice:'',
  96. },
  97. quoteForm:{
  98. },
  99. saveQuote:{
  100. },
  101. dataList:[],
  102. columns: [
  103. {
  104. userId: this.$store.state.user.name,
  105. functionId: 5011,
  106. serialNumber: '5011Table1QuoteVersionNo',
  107. tableId: '5011Table1',
  108. tableName: '报价信息表',
  109. columnProp: 'quoteVersionNo',
  110. headerAlign: 'center',
  111. align: 'center',
  112. columnLabel: '报价单号',
  113. columnHidden: false,
  114. columnImage: false,
  115. columnSortable: false,
  116. sortLv: 0,
  117. status: true,
  118. fixed: '',
  119. columnWidth: 180
  120. },
  121. {
  122. userId: this.$store.state.user.name,
  123. functionId: 5011,
  124. serialNumber: '5011Table1QuoteDate',
  125. tableId: '5011Table1',
  126. tableName: '报价信息表',
  127. columnProp: 'quoteDate',
  128. headerAlign: 'center',
  129. align: 'center',
  130. columnLabel: '报价日期',
  131. columnHidden: false,
  132. columnImage: false,
  133. columnSortable: false,
  134. sortLv: 0,
  135. status: true,
  136. fixed: '',
  137. columnWidth: 100
  138. },
  139. {
  140. userId: this.$store.state.user.name,
  141. functionId: 5011,
  142. serialNumber: '5011Table1CustomerNo',
  143. tableId: '5011Table1',
  144. tableName: '报价信息表',
  145. columnProp: 'customerNo',
  146. headerAlign: 'center',
  147. align: 'center',
  148. columnLabel: '客户编码',
  149. columnHidden: false,
  150. columnImage: false,
  151. columnSortable: false,
  152. sortLv: 0,
  153. status: true,
  154. fixed: '',
  155. columnWidth: 120
  156. },
  157. {
  158. userId: this.$store.state.user.name,
  159. functionId: 5011,
  160. serialNumber: '5011Table1CustomerDesc',
  161. tableId: '5011Table1',
  162. tableName: '报价信息表',
  163. columnProp: 'customerDesc',
  164. headerAlign: 'center',
  165. align: 'left',
  166. columnLabel: '客户名称',
  167. columnHidden: false,
  168. columnImage: false,
  169. columnSortable: false,
  170. sortLv: 0,
  171. status: true,
  172. fixed: '',
  173. columnWidth: 120
  174. },
  175. {
  176. userId: this.$store.state.user.name,
  177. functionId: 5011,
  178. serialNumber: '5011Table1ProjectNo',
  179. tableId: '5011Table1',
  180. tableName: '报价信息表',
  181. columnProp: 'projectNo',
  182. headerAlign: 'center',
  183. align: 'left',
  184. columnLabel: '项目号',
  185. columnHidden: false,
  186. columnImage: false,
  187. columnSortable: false,
  188. sortLv: 0,
  189. status: true,
  190. fixed: '',
  191. columnWidth: 120
  192. },
  193. {
  194. userId: this.$store.state.user.name,
  195. functionId: 5011,
  196. serialNumber: '5011Table1ProjectDesc',
  197. tableId: '5011Table1',
  198. tableName: '报价信息表',
  199. columnProp: 'projectDesc',
  200. headerAlign: 'center',
  201. align: 'left',
  202. columnLabel: '项目名称',
  203. columnHidden: false,
  204. columnImage: false,
  205. columnSortable: false,
  206. sortLv: 0,
  207. status: true,
  208. fixed: '',
  209. columnWidth: 120
  210. },
  211. {
  212. userId: this.$store.state.user.name,
  213. functionId: 5011,
  214. serialNumber: '5011Table1QuoterName',
  215. tableId: '5011Table1',
  216. tableName: '报价信息表',
  217. columnProp: 'quoterName',
  218. headerAlign: 'center',
  219. align: 'left',
  220. columnLabel: '报价专员',
  221. columnHidden: false,
  222. columnImage: false,
  223. columnSortable: false,
  224. sortLv: 0,
  225. status: true,
  226. fixed: '',
  227. columnWidth: 120
  228. },
  229. {
  230. userId: this.$store.state.user.name,
  231. functionId: 5011,
  232. serialNumber: '5011Table1PurchaseName',
  233. tableId: '5011Table1',
  234. tableName: '报价信息表',
  235. columnProp: 'purchaseName',
  236. headerAlign: 'center',
  237. align: 'left',
  238. columnLabel: '采购专员',
  239. columnHidden: false,
  240. columnImage: false,
  241. columnSortable: false,
  242. sortLv: 0,
  243. status: true,
  244. fixed: '',
  245. columnWidth: 120
  246. },
  247. {
  248. userId: this.$store.state.user.name,
  249. functionId: 5011,
  250. serialNumber: '5011Table1Status',
  251. tableId: '5011Table1',
  252. tableName: '报价信息表',
  253. columnProp: 'status',
  254. headerAlign: 'center',
  255. align: 'center',
  256. columnLabel: '状态',
  257. columnHidden: false,
  258. columnImage: false,
  259. columnSortable: false,
  260. sortLv: 0,
  261. status: true,
  262. fixed: '',
  263. columnWidth: 120
  264. },
  265. {
  266. userId: this.$store.state.user.name,
  267. functionId: 5011,
  268. serialNumber: '5011Table1CustomerInquiryNo',
  269. tableId: '5011Table1',
  270. tableName: '报价信息表',
  271. columnProp: 'customerInquiryNo',
  272. headerAlign: 'center',
  273. align: 'center',
  274. columnLabel: '客户询价单号',
  275. columnHidden: false,
  276. columnImage: false,
  277. columnSortable: false,
  278. sortLv: 0,
  279. status: true,
  280. fixed: '',
  281. columnWidth: 120
  282. },
  283. {
  284. userId: this.$store.state.user.name,
  285. functionId: 5011,
  286. serialNumber: '5011Table1InsideInquiryNo',
  287. tableId: '5011Table1',
  288. tableName: '报价信息表',
  289. columnProp: 'insideInquiryNo',
  290. headerAlign: 'center',
  291. align: 'center',
  292. columnLabel: '内部询价单号',
  293. columnHidden: false,
  294. columnImage: false,
  295. columnSortable: false,
  296. sortLv: 0,
  297. status: true,
  298. fixed: '',
  299. columnWidth: 120
  300. },
  301. {
  302. userId: this.$store.state.user.name,
  303. functionId: 5011,
  304. serialNumber: '5011Table1CreateBy',
  305. tableId: '5011Table1',
  306. tableName: '报价信息表',
  307. columnProp: 'createBy',
  308. headerAlign: 'center',
  309. align: 'center',
  310. columnLabel: '创建人',
  311. columnHidden: false,
  312. columnImage: false,
  313. columnSortable: false,
  314. sortLv: 0,
  315. status: true,
  316. fixed: '',
  317. columnWidth: 120
  318. },
  319. {
  320. userId: this.$store.state.user.name,
  321. functionId: 5011,
  322. serialNumber: '5011Table1CreateDate',
  323. tableId: '5011Table1',
  324. tableName: '报价信息表',
  325. columnProp: 'createDate',
  326. headerAlign: 'center',
  327. align: 'center',
  328. columnLabel: '创建时间',
  329. columnHidden: false,
  330. columnImage: false,
  331. columnSortable: false,
  332. sortLv: 0,
  333. status: true,
  334. fixed: '',
  335. columnWidth: 130
  336. },
  337. {
  338. userId: this.$store.state.user.name,
  339. functionId: 5011,
  340. serialNumber: '5011Table1UpdateBy',
  341. tableId: '5011Table1',
  342. tableName: '报价信息表',
  343. columnProp: 'updateBy',
  344. headerAlign: 'center',
  345. align: 'center',
  346. columnLabel: '更新人',
  347. columnHidden: false,
  348. columnImage: false,
  349. columnSortable: false,
  350. sortLv: 0,
  351. status: true,
  352. fixed: '',
  353. columnWidth: 120
  354. },
  355. {
  356. userId: this.$store.state.user.name,
  357. functionId: 5011,
  358. serialNumber: '5011Table1UpdateDate',
  359. tableId: '5011Table1',
  360. tableName: '报价信息表',
  361. columnProp: 'updateDate',
  362. headerAlign: 'center',
  363. align: 'center',
  364. columnLabel: '更新时间',
  365. columnHidden: false,
  366. columnImage: false,
  367. columnSortable: false,
  368. sortLv: 0,
  369. status: true,
  370. fixed: '',
  371. columnWidth: 130
  372. },
  373. ],
  374. searchLoading: false,
  375. saveVisible: false,
  376. saveLoading: false,
  377. activeName:'detail',
  378. userBuList: [],
  379. saveRules: {
  380. buId:[{required: true, message: '请选择BU', trigger: ['blur','change']}],
  381. customerNo:[{required: true, message: '请输入客户编码', trigger: ['blur','change']}],
  382. customerDesc:[{required: true, message: '请输入客户名称', trigger: ['blur','change']}],
  383. projectNo:[{required: true, message: '请输入项目编码', trigger: ['blur','change']}],
  384. projectDesc:[{required: true, message: '请输入项目名称', trigger: ['blur','change']}],
  385. currency:[{required: true, message: '请输入币种', trigger: ['blur','change']}],
  386. quoteDate:[{required: true, message: '请选择报价日期', trigger: ['blur','change']}],
  387. quoter:[{required: true, message: '请输入报价专员', trigger: ['blur','change']}],
  388. },
  389. customerVisible:false,
  390. projectVisible:false,
  391. quoterVisible:false,
  392. purchaseVisible:false,
  393. filterVisible:false,
  394. isFilterSearch: false,
  395. filterSearchData: {},
  396. currentQuote:{
  397. },
  398. userVisible:false,
  399. userTitle:'人员信息',
  400. user:{
  401. username:'',
  402. userDisplay:'',
  403. active:'',
  404. buId:null,
  405. roleNo:'',
  406. },
  407. userDataList:[],
  408. tagNo:undefined,
  409. insideInquiryVisible:false,
  410. detailFlag:false,
  411. ossColumns:[
  412. {
  413. userId: this.$store.state.user.name,
  414. functionId: 5011,
  415. serialNumber: '5011Table2FileName',
  416. tableId: '5011Table2',
  417. tableName: '文件信息表',
  418. columnProp: 'fileName',
  419. headerAlign: 'center',
  420. align: 'left',
  421. columnLabel: '文件名称',
  422. columnHidden: false,
  423. columnImage: false,
  424. columnSortable: false,
  425. sortLv: 0,
  426. status: true,
  427. fixed: '',
  428. columnWidth: 140
  429. },
  430. {
  431. userId: this.$store.state.user.name,
  432. functionId: 5011,
  433. serialNumber: '5011Table2FileRemark',
  434. tableId: '5011Table2',
  435. tableName: '文件信息表',
  436. columnProp: 'fileRemark',
  437. headerAlign: 'center',
  438. align: 'left',
  439. columnLabel: '备注',
  440. columnHidden: false,
  441. columnImage: false,
  442. columnSortable: false,
  443. sortLv: 0,
  444. status: true,
  445. fixed: '',
  446. columnWidth: 240
  447. },
  448. {
  449. userId: this.$store.state.user.name,
  450. functionId: 5011,
  451. serialNumber: '5011Table2CreateDate',
  452. tableId: '5011Table2',
  453. tableName: '文件信息表',
  454. columnProp: 'createDate',
  455. headerAlign: 'center',
  456. align: 'center',
  457. columnLabel: '上传时间',
  458. columnHidden: false,
  459. columnImage: false,
  460. columnSortable: false,
  461. sortLv: 0,
  462. status: true,
  463. fixed: '',
  464. columnWidth: 140
  465. },
  466. {
  467. userId: this.$store.state.user.name,
  468. functionId: 5011,
  469. serialNumber: '5011Table2CreatedBy',
  470. tableId: '5011Table2',
  471. tableName: '文件信息表',
  472. columnProp: 'createBy',
  473. headerAlign: 'center',
  474. align: 'center',
  475. columnLabel: '上传人',
  476. columnHidden: false,
  477. columnImage: false,
  478. columnSortable: false,
  479. sortLv: 0,
  480. status: true,
  481. fixed: '',
  482. columnWidth: 140
  483. }
  484. ],
  485. insideInquiry:{
  486. },
  487. insideInquiryList:[],
  488. priceCheckPropertiesList:[],
  489. approvalList:[],
  490. exportData: [],
  491. exportName: '项目报价'+this.dayjs().format('YYYYMMDDHHmmss'),
  492. exportHeader: ["项目报价"],
  493. exportFooter: [],
  494. searchIndex:0,
  495. }
  496. },
  497. methods:{
  498. handleSearch(index){
  499. let params = {
  500. ...this.quoteForm,
  501. no: this.no,
  502. size: this.size,
  503. }
  504. this.searchLoading = true
  505. queryQuotePage(params).then(({data})=>{
  506. if (data && data.code === 0){
  507. this.dataList = data.rows
  508. this.total = data.total
  509. if (this.dataList[0] !== undefined){
  510. this.handleSelect(this.dataList[0])
  511. }
  512. // if (index !== undefined){
  513. // this.handleSelect(this.dataList[index])
  514. // }
  515. }else {
  516. this.$message.error(data.msg)
  517. }
  518. this.searchLoading = false
  519. }).catch(error=>{
  520. this.$message.error(error)
  521. this.searchLoading = false
  522. })
  523. this.isFilterSearch = false
  524. },
  525. handleSelect(row){
  526. if (row){
  527. this.currentQuote = {...row}
  528. }else {
  529. this.currentQuote = {}
  530. }
  531. },
  532. handleSave(row){
  533. this.$nextTick(()=>{
  534. if (this.$refs.saveForm){
  535. this.$refs.saveForm.clearValidate();
  536. }
  537. })
  538. if (row){
  539. this.saveQuote = {
  540. ...row
  541. }
  542. }else {
  543. this.saveQuote = {
  544. ...this.quote,
  545. buNo:'*',
  546. site:this.$store.state.user.site
  547. }
  548. this.$nextTick(()=>{
  549. this.saveQuote.buId = this.userBuList.length > 0? this.userBuList[0].id:null;
  550. })
  551. }
  552. this.saveVisible = true
  553. },
  554. handleSizeChange(size){
  555. this.size = size
  556. if ( this.isFilterSearch === false){
  557. this.handleSearch()
  558. } else {
  559. this.searchByAnyField(this.filterSearchData)
  560. }
  561. },
  562. handlePageChange(no) {
  563. this.no = no
  564. if ( this.isFilterSearch === false){
  565. this.handleSearch()
  566. } else {
  567. this.searchByAnyField(this.filterSearchData)
  568. }
  569. },
  570. handleQueryBu(){
  571. let params = {
  572. username: this.$store.state.user.name,
  573. }
  574. // getSiteAndBuByUserName(params).then(({data}) => {
  575. // if (data && data.code === 0) {
  576. // this.userBuList = data.rows
  577. // }else {
  578. // this.$message.warning(data.msg)
  579. // }
  580. // }).catch((error)=>{
  581. // this.$message.error(error)
  582. // })
  583. },
  584. handleSaveOrUpdateQuote(){
  585. this.$refs.saveForm.validate((valid,obj) => {
  586. if (valid){
  587. if (this.saveQuote.id){
  588. this.handleUpdateQuote();
  589. }else {
  590. this.handleSaveQuote();
  591. }
  592. }else {
  593. let i = 1;
  594. for (let key in obj){
  595. this.$message.warning(obj[key][0].message)
  596. if (i === 1){
  597. return
  598. }
  599. i++;
  600. }
  601. }
  602. })
  603. },
  604. handleSaveQuote(){
  605. let params = {
  606. ...this.saveQuote,
  607. status: '草稿',
  608. action: 'Y',
  609. createBy: this.$store.state.user.name,
  610. }
  611. this.saveLoading = true
  612. saveQuote(params).then(({data})=>{
  613. if (data && data.code === 0){
  614. this.saveVisible = false
  615. this.quoteForm.quoteVersionNo = data.quoteVersionNo
  616. this.$message.success(data.msg)
  617. }else {
  618. this.$message.warning(data.msg)
  619. }
  620. this.handleSearch(0);
  621. this.saveLoading = false
  622. }).catch((error)=>{
  623. this.$message.error(error)
  624. this.saveLoading = false
  625. })
  626. },
  627. handleUpdateQuote(){
  628. let params = {
  629. ...this.saveQuote,
  630. updateBy: this.$store.state.user.name,
  631. }
  632. this.saveLoading = true
  633. updateQuote(params).then(({data})=>{
  634. if (data && data.code === 0){
  635. this.saveVisible = false
  636. this.currentQuote = {
  637. ...this.currentQuote
  638. }
  639. this.$message.success(data.msg)
  640. }else {
  641. this.$message.warning(data.msg)
  642. }
  643. this.handleSearch();
  644. this.saveLoading = false
  645. }).catch((error)=>{
  646. this.$message.error(error)
  647. this.saveLoading = false
  648. })
  649. },
  650. handleRemove(row){
  651. this.$confirm('确认删除该报价信息吗?', '提示', {
  652. confirmButtonText: '确定',
  653. cancelButtonText: '取消',
  654. type: 'warning'
  655. }).then(() => {
  656. this.handleRemoveQuote(row)
  657. }).catch(() => {
  658. })
  659. },
  660. handleUpdateStatus(row){
  661. let params = {
  662. ...row
  663. }
  664. updateQuoteStatus(params).then(({data})=>{
  665. if (data && data.code === 0){
  666. this.$message.success(data.msg)
  667. this.handleSearch();
  668. this.currentQuote = {
  669. ...row
  670. }
  671. }else {
  672. this.$message.warning(data.msg)
  673. }
  674. }).catch((error)=>{
  675. this.$message.error(error)
  676. })
  677. },
  678. handleQueryById(row){
  679. this.saveQuote = {
  680. ...row
  681. }
  682. this.detailFlag = true;
  683. this.saveVisible = true;
  684. },
  685. handleRemoveQuote(row){
  686. let params = {
  687. id: row.id,
  688. }
  689. removeQuote(params).then(({data})=>{
  690. if (data && data.code === 0){
  691. this.$message.success(data.msg)
  692. if (row.id === this.currentQuote.id){
  693. this.handleSearch(0);
  694. }else {
  695. this.handleSearch();
  696. }
  697. }else {
  698. this.$message.warning(data.msg)
  699. }
  700. }).catch((error)=>{
  701. this.$message.error(error)
  702. })
  703. },
  704. customerNoBlur(){
  705. let params = {
  706. site:this.$store.state.user.site,
  707. customerNo:this.saveQuote.customerNo
  708. }
  709. queryCustomer(params).then(({data})=>{
  710. if (data && data.code === 0 ) {
  711. if (data.rows && data.rows.length === 1){
  712. this.saveQuote.customerDesc = data.rows[0].customerDesc
  713. }else {
  714. this.saveQuote.customerDesc = ''
  715. }
  716. }else {
  717. this.$message.warning(data.msg)
  718. }
  719. }).catch((error)=>{
  720. this.$message.error(error)
  721. })
  722. },
  723. projectNoBlur(){
  724. let params = {
  725. site:this.$store.state.user.site,
  726. customerId:this.saveQuote.customerNo,
  727. projectId:this.saveQuote.projectNo
  728. }
  729. queryProjectByCustomer(params).then(({data})=>{
  730. if (data && data.code === 0 ){
  731. if (data.rows && data.rows.length === 1){
  732. this.saveQuote.projectDesc = data.rows[0].projectName
  733. this.saveQuote.finalCustomerNo = data.rows[0].finalCustomerId
  734. this.saveQuote.finalCustomerDesc = data.rows[0].finalCustomerName
  735. }else {
  736. this.saveQuote.projectDesc = ''
  737. this.saveQuote.finalCustomerNo = ''
  738. this.saveQuote.finalCustomerDesc = ''
  739. }
  740. }else {
  741. this.$message.warning(data.msg)
  742. }
  743. }).catch((error)=>{
  744. this.$message.error(error)
  745. })
  746. },
  747. handleRowClick(row){
  748. this.currentQuote = {...row}
  749. },
  750. userDblClick(row){
  751. if (this.quoterVisible){
  752. this.saveQuote.quoter = row.username
  753. this.quoterVisible = false
  754. }else if (this.purchaseVisible){
  755. this.saveQuote.purchase = row.username
  756. this.purchaseVisible = false
  757. }
  758. this.userVisible = false
  759. },
  760. handleQuoterClick(){
  761. this.userTitle = '报价专员'
  762. this.user.username = this.saveQuote.quoter
  763. this.user.userDisplay = ''
  764. this.user.active = ''
  765. this.user.buId = this.saveQuote.buId
  766. this.user.roleNo = 'QUOTER'
  767. this.quoterVisible = true
  768. this.handleQueryQuoteRoleUser();
  769. this.userVisible = true
  770. },
  771. handlePurchaseClick(){
  772. this.userTitle = '采购专员'
  773. this.user.username = this.saveQuote.purchase
  774. this.user.userDisplay = ''
  775. this.user.active = ''
  776. this.user.buId = this.saveQuote.buId
  777. this.user.roleNo = 'PURCHASE'
  778. this.purchaseVisible = true
  779. this.handleQueryQuoteRoleUser();
  780. this.userVisible = true
  781. },
  782. handleQueryQuoteRoleUser(){
  783. let params = {
  784. ...this.user,
  785. }
  786. this.userDataList = []
  787. queryQuoteRoleUser(params).then(({data})=>{
  788. if (data && data.code === 0){
  789. this.userDataList = data.rows
  790. }else {
  791. this.$message.warning(data.msg)
  792. }
  793. }).catch((error)=>{
  794. this.$message.error(error)
  795. })
  796. },
  797. getBaseList(val){
  798. this.tagNo = val
  799. this.$nextTick(() => {
  800. let strVal = ''
  801. let conSql = ''
  802. if (val === 102) {
  803. strVal = this.saveQuote.customerNo
  804. }
  805. if (val === 104) {
  806. strVal = this.saveQuote.projectNo
  807. conSql = " and customer_id = '" + this.saveQuote.customerNo + "'"
  808. }
  809. if (val === 2000) {
  810. strVal = this.saveQuote.purchase
  811. conSql = " and b.site = '" + this.$store.state.user.site + "'"
  812. }
  813. if (val === 2002) {
  814. strVal = this.saveQuote.quoter
  815. conSql = " and b.site = '" + this.$store.state.user.site + "'"
  816. }
  817. this.$refs.baseList.init(val, strVal, conSql)
  818. })
  819. },
  820. getBaseData(val){
  821. switch (this.tagNo){
  822. case 102:
  823. if (this.saveQuote.customerNo !== val.Customer_no) {
  824. this.saveQuote.projectNo = '';
  825. this.saveQuote.projectDesc = '';
  826. }
  827. this.saveQuote.customerNo = val.Customer_no
  828. this.saveQuote.customerDesc = val.Customer_desc
  829. break;
  830. case 104:
  831. this.saveQuote.projectNo = val.project_id
  832. this.saveQuote.projectDesc = val.project_name
  833. break;
  834. case 2000:
  835. this.saveQuote.purchase = val.username
  836. this.saveQuote.purchaseName = val.user_display
  837. break
  838. case 2002:
  839. this.saveQuote.quoter = val.username
  840. this.saveQuote.quoterName = val.user_display
  841. break;
  842. }
  843. },
  844. handleQueryByIds(){
  845. let params = {
  846. ids:this.$route.params.ids,
  847. no:this.no,
  848. size:this.size,
  849. createBy:this.$store.state.user.name,
  850. }
  851. queryQuotePage(params).then(({data})=>{
  852. if (data && data.code === 0){
  853. this.dataList = data.rows
  854. this.total = data.total
  855. if (this.total > 0){
  856. this.currentQuote = {...this.dataList[0]}
  857. }else {
  858. this.currentQuote = {}
  859. }
  860. }else {
  861. this.$message.error(data.msg)
  862. }
  863. this.searchLoading = false
  864. }).catch(error=>{
  865. this.$message.error(error)
  866. this.searchLoading = false
  867. })
  868. },
  869. handleInquiryBlur(){
  870. let params = {
  871. site:this.$store.state.user.site,
  872. quotationNo:this.saveQuote.insideInquiryNo,
  873. }
  874. searchQuotationByQuotationNo(params).then(({data}) => {
  875. if (data && data.code === 0){
  876. if (data.data.length === 1){
  877. this.dblclickInsideInquiry(data.data[0])
  878. }
  879. }
  880. })
  881. },
  882. handleAgainQuote(row){
  883. let params = {
  884. id: row.id,
  885. createBy: this.$store.state.user.name,
  886. }
  887. this.queryLoading = true
  888. againQuote(params).then(({data}) => {
  889. if (data && data.code === 0) {
  890. this.$message.success(data.msg)
  891. this.handleSearch();
  892. } else {
  893. this.$message.warning(data.msg)
  894. this.queryLoading = false
  895. }
  896. }).catch((error) => {
  897. this.$message.error(error)
  898. this.queryLoading = false
  899. })
  900. },
  901. clearModalData(field){
  902. this.$set(this.saveQuote,field,'')
  903. },
  904. handleQueryInquiry(){
  905. this.insideInquiry = {
  906. site:this.$store.state.user.site,
  907. quotationNo:this.saveQuote.insideInquiryNo,
  908. quotationBatchNo:'',
  909. quotationItemNo:'',
  910. testPartNo:'',
  911. projectName:'',
  912. finalCustomerName:'',
  913. quoterName:'',
  914. partName:'',
  915. quotationStatus:'审批中',
  916. }
  917. this.searchInsideInquiry();
  918. this.insideInquiryVisible = true
  919. },
  920. dblclickInsideInquiry(row){
  921. this.saveQuote.insideInquiryNo = row.quotationNo
  922. this.saveQuote.customerNo = row.customerNo
  923. this.saveQuote.customerDesc = row.customerDesc
  924. this.saveQuote.projectNo = row.projectId
  925. this.saveQuote.projectDesc = row.projectName
  926. this.saveQuote.quoter = row.quoter
  927. this.saveQuote.quoterName = row.quoterName
  928. this.saveQuote.finalCustomerNo = row.finalCustomerId
  929. this.saveQuote.finalCustomerDesc = row.finalCustomerName
  930. this.saveQuote.purchase = row.tracker
  931. this.saveQuote.purchaseName = row.trackerName
  932. this.insideInquiryVisible = false
  933. },
  934. searchInsideInquiry(){
  935. searchQuotationByQuotationNo(this.insideInquiry).then(({data}) => {
  936. if (data && data.code === 0){
  937. this.insideInquiryList = data.data;
  938. }
  939. })
  940. },
  941. getPriceCheckProperties() {
  942. if (!this.currentQuote && !this.currentQuote.insideInquiryNo){
  943. this.priceCheckPropertiesList = []
  944. return
  945. }
  946. let params = {
  947. site: this.saveQuote.site,
  948. quotationNo: this.currentQuote.insideInquiryNo
  949. }
  950. getPriceCheckPropertiesList(params).then(({data}) => {
  951. if (data && data.code === 0) {
  952. this.priceCheckPropertiesList = data.rows
  953. } else {
  954. this.$message.warning(data.msg)
  955. }
  956. }).catch((error) => {
  957. this.$message.error(error)
  958. })
  959. },
  960. // 查询审批信息
  961. getApprovalList () {
  962. let tempData = {
  963. site: this.$store.state.user.site,
  964. menuId: this.$route.meta.menuId,
  965. documentNo: this.currentQuote.quoteVersionNo
  966. }
  967. getApprovalList(tempData).then(({data}) => {
  968. if (data && data.code === 0) {
  969. this.approvalList = data.rows
  970. } else {
  971. this.approvalList = []
  972. }
  973. })
  974. },
  975. fields() {
  976. let json = "{"
  977. this.columns.forEach((item, index) => {
  978. if (index === this.columns.length - 1) {
  979. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\""
  980. } else {
  981. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\"" + ","
  982. }
  983. })
  984. json += "}"
  985. return eval("(" + json + ")")
  986. },
  987. createExportData() {
  988. return this.dataList;
  989. },
  990. searchByAnyField(params){
  991. params.site = this.$store.state.user.site
  992. params.no = this.no
  993. params.size = this.size
  994. params.userId = this.$store.state.user.id.toString()
  995. queryQuotePageByAnyField(params).then(({data})=>{
  996. if (data && data.code === 0){
  997. this.dataList = data.page.list
  998. this.total = data.page.totalCount
  999. }else {
  1000. this.$message.warning(data.msg)
  1001. }
  1002. }).catch((error)=>{
  1003. this.$message.error(error)
  1004. })
  1005. this.filterSearchData = params
  1006. this.isFilterSearch = true
  1007. this.filterVisible = false
  1008. },
  1009. },
  1010. created() {
  1011. if (this.isMenu && this.searchIndex === 0){
  1012. this.quoteForm = {
  1013. ...this.quote,
  1014. site: this.$store.state.user.site,
  1015. createBy: this.$store.state.user.name,
  1016. }
  1017. this.handleQueryBu();// 查询 BU
  1018. this.handleSearch(0);// 查询报价信息
  1019. }
  1020. this.searchIndex++;
  1021. },
  1022. watch:{
  1023. 'quoteForm.customerNo'(newVal, oldVal){
  1024. this.quoteForm.customerNo = newVal.toUpperCase()
  1025. },
  1026. 'quoteForm.projectNo'(newVal, oldVal){
  1027. this.quoteForm.projectNo = newVal.toUpperCase()
  1028. },
  1029. 'quoteForm.quoteNo'(newVal, oldVal){
  1030. this.quoteForm.quoteNo = newVal.toUpperCase()
  1031. },
  1032. 'saveQuote.customerNo'(newVal, oldVal){
  1033. if (newVal){
  1034. this.saveQuote.customerNo = newVal.toUpperCase()
  1035. }else {
  1036. this.saveQuote.customerDesc = ''
  1037. this.saveQuote.projectNo = ''
  1038. this.saveQuote.projectDesc = ''
  1039. }
  1040. },
  1041. 'saveQuote.projectNo'(newVal, oldVal){
  1042. if (newVal){
  1043. this.saveQuote.projectNo = newVal.toUpperCase()
  1044. this.projectNoBlur();
  1045. }else {
  1046. this.saveQuote.projectDesc = ''
  1047. this.saveQuote.finalCustomerNo = ''
  1048. this.saveQuote.finalCustomerDesc = ''
  1049. }
  1050. },
  1051. 'saveQuote.quoter'(newVal, oldVal){
  1052. if (!newVal){
  1053. this.saveQuote.quoterName = ''
  1054. }
  1055. },
  1056. 'saveQuote.purchase'(newVal, oldVal){
  1057. if (!newVal){
  1058. this.saveQuote.purchaseName = ''
  1059. }
  1060. },
  1061. saveVisible(newVal, oldVal){
  1062. if (newVal === false){
  1063. this.detailFlag = false;
  1064. }
  1065. },
  1066. 'saveQuote.currency'(newVal, oldVal){
  1067. this.saveQuote.currency = newVal.toUpperCase()
  1068. },
  1069. 'currentQuote'(newVal, oldVal){
  1070. if (newVal && this.isMenu){
  1071. this.getPriceCheckProperties();
  1072. this.getApprovalList();
  1073. }
  1074. },
  1075. projectNo(newVal, oldVal){
  1076. if (newVal && !this.isMenu){
  1077. this.quoteForm.projectNo = newVal.toUpperCase()
  1078. this.quoteForm.site = this.$store.state.user.site
  1079. this.handleSearch(0);
  1080. }else {
  1081. this.dataList = []
  1082. this.total = 0
  1083. this.no = 1
  1084. }
  1085. },
  1086. },
  1087. activated() {
  1088. if (!this.isMenu){
  1089. return
  1090. }
  1091. if (this.$route.params.ids){
  1092. this.handleQueryByIds();
  1093. }else if (this.$route.params.type === 'project'){
  1094. this.quoteForm = {
  1095. ...this.quote,
  1096. site: this.$store.state.user.site,
  1097. quoteVersionNo: this.$route.params.quoteVersionNo,
  1098. }
  1099. this.handleSearch(0);
  1100. }
  1101. }
  1102. }
  1103. </script>
  1104. <template>
  1105. <div>
  1106. <download-excel v-if="!isMenu"
  1107. :fields="fields()"
  1108. :data="exportData"
  1109. type="xls"
  1110. :name="exportName"
  1111. :header="exportHeader"
  1112. :footer="exportFooter"
  1113. :fetch="createExportData"
  1114. worksheet="导出信息"
  1115. class="el-button el-button--primary el-button--medium">
  1116. {{ '导出' }}
  1117. </download-excel>
  1118. <quote-search v-if="isMenu" v-model:quote="quoteForm" @filterSearch="filterVisible = true" @search="handleSearch" @save="handleSave"></quote-search>
  1119. <quote-table v-loading="searchLoading"
  1120. :current-row="currentQuote"
  1121. :columns="columns"
  1122. style="margin-top: 5px"
  1123. :is-menu="isMenu"
  1124. @save="handleSave"
  1125. @remove="handleRemove"
  1126. @rowClick="handleRowClick"
  1127. @updateStatus="handleUpdateStatus"
  1128. @queryById="handleQueryById"
  1129. @againQuote="handleAgainQuote"
  1130. :data-list="dataList"
  1131. :height="height">
  1132. </quote-table>
  1133. <el-pagination @size-change="handleSizeChange"
  1134. @current-change="handlePageChange"
  1135. :current-page="no"
  1136. :page-sizes="[20, 50, 100, 200, 500]"
  1137. :page-size="size"
  1138. :total="total"
  1139. layout="total,sizes, prev, pager, next, jumper">
  1140. </el-pagination>
  1141. <el-tabs v-if="isMenu" v-model="activeName" type="border-card" style="margin-top: 0;" class="customer-tab">
  1142. <el-tab-pane label="报价明细" name="detail">
  1143. <quote-group-detail :quote="currentQuote" :auth-flag="false" :height="'28vh'"></quote-group-detail>
  1144. </el-tab-pane>
  1145. <el-tab-pane label="条目明细" name="detail2">
  1146. <quote-detail v-if="activeName === 'detail2'" :save-auth="false" :is-export="true" :quote="currentQuote" :auth-flag="false" :height="'30vh'"></quote-detail>
  1147. </el-tab-pane>
  1148. <el-tab-pane label="项目信息" name="quotation_project_information">
  1149. <quotation-project-information height="31vh" :quotation-header="currentQuote"></quotation-project-information>
  1150. </el-tab-pane>
  1151. <el-tab-pane label="客户信息" name="quotation_customer_information">
  1152. <customer-info height="31vh" :project="currentQuote"></customer-info>
  1153. </el-tab-pane>
  1154. <el-tab-pane label="客户联系人" name="quotation_customer_contact">
  1155. <quotation-customer-contact height="28vh" :quotation-header="currentQuote"></quotation-customer-contact>
  1156. </el-tab-pane>
  1157. <el-tab-pane label="报价-附件信息" name="quote_oss">
  1158. <oss-components
  1159. :save-visible="isAuth('5011:tab6:save')"
  1160. :download-visible="isAuth('5011:tab6:download')"
  1161. :remove-visible="isAuth('5011:tab6:remove')"
  1162. :preview-visible="isAuth('5011:tab6:preview')"
  1163. label="报价单号"
  1164. height="28vh"
  1165. :columns="ossColumns"
  1166. :order-ref1="currentQuote.site?currentQuote.site:''"
  1167. :order-ref2="currentQuote.quoteVersionNo?currentQuote.quoteVersionNo:''">
  1168. </oss-components>
  1169. </el-tab-pane>
  1170. <el-tab-pane label="询价-基本信息" name="request">
  1171. <price-check-properties ref="tabProperties"
  1172. v-model:data-list="priceCheckPropertiesList"
  1173. height="31vh"></price-check-properties>
  1174. </el-tab-pane>
  1175. <el-tab-pane label="询价-附件信息" name="oss">
  1176. <oss-components
  1177. :save-visible="isAuth('102001001:tab6:save')"
  1178. :download-visible="isAuth('102001001:tab6:download')"
  1179. :remove-visible="isAuth('102001001:tab6:remove')"
  1180. :preview-visible="isAuth('102001001:tab6:preview')"
  1181. label="询价单号"
  1182. height="28vh"
  1183. :columns="ossColumns"
  1184. :order-ref1="currentQuote.site"
  1185. :order-ref2="currentQuote.insideInquiryNo?currentQuote.insideInquiryNo.split('-')[0]:''">
  1186. </oss-components>
  1187. </el-tab-pane>
  1188. <!-- 审批信息 -->
  1189. <el-tab-pane label="审批信息" name="approvalInformation">
  1190. <approval-information ref="approvalTable" v-model:data-list="approvalList" :height="300"></approval-information>
  1191. </el-tab-pane>
  1192. </el-tabs>
  1193. <el-dialog :title="saveQuote.id? '报价信息:'+ saveQuote.quoteVersionNo : '报价信息'" v-drag :close-on-click-modal="false" :visible.sync="saveVisible" width="500px" >
  1194. <el-form ref="saveForm" :model="saveQuote" :rules="saveRules" label-position="top" label-width="100px">
  1195. <el-row :gutter="10">
  1196. <el-col :span="8">
  1197. <el-form-item label="内部询价单号" prop="insideInquiryNo" :show-message="false">
  1198. <span slot="label" v-if="!detailFlag">
  1199. <a @click="handleQueryInquiry">内部询价单号</a>
  1200. </span>
  1201. <el-input v-model="saveQuote.insideInquiryNo" readonly @change="handleInquiryBlur" :disabled="detailFlag"></el-input>
  1202. </el-form-item>
  1203. </el-col>
  1204. <el-col :span="8">
  1205. <el-form-item label="报价日期" prop="quoteDate" :show-message="false">
  1206. <el-date-picker style="width: 100%" :disabled="detailFlag" v-model="saveQuote.quoteDate" type="date" value-format='yyyy-MM-dd' format='yyyy-MM-dd'></el-date-picker>
  1207. </el-form-item>
  1208. </el-col>
  1209. <el-col :span="8">
  1210. <el-form-item label="客户询价单号" prop="customerInquiryNo" :show-message="false">
  1211. <el-input v-model="saveQuote.customerInquiryNo" :disabled="detailFlag"></el-input>
  1212. </el-form-item>
  1213. </el-col>
  1214. </el-row>
  1215. <el-row :gutter="10">
  1216. <el-col :span="8">
  1217. <el-form-item label="客户编码" prop="customerNo" :show-message="false">
  1218. <span slot="label" v-if="!detailFlag">
  1219. <a @click="getBaseList(102)">客户编码</a>
  1220. </span>
  1221. <el-input v-model="saveQuote.customerNo" :disabled="detailFlag" @change="customerNoBlur"></el-input>
  1222. </el-form-item>
  1223. </el-col>
  1224. <el-col :span="16">
  1225. <el-form-item label="客户描述" prop="customerDesc" :show-message="false">
  1226. <el-input v-model="saveQuote.customerDesc" disabled></el-input>
  1227. </el-form-item>
  1228. </el-col>
  1229. </el-row>
  1230. <el-row :gutter="10">
  1231. <el-col :span="8">
  1232. <el-form-item label="项目号" prop="projectNo" :show-message="false">
  1233. <span slot="label" v-if="saveQuote.customerNo && !detailFlag">
  1234. <a @click="getBaseList(104)">项目号</a>
  1235. </span>
  1236. <el-input v-model="saveQuote.projectNo" :disabled="!saveQuote.customerNo || detailFlag"></el-input>
  1237. </el-form-item>
  1238. </el-col>
  1239. <el-col :span="16">
  1240. <el-form-item label="项目描述" prop="projectDesc" :show-message="false">
  1241. <el-input v-model="saveQuote.projectDesc" disabled></el-input>
  1242. </el-form-item>
  1243. </el-col>
  1244. </el-row>
  1245. <el-row :gutter="10">
  1246. <el-col :span="8">
  1247. <el-form-item label="终端客户编码" prop="finalCustomerNo" :show-message="false">
  1248. <el-input v-model="saveQuote.finalCustomerNo" disabled></el-input>
  1249. </el-form-item>
  1250. </el-col>
  1251. <el-col :span="16">
  1252. <el-form-item label="终端客户描述" prop="finalCustomerDesc" :show-message="false">
  1253. <el-input v-model="saveQuote.finalCustomerDesc" disabled></el-input>
  1254. </el-form-item>
  1255. </el-col>
  1256. </el-row>
  1257. <el-row :gutter="10">
  1258. <el-col :span="8">
  1259. <el-form-item label="报价专员" prop="quoter" :show-message="false">
  1260. <a slot="label" v-if="!detailFlag" @click="getBaseList(2002)">报价专员</a>
  1261. <el-input v-model="saveQuote.quoterName" readonly :disabled="detailFlag">
  1262. <span slot="suffix" v-show="saveQuote.quoter && !detailFlag" @click="clearModalData('quoter')"><i class="el-icon-circle-close" style="margin-left: 5px;cursor: pointer;"></i></span>
  1263. </el-input>
  1264. </el-form-item>
  1265. </el-col>
  1266. <el-col :span="8">
  1267. <el-form-item label="采购专员" prop="purchase" :show-message="false">
  1268. <a slot="label" v-if="!detailFlag" @click="getBaseList(2000)">采购专员</a>
  1269. <el-input v-model="saveQuote.purchaseName" readonly :disabled="detailFlag">
  1270. <span slot="suffix" v-show="saveQuote.purchase && !detailFlag" @click="clearModalData('purchase')"><i class="el-icon-circle-close" style="margin-left: 5px;cursor: pointer;"></i></span>
  1271. </el-input>
  1272. </el-form-item>
  1273. </el-col>
  1274. <el-col :span="24">
  1275. <el-form-item label="备注" prop="remark" class="auto" :show-message="false">
  1276. <el-input v-model="saveQuote.remark" :disabled="detailFlag" :rows="3" type="textarea"></el-input>
  1277. </el-form-item>
  1278. </el-col>
  1279. </el-row>
  1280. </el-form>
  1281. <div slot="footer" class="dialog-footer">
  1282. <el-button type="primary" v-if="!detailFlag" @click="handleSaveOrUpdateQuote"> </el-button>
  1283. <el-button @click="saveVisible = false"> </el-button>
  1284. </div>
  1285. </el-dialog>
  1286. <el-dialog title="询价申请" v-drag :visible.sync="insideInquiryVisible" width="1000px" modal-append-to-body :close-on-click-modal="false">
  1287. <el-form label-position="top"
  1288. :model="insideInquiry"
  1289. size="mini">
  1290. <el-row :gutter="10">
  1291. <el-col :span="3">
  1292. <el-form-item label="询价单号">
  1293. <el-input v-model="insideInquiry.quotationNo" clearable/>
  1294. </el-form-item>
  1295. </el-col>
  1296. <el-col :span="3">
  1297. <el-form-item label="申请批次号">
  1298. <el-input v-model="insideInquiry.quotationBatchNo" clearable></el-input>
  1299. </el-form-item>
  1300. </el-col>
  1301. <el-col :span="3">
  1302. <el-form-item label="序号">
  1303. <el-input v-model="insideInquiry.quotationItemNo" clearable></el-input>
  1304. </el-form-item>
  1305. </el-col>
  1306. <el-col :span="3">
  1307. <el-form-item label="项目名称">
  1308. <el-input v-model="insideInquiry.projectName" clearable></el-input>
  1309. </el-form-item>
  1310. </el-col>
  1311. <el-col :span="3">
  1312. <el-form-item label="直接客户名称">
  1313. <el-input v-model="insideInquiry.finalCustomerName" clearable></el-input>
  1314. </el-form-item>
  1315. </el-col>
  1316. <el-col :span="3">
  1317. <el-form-item label="报价专员">
  1318. <el-input v-model="insideInquiry.quoterName" clearable></el-input>
  1319. </el-form-item>
  1320. </el-col>
  1321. <el-col :span="3">
  1322. <el-form-item label="状态">
  1323. <el-select v-model="insideInquiry.quotationStatus" style="width:100%">
  1324. <el-option label="全部" value=""></el-option>
  1325. <el-option label="草稿" value="草稿"></el-option>
  1326. <el-option label="审批中" value="审批中"></el-option>
  1327. <el-option label="已完成" value="已完成"></el-option>
  1328. </el-select>
  1329. </el-form-item>
  1330. </el-col>
  1331. <el-col :span="2">
  1332. <el-form-item label=" ">
  1333. <el-button type="primary" style="padding: 3px 12px" @click="searchInsideInquiry">查询</el-button>
  1334. </el-form-item>
  1335. </el-col>
  1336. </el-row>
  1337. </el-form>
  1338. <el-table :data="insideInquiryList" height="300" stripe border @row-dblclick="dblclickInsideInquiry">
  1339. <el-table-column prop="quotationNo" header-align="center" min-width="120" label="询价单号"/>
  1340. <el-table-column prop="quotationBatchNo" header-align="center" label="询价批次号"/>
  1341. <el-table-column width="60" align="center" header-align="center" prop="quotationItemNo" label="询价序号"/>
  1342. <el-table-column prop="projectName" header-align="center" label="项目名称"/>
  1343. <el-table-column prop="quotationStatus" header-align="center" label="状态"/>
  1344. <el-table-column label="报价专员" header-align="center" prop="quoterName"/>
  1345. <el-table-column label="直接客户编码" header-align="center" prop="finalCustomerId"/>
  1346. <el-table-column label="直接客户名称" header-align="center" prop="finalCustomerName"/>
  1347. </el-table>
  1348. <el-footer style="height:30px;margin-top: 20px;text-align:center">
  1349. <el-button type="primary" @click="insideInquiryVisible = false">关闭</el-button>
  1350. </el-footer>
  1351. </el-dialog>
  1352. <choose-list ref="baseList" @getBaseData="getBaseData"></choose-list>
  1353. <filter-search :visible.sync="filterVisible" ref="filter-search" @search="searchByAnyField"></filter-search>
  1354. </div>
  1355. </template>
  1356. <style scoped>
  1357. .auto /deep/ .el-form-item__content{
  1358. height: auto;
  1359. line-height: 1.5;
  1360. }
  1361. </style>