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.

1112 lines
34 KiB

  1. <template>
  2. <div class="mod-config">
  3. <el-form :inline="true" label-position="top" :model="searchData" @keyup.enter.native="getDataList()">
  4. <el-row :gutter="10">
  5. <el-col :span="3">
  6. <el-form-item :label="'BU'">
  7. <el-select v-model="searchData.bu" placeholder="请选择" clearable>
  8. <el-option
  9. v-for = "i in userBuList"
  10. :key = "i.buNo"
  11. :label = "i.buDesc"
  12. :value = "i.buNo">
  13. </el-option>
  14. </el-select>
  15. </el-form-item>
  16. </el-col>
  17. <el-col :span="3">
  18. <el-form-item label="客户编码">
  19. <el-input v-model="searchData.customerNo"></el-input>
  20. </el-form-item>
  21. </el-col>
  22. <el-col :span="3">
  23. <el-form-item label="客户名称">
  24. <el-input v-model="searchData.customerDesc"></el-input>
  25. </el-form-item>
  26. </el-col>
  27. <el-col :span="3">
  28. <el-form-item label="采购专员">
  29. <el-input v-model="searchData.purchase"></el-input>
  30. </el-form-item>
  31. </el-col>
  32. <el-col :span="3">
  33. <el-form-item label="报价单号">
  34. <el-input v-model="searchData.quoteVersionNo"></el-input>
  35. </el-form-item>
  36. </el-col>
  37. <el-col :span="3">
  38. <el-form-item label="客户询价单号">
  39. <el-input v-model="searchData.customerInquiryNo"></el-input>
  40. </el-form-item>
  41. </el-col>
  42. </el-row>
  43. <el-row :gutter="10">
  44. <el-col :span="3">
  45. <el-form-item label="内部询价单号">
  46. <el-input v-model="searchData.insideInquiryNo"></el-input>
  47. </el-form-item>
  48. </el-col>
  49. <el-col :span="3">
  50. <el-form-item label="报价专员">
  51. <el-input v-model="searchData.quoter"></el-input>
  52. </el-form-item>
  53. </el-col>
  54. <el-col :span="3">
  55. <el-form-item label="状态">
  56. <el-select v-model="searchData.status" style="width: 100%">
  57. <el-option label="全部" value=""></el-option>
  58. <el-option label="草稿" value="草稿"></el-option>
  59. <el-option label="下达" value="下达"></el-option>
  60. </el-select>
  61. </el-form-item>
  62. </el-col>
  63. <el-col :span="6">
  64. <el-form-item label="报价日期">
  65. <div style="display: flex">
  66. <el-date-picker style="width: 47%" v-model="searchData.startDate" type="date" value-format='yyyy-MM-dd' format='yyyy-MM-dd'></el-date-picker>
  67. <div style="width: 6%;text-align: center">-</div>
  68. <el-date-picker style="width: 47%" v-model="searchData.endDate" type="date" value-format='yyyy-MM-dd' format='yyyy-MM-dd'></el-date-picker>
  69. </div>
  70. </el-form-item>
  71. </el-col>
  72. <el-col :span="3">
  73. <el-form-item label=" ">
  74. <el-button @click="getDataList"> </el-button>
  75. </el-form-item>
  76. </el-col>
  77. </el-row>
  78. </el-form>
  79. <!-- 询价列表 -->
  80. <el-table
  81. height="75vh"
  82. :data="dataList"
  83. border
  84. ref="mainTable"
  85. @row-click="quoteClickRow"
  86. @current-change="changeCurrentRow"
  87. v-loading="dataListLoading"
  88. style="width: 100%;margin-top: 5px">
  89. <el-table-column
  90. v-for="(item,index) in columnList" :key="index"
  91. :sortable="item.columnSortable"
  92. :prop="item.columnProp"
  93. :header-align="item.headerAlign"
  94. :align="item.align"
  95. :fixed="item.fixed === ''?false:item.fixed"
  96. :min-width="item.columnWidth"
  97. :label="item.columnLabel">
  98. <template slot-scope="scope">
  99. <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
  100. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  101. </template>
  102. </el-table-column>
  103. <el-table-column
  104. fixed="right"
  105. header-align="center"
  106. align="center"
  107. width="180"
  108. label="操作">
  109. <template slot-scope="scope">
  110. <el-link style="cursor: pointer" @click="updateModal(scope.row)">审批</el-link>
  111. </template>
  112. </el-table-column>
  113. </el-table>
  114. <!-- 分页插件 -->
  115. <el-pagination style="margin-top: 0px"
  116. @size-change="sizeChangeHandle"
  117. @current-change="currentChangeHandle"
  118. :current-page="pageIndex"
  119. :page-sizes="[20, 50, 100, 200, 500]"
  120. :page-size="pageSize"
  121. :total="totalPage"
  122. layout="total, sizes, prev, pager, next, jumper">
  123. </el-pagination>
  124. <el-dialog title="申请单审核" :visible.sync="reviewFlag" width="520px" :close-on-click-modal="false"
  125. v-drag>
  126. <el-row>
  127. <el-col :span="24" style="margin-top: 30px">
  128. <div style="margin-left: 45px;margin-top: -30px">
  129. <el-form :inline="true" label-width="120px" label-position="top">
  130. <el-form-item label="申请单号">
  131. <el-input style="width: 200px;" readonly placeholder="" :value="modalData.quoteVersionNo"></el-input>
  132. </el-form-item>
  133. <el-form-item label="审批步骤号">
  134. <el-input style="width: 200px;" readonly placeholder="" :value="modalData.stepId"></el-input>
  135. </el-form-item>
  136. </el-form>
  137. <el-form :inline="true" label-width="120px" label-position="top">
  138. <el-form-item label="审批人">
  139. <el-input style="width: 200px;" readonly placeholder="" :value="modalData.userName"></el-input>
  140. </el-form-item>
  141. <el-form-item label="审批时间">
  142. <el-input style="width: 200px;" readonly placeholder=""
  143. :value="modalData.strActAuthorizeDate"></el-input>
  144. </el-form-item>
  145. <el-form-item label="备注">
  146. <el-input type="textarea" :readonly="(modalData.canAuthFlag!=='Y') "
  147. :rows="3"
  148. style="text-align: left;width: 415px;" v-model="modalData.authHistRemark"></el-input>
  149. </el-form-item>
  150. </el-form>
  151. <el-footer style="height:30px;margin-top: 5px;margin-left:-35px;text-align:center">
  152. <el-button type="primary" v-if="( modalData.canAuthFlag === 'Y') "
  153. @click="saveReview(modalData,'Y')">{{'同意'}}
  154. </el-button>
  155. <el-button type="primary" v-if="( modalData.canAuthFlag === 'Y') "
  156. @click="saveReview(modalData ,'N')">{{'不同意'}}
  157. </el-button>
  158. </el-footer>
  159. </div>
  160. </el-col>
  161. </el-row>
  162. </el-dialog>
  163. <!-- chooseList模态框 -->
  164. <Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
  165. </div>
  166. </template>
  167. <script>
  168. import Chooselist from '@/views/modules/common/Chooselist_eam'
  169. import {getSiteAndBuByUserName} from "../../../api/qc/qc";
  170. import DictDataSelect from "../sys/dict-data-select.vue";
  171. import {queryCustomerList} from "@/api/customer/customer";
  172. import {verifyData} from "@/api/part/partInformation";
  173. import {EventBus} from "../../../main";
  174. import {partInformationSearch} from "../../../api/part/partInformation";
  175. import {
  176. searchUserAuthQuoteApplicationInfo
  177. } from "../../../api/quote/quote";
  178. import quotationUpload from "../quote/quotation_upload.vue";
  179. import {updateAuthHist} from "../../../api/auth/auth";
  180. export default {
  181. computed: {
  182. // quotationInformationFlag () {
  183. // return (value) => {
  184. // if (!this.plmQuotationInformationArr){
  185. // return 'N'
  186. // }
  187. // let arr = this.plmQuotationInformationArr.filter(a => a.fieldId === value)
  188. // if (arr.length > 0) {
  189. // return arr[0].updateFlag
  190. // }
  191. // return 'N'
  192. // }
  193. // },
  194. },
  195. components: {
  196. quotationUpload,
  197. DictDataSelect,
  198. Chooselist
  199. },
  200. props:{
  201. height:{
  202. type:Number,
  203. default:200
  204. }
  205. },
  206. data() {
  207. return {
  208. userBuList: [],
  209. copyPriceCheckDetail:{},
  210. loading:false,
  211. attributeDialog:true,
  212. priceCheckRule: {
  213. associatedPartNo:[{required: true, message: ' ', trigger: 'change'},],
  214. materialRequired:[{required: true, message: ' ', trigger: 'change'},],
  215. yearlyOrMonthlyRequirement:[{required: true, message: ' ', trigger: 'change'},],
  216. runningWidth:[{required: true, message: ' ', trigger: 'change'},],
  217. },
  218. savePriceDetail:{
  219. site:'',
  220. quotationNo:'',
  221. associatedPartNo:'',
  222. materialRequired:'',
  223. yearlyOrMonthlyRequirement:'',
  224. runningWidth:'',
  225. },
  226. priceCheckPropertiesList: [],
  227. // 导出
  228. exportData: [],
  229. exportName: '询价申请' + this.dayjs().format('YYYYMMDDHHmmss'),
  230. exportHeader: ['询价申请'],
  231. exportFooter: [],
  232. resultList: [],
  233. uploadUrl: '/plm/quotationInformation/uploadExcel',
  234. // ======== 行高 ========
  235. secondHeight: 200,
  236. // ======== 分页 ========
  237. pageIndex: 1,
  238. pageSize: 50,
  239. totalPage: 0,
  240. selectedDataNum: 0,
  241. // 条件查询
  242. searchData: {
  243. userId: this.$store.state.user.id,
  244. site: this.$store.state.user.site,
  245. id: '',
  246. customerNo: '',
  247. customerDesc: '',
  248. quoteVersionNo: '',
  249. bu: '',
  250. requestStartDate: '',
  251. requestEndDate: '',
  252. requiredCompletionStartDate: '',
  253. requiredCompletionEndDate: '',
  254. status: '',
  255. quoterName: '',
  256. requesterName: '',
  257. priorityLevel: '',
  258. orderRef1: 'BJ',
  259. page: 1,
  260. limit: 10,
  261. menuId: this.$route.meta.menuId,
  262. },
  263. // 其它
  264. dataListLoading: false,
  265. // 选择项目弹框开关
  266. chooseProjectListFlag: false,
  267. reviewFlag: false,
  268. // 初始页签
  269. activeTable: 'inquiryAuth',
  270. // ======== 数据对象 ========
  271. modalData: {
  272. flag: '',
  273. title: '',
  274. site: this.$store.state.user.site,
  275. userName: this.$store.state.user.name,
  276. id: '',
  277. quoteVersionNo: '',
  278. customerNo: '',
  279. customerDesc: '',
  280. requestDate: '',
  281. requester: '',
  282. requesterName: '',
  283. customerInquiryNo: '',
  284. priorityLevel: '',
  285. requiredCompletionDate: '',
  286. quoter: '',
  287. quoterName: '',
  288. status: '',
  289. remark: '',
  290. createDate: '',
  291. createBy: '',
  292. updateDate: '',
  293. updateBy: '',
  294. authHistId: '',
  295. approveResult: '',
  296. authHistRemark: '',
  297. canAuthFlag: '',
  298. actAuthorizator: '',
  299. strActAuthorizeDate: this.dayjs().format("YYYY-MM-DD HH:mm:ss"),
  300. actAuthorizeDate: ''
  301. },
  302. inquiryPartItemModalData: {
  303. bu: '',
  304. buDesc: '',
  305. quoteVersionNo: '',
  306. partNo: '',
  307. partDesc: '',
  308. umId: '',
  309. umName: '',
  310. codeNo: '',
  311. codeDesc: '',
  312. textValue: '',
  313. numValue: '',
  314. valueType: '',
  315. valueTypeDb: '',
  316. valueChooseFlag: '',
  317. availableValueList: [],
  318. },
  319. // ======== 数据列表 ========
  320. dataList: [],
  321. inquiryAuthDataList: [],
  322. // ======== 列表表头 ========
  323. columnList: [
  324. {
  325. userId: this.$store.state.user.name,
  326. functionId: 190006,
  327. serialNumber: '190006Table1BuDesc',
  328. tableId: '190006Table1',
  329. tableName: '报价信息表',
  330. columnProp: 'buDesc',
  331. headerAlign: 'center',
  332. align: 'center',
  333. columnLabel: 'BU',
  334. columnHidden: false,
  335. columnImage: false,
  336. columnSortable: false,
  337. sortLv: 0,
  338. status: true,
  339. fixed: '',
  340. columnWidth: 120
  341. },
  342. {
  343. userId: this.$store.state.user.name,
  344. functionId: 190006,
  345. serialNumber: '190006Table1QuoteVersionNo',
  346. tableId: '190006Table1',
  347. tableName: '报价信息表',
  348. columnProp: 'quoteVersionNo',
  349. headerAlign: 'center',
  350. align: 'center',
  351. columnLabel: '报价单号',
  352. columnHidden: false,
  353. columnImage: false,
  354. columnSortable: false,
  355. sortLv: 0,
  356. status: true,
  357. fixed: '',
  358. columnWidth: 180
  359. },
  360. {
  361. userId: this.$store.state.user.name,
  362. functionId: 190006,
  363. serialNumber: '190006Table1QuoteDate',
  364. tableId: '190006Table1',
  365. tableName: '报价信息表',
  366. columnProp: 'quoteDate',
  367. headerAlign: 'center',
  368. align: 'center',
  369. columnLabel: '报价日期',
  370. columnHidden: false,
  371. columnImage: false,
  372. columnSortable: false,
  373. sortLv: 0,
  374. status: true,
  375. fixed: '',
  376. columnWidth: 100
  377. },
  378. {
  379. userId: this.$store.state.user.name,
  380. functionId: 190006,
  381. serialNumber: '190006Table1CustomerNo',
  382. tableId: '190006Table1',
  383. tableName: '报价信息表',
  384. columnProp: 'customerNo',
  385. headerAlign: 'center',
  386. align: 'center',
  387. columnLabel: '客户编码',
  388. columnHidden: false,
  389. columnImage: false,
  390. columnSortable: false,
  391. sortLv: 0,
  392. status: true,
  393. fixed: '',
  394. columnWidth: 120
  395. },
  396. {
  397. userId: this.$store.state.user.name,
  398. functionId: 190006,
  399. serialNumber: '190006Table1CustomerDesc',
  400. tableId: '190006Table1',
  401. tableName: '报价信息表',
  402. columnProp: 'customerDesc',
  403. headerAlign: 'center',
  404. align: 'left',
  405. columnLabel: '客户名称',
  406. columnHidden: false,
  407. columnImage: false,
  408. columnSortable: false,
  409. sortLv: 0,
  410. status: true,
  411. fixed: '',
  412. columnWidth: 120
  413. },
  414. {
  415. userId: this.$store.state.user.name,
  416. functionId: 190006,
  417. serialNumber: '190006Table1QuoterName',
  418. tableId: '190006Table1',
  419. tableName: '报价信息表',
  420. columnProp: 'quoterName',
  421. headerAlign: 'center',
  422. align: 'left',
  423. columnLabel: '报价专员',
  424. columnHidden: false,
  425. columnImage: false,
  426. columnSortable: false,
  427. sortLv: 0,
  428. status: true,
  429. fixed: '',
  430. columnWidth: 120
  431. },
  432. {
  433. userId: this.$store.state.user.name,
  434. functionId: 190006,
  435. serialNumber: '190006Table1PurchaseName',
  436. tableId: '190006Table1',
  437. tableName: '报价信息表',
  438. columnProp: 'purchaseName',
  439. headerAlign: 'center',
  440. align: 'left',
  441. columnLabel: '采购专员',
  442. columnHidden: false,
  443. columnImage: false,
  444. columnSortable: false,
  445. sortLv: 0,
  446. status: true,
  447. fixed: '',
  448. columnWidth: 120
  449. },
  450. {
  451. userId: this.$store.state.user.name,
  452. functionId: 190006,
  453. serialNumber: '190006Table1Currency',
  454. tableId: '190006Table1',
  455. tableName: '报价信息表',
  456. columnProp: 'currency',
  457. headerAlign: 'center',
  458. align: 'center',
  459. columnLabel: '货币',
  460. columnHidden: false,
  461. columnImage: false,
  462. columnSortable: false,
  463. sortLv: 0,
  464. status: true,
  465. fixed: '',
  466. columnWidth: 120
  467. },
  468. {
  469. userId: this.$store.state.user.name,
  470. functionId: 190006,
  471. serialNumber: '190006Table1Status',
  472. tableId: '190006Table1',
  473. tableName: '报价信息表',
  474. columnProp: 'status',
  475. headerAlign: 'center',
  476. align: 'center',
  477. columnLabel: '状态',
  478. columnHidden: false,
  479. columnImage: false,
  480. columnSortable: false,
  481. sortLv: 0,
  482. status: true,
  483. fixed: '',
  484. columnWidth: 120
  485. },
  486. {
  487. userId: this.$store.state.user.name,
  488. functionId: 190006,
  489. serialNumber: '190006Table1CustomerInquiryNo',
  490. tableId: '190006Table1',
  491. tableName: '报价信息表',
  492. columnProp: 'customerInquiryNo',
  493. headerAlign: 'center',
  494. align: 'center',
  495. columnLabel: '客户报价单号',
  496. columnHidden: false,
  497. columnImage: false,
  498. columnSortable: false,
  499. sortLv: 0,
  500. status: true,
  501. fixed: '',
  502. columnWidth: 120
  503. },
  504. {
  505. userId: this.$store.state.user.name,
  506. functionId: 190006,
  507. serialNumber: '190006Table1InsideInquiryNo',
  508. tableId: '190006Table1',
  509. tableName: '报价信息表',
  510. columnProp: 'insideInquiryNo',
  511. headerAlign: 'center',
  512. align: 'center',
  513. columnLabel: '内部询价单号',
  514. columnHidden: false,
  515. columnImage: false,
  516. columnSortable: false,
  517. sortLv: 0,
  518. status: true,
  519. fixed: '',
  520. columnWidth: 120
  521. },
  522. {
  523. userId: this.$store.state.user.name,
  524. functionId: 190006,
  525. serialNumber: '190006Table1Auth',
  526. tableId: '190006Table1',
  527. tableName: '询价产品表',
  528. columnProp: 'auth',
  529. headerAlign: 'center',
  530. align: 'left',
  531. columnLabel: '审批组/人',
  532. columnHidden: false,
  533. columnImage: false,
  534. columnSortable: false,
  535. sortLv: 0,
  536. status: true,
  537. fixed: '',
  538. columnWidth: 120
  539. },
  540. {
  541. userId: this.$store.state.user.name,
  542. functionId: 190006,
  543. serialNumber: '190006Table2StepId',
  544. tableId: '190006Table2',
  545. tableName: '询价产品表',
  546. columnProp: 'stepId',
  547. headerAlign: 'center',
  548. align: 'left',
  549. columnLabel: '审批步骤号',
  550. columnHidden: false,
  551. columnImage: false,
  552. columnSortable: false,
  553. sortLv: 0,
  554. status: true,
  555. fixed: '',
  556. columnWidth: 120
  557. },
  558. {
  559. userId: this.$store.state.user.name,
  560. functionId: 190006,
  561. serialNumber: '190006Table1AuthHistRemark',
  562. tableId: '190006Table1',
  563. tableName: '询价信息表',
  564. columnProp: 'authHistRemark',
  565. headerAlign: 'center',
  566. align: 'left',
  567. columnLabel: '备注',
  568. columnHidden: false,
  569. columnImage: false,
  570. columnSortable: false,
  571. sortLv: 0,
  572. status: true,
  573. fixed: '',
  574. columnWidth: 120
  575. },
  576. ],
  577. // ======== 必填规则 ========
  578. rules: {
  579. bu: [
  580. {required: true, message: ' ', trigger: 'change'},
  581. {required: true, message: ' ', trigger: 'blur'},
  582. ],
  583. quoteVersionNo: [
  584. {required: true, message: ' ', trigger: 'change'},
  585. {required: true, message: ' ', trigger: 'blur'},
  586. ],
  587. customerNo: [
  588. {required: true, message: ' ', trigger: 'change'},
  589. {required: true, message: ' ', trigger: 'blur'},
  590. ],
  591. customerDesc: [
  592. {required: true, message: ' ', trigger: 'change'},
  593. {required: true, message: ' ', trigger: 'blur'},
  594. ],
  595. requester: [
  596. {required: true, message: ' ', trigger: 'change'},
  597. {required: true, message: ' ', trigger: 'blur'},
  598. ],
  599. requesterName: [
  600. {required: true, message: ' ', trigger: 'change'},
  601. {required: true, message: ' ', trigger: 'blur'},
  602. ],
  603. quoter: [
  604. {required: true, message: ' ', trigger: 'change'},
  605. {required: true, message: ' ', trigger: 'blur'},
  606. ],
  607. quoterName: [
  608. {required: true, message: ' ', trigger: 'change'},
  609. {required: true, message: ' ', trigger: 'blur'},
  610. ],
  611. priorityLevel: [
  612. {required: true, message: ' ', trigger: 'change'},
  613. ],
  614. requiredCompletionDate: [
  615. {required: true, message: ' ', trigger: 'change'},
  616. {required: true, message: ' ', trigger: 'blur'},
  617. ],
  618. requestDate: [
  619. {required: true, message: ' ', trigger: 'change'},
  620. {required: true, message: ' ', trigger: 'blur'},
  621. ],
  622. },
  623. inquiryPartRules: {
  624. bu: [
  625. {required: true, message: ' ', trigger: 'change'},
  626. {required: true, message: ' ', trigger: 'blur'},
  627. ],
  628. partNo: [
  629. {required: true, message: ' ', trigger: 'change'},
  630. {required: true, message: ' ', trigger: 'blur'},
  631. ],
  632. partDesc: [
  633. {required: true, message: ' ', trigger: 'change'},
  634. {required: true, message: ' ', trigger: 'blur'},
  635. ],
  636. inquiryQty: [
  637. {required: true, message: ' ', trigger: 'change'},
  638. {required: true, message: ' ', trigger: 'blur'},
  639. ],
  640. umId: [
  641. {required: true, message: ' ', trigger: 'change'},
  642. {required: true, message: ' ', trigger: 'blur'},
  643. ],
  644. codeNo: [
  645. {required: true, message: ' ', trigger: 'change'},
  646. {required: true, message: ' ', trigger: 'blur'},
  647. ],
  648. },
  649. // ======== 选中的当前行数据 ========
  650. quoteCurrentRow: {},
  651. // ======== 模态框开关控制 ========
  652. modalFlag: false,
  653. modalDisableFlag: false,
  654. inquiryPartModalFlag: false,
  655. inquiryPartModalDisableFlag: false,
  656. inquiryPartItemModalFlag: false,
  657. }
  658. },
  659. mounted() {
  660. this.$nextTick(() => {
  661. /*第二个表格高度的动态调整*/
  662. this.height = window.innerHeight - 210;
  663. })
  664. },
  665. created() {
  666. this.getSiteAndBuByUserName()
  667. this.getDataList()
  668. },
  669. methods: {
  670. // 获取用户的bu
  671. getSiteAndBuByUserName () {
  672. let tempData = {
  673. username: this.$store.state.user.name,
  674. }
  675. getSiteAndBuByUserName(tempData).then(({data}) => {
  676. if (data.code === 0) {
  677. this.userBuList = data.rows
  678. }
  679. })
  680. },
  681. // ======== 分页相关方法 ========
  682. /**
  683. * 每页数
  684. * @param val
  685. */
  686. sizeChangeHandle(val) {
  687. this.pageSize = val
  688. this.pageIndex = 1
  689. this.getDataList()
  690. },
  691. /**
  692. * 当前页
  693. * @param val
  694. */
  695. currentChangeHandle(val) {
  696. this.pageIndex = val
  697. this.getDataList()
  698. },
  699. // ======== 页签切换相关方法 ========
  700. /**
  701. * 列表表格选择替换
  702. * @param tab
  703. * @param event
  704. */
  705. tabClick(tab, event) {
  706. // 刷新列表数据
  707. this.refreshCurrentTabTable()
  708. },
  709. // ======== 列表操作方法 ========
  710. /**
  711. * 单机选中询价信息
  712. * @param row
  713. */
  714. quoteClickRow(row) {
  715. this.quoteCurrentRow = JSON.parse(JSON.stringify(row))
  716. },
  717. /**
  718. * 当前值发生变化的时候修改
  719. * @param row
  720. * @param oldRow
  721. */
  722. changeCurrentRow(row, oldRow) {
  723. // 判断是否是获取焦点的事件
  724. if (row) {
  725. this.quoteCurrentRow = JSON.parse(JSON.stringify(row))
  726. //刷新当前页表
  727. this.refreshCurrentTabTable()
  728. }
  729. },
  730. /**
  731. * 刷新页签的table数据
  732. */
  733. refreshCurrentTabTable() {
  734. },
  735. // ======== 列表数据刷新方法 ========
  736. /**
  737. * 获取数据列表
  738. */
  739. getDataList() {
  740. this.searchData.limit = this.pageSize
  741. this.searchData.page = this.pageIndex
  742. searchUserAuthQuoteApplicationInfo(this.searchData).then(({data}) => {
  743. if (data.code === 0) {
  744. this.dataList = data.page.list
  745. this.pageIndex = data.page.currPage
  746. this.pageSize = data.page.pageSize
  747. this.totalPage = data.page.totalCount
  748. this.dataList.forEach(item => {
  749. if (item.groupDesc === '' || item.groupDesc === null) {
  750. item.auth = item.userDisplay
  751. } else {
  752. item.auth = item.groupDesc
  753. }
  754. })
  755. //判断是否全部存在数据
  756. if (this.totalPage > 0) {
  757. //设置选中行
  758. this.$refs.mainTable.setCurrentRow(this.dataList[0])
  759. this.refreshCurrentTabTable() //加载当前的页签的table
  760. this.quoteClickRow(this.dataList[0])
  761. }
  762. }
  763. this.dataListLoading = false
  764. })
  765. },
  766. // /**
  767. // * 获得这些询价号的全部附件
  768. // */
  769. // getFileContentList () {
  770. // let currentData = {
  771. // orderRef1: this.$store.state.user.site,
  772. // orderRef2: this.enterResultData.quotationNo
  773. // }
  774. // getFileContentList(currentData).then(({data}) => {
  775. // if (data && data.code === 0) {
  776. // this.enterResultData.fileContentList = data.rows
  777. // } else {
  778. // this.enterResultData.fileContentList = []
  779. // }
  780. // })
  781. // },
  782. // ======== chooseList相关方法 ========
  783. /**
  784. * 获取基础数据列表S
  785. * @param val
  786. * @param type
  787. */
  788. getBaseList(val, type) {
  789. this.tagNo = val
  790. this.tagNo1 = type
  791. this.$nextTick(() => {
  792. let strVal = ''
  793. let conSql = ''
  794. if (val === 509) {
  795. if (type === 1) {
  796. strVal = this.modalData.customerNo ? this.modalData.customerNo : ''
  797. }
  798. if (type === 2) {
  799. strVal = this.searchData.customerNo ? this.searchData.customerNo : ''
  800. }
  801. }
  802. if (val === 2002) {
  803. if (type === 1) {
  804. strVal = this.searchData.quoterName ? this.searchData.quoterName : ''
  805. conSql = " and b.site = '" + this.$store.state.user.site + "'"
  806. }
  807. if (type === 2) {
  808. strVal = this.modalData.quoterName ? this.modalData.quoterName : ''
  809. conSql = " and b.site = '" + this.$store.state.user.site + "'"
  810. }
  811. }
  812. if (val === 2008) {
  813. if (type === 1) {
  814. strVal = this.searchData.requesterName ? this.searchData.requesterName : ''
  815. conSql = " and b.site = '" + this.$store.state.user.site + "'"
  816. }
  817. if (type === 2) {
  818. strVal = this.modalData.requesterName ? this.modalData.requesterName : ''
  819. conSql = " and b.site = '" + this.$store.state.user.site + "'"
  820. }
  821. }
  822. this.$refs.baseList.init(val, strVal, conSql)
  823. })
  824. },
  825. /**
  826. * 列表方法的回调
  827. * @param val
  828. */
  829. getBaseData(val) {
  830. if (this.tagNo === 509) {
  831. if (this.tagNo1 === 1) {
  832. if (val.customer_no === this.modalData.customerNo) {
  833. return
  834. }
  835. this.modalData.customerNo = val.customer_no
  836. this.modalData.customerDesc = val.customer_desc
  837. }
  838. if (this.tagNo1 === 2) {
  839. if (val.customer_no === this.searchData.customerNo) {
  840. return
  841. }
  842. this.searchData.customerNo = val.customer_no
  843. }
  844. }
  845. if (this.tagNo === 2002) {
  846. if (this.tagNo1 === 1) {
  847. this.searchData.quoter = val.username
  848. this.searchData.quoterName = val.user_display
  849. }
  850. if (this.tagNo1 === 2) {
  851. this.modalData.quoter = val.username
  852. this.modalData.quoterName = val.user_display
  853. }
  854. }
  855. if (this.tagNo === 2008) {
  856. if (this.tagNo1 === 1) {
  857. this.searchData.requester = val.username
  858. this.searchData.requesterName = val.user_display
  859. }
  860. if (this.tagNo1 === 2) {
  861. this.modalData.requester = val.username
  862. this.modalData.requesterName = val.user_display
  863. }
  864. }
  865. },
  866. updateModal(row) {
  867. this.modalData = JSON.parse(JSON.stringify(row))
  868. this.modalData.strActAuthorizeDate = this.dayjs().format("YYYY-MM-DD HH:mm:ss")
  869. this.modalData.userName = this.$store.state.user.name
  870. this.reviewFlag = true
  871. },
  872. saveReview(row, val) {
  873. if (row.authHistRemark == '') {
  874. this.$alert(data.msg, '操作提示', {
  875. confirmButtonText: '确定',
  876. callback: action => {
  877. this.saveButton = false
  878. }
  879. });
  880. }
  881. this.modalData.id = row.authHistId
  882. this.modalData.actAuthorizator = row.userName
  883. this.modalData.remark = row.authHistRemark
  884. this.modalData.actAuthorizeDate = row.strActAuthorizeDate
  885. this.modalData.orderRef1 = row.quoteVersionNo
  886. if (val === "Y") {
  887. if (row.lastStepFlag === 'Y') {
  888. this.modalData.approveResult = "已审批"
  889. } else {
  890. this.modalData.approveResult = "已审批"
  891. }
  892. } else if (val === "N") {
  893. this.modalData.approveResult = "未通过"
  894. }
  895. updateAuthHist(this.modalData).then(({data}) => {
  896. if (data && data.code === 0) {
  897. this.getDataList()
  898. this.reviewFlag = false
  899. this.$message({
  900. message: '操作成功',
  901. type: 'success',
  902. duration: 1500,
  903. onClose: () => {}
  904. })
  905. } else {
  906. this.$alert(data.msg, '错误', {
  907. confirmButtonText: '确定'
  908. })
  909. }
  910. })
  911. },
  912. // ======== 导出相关方法 ========
  913. /**
  914. * 导出excel
  915. */
  916. async createExportData() {
  917. this.searchData.limit = -1
  918. this.searchData.page = 1
  919. await searchUserAuthQuoteApplicationInfo(this.searchData).then(({data}) => {
  920. this.resultList = data.page.list
  921. })
  922. return this.resultList
  923. },
  924. startDownload() {
  925. },
  926. finishDownload() {
  927. },
  928. fields() {
  929. let json = '{'
  930. this.columnList.forEach((item, index) => {
  931. if (index == this.columnList.length - 1) {
  932. json += '"' + item.columnLabel + '"' + ':' + '"' + item.columnProp + '"'
  933. } else {
  934. json += '"' + item.columnLabel + '"' + ':' + '"' + item.columnProp + '"' + ','
  935. }
  936. })
  937. json += '}'
  938. let s = eval('(' + json + ')')
  939. return s
  940. },
  941. // ======== 导入相关方法 ========
  942. handleImportQuotation() {
  943. let currentData = {
  944. createBy: this.$store.state.user.name,
  945. site: this.$store.state.user.site,
  946. }
  947. //打开组件 去做新增业务
  948. this.$nextTick(() => {
  949. this.$refs.quotationUpload.init(currentData)
  950. })
  951. },
  952. // openSaveDataDialog(){
  953. // if (this.modalData.title === '询价新增') {
  954. // let rfqNos = [];
  955. // this.dataList.forEach((item) => {
  956. // // 如果item.rfqNo为XJ开头
  957. // if (item.quoteVersionNo.startsWith('XJ')) {
  958. // // 解析数字部分
  959. // const numPart = parseInt(item.quoteVersionNo.replace('XJ', ''), 10);
  960. // if (!isNaN(numPart)) {
  961. // rfqNos.push(numPart);
  962. // }
  963. // }
  964. // });
  965. // if (rfqNos.length === 0) {
  966. // // 如果没有XJ开头的rfqNo
  967. // this.modalData.quoteVersionNo = 'XJ00000001';
  968. // } else {
  969. // // 取到最大的XJ开头的rfqNo
  970. // let maxRfqNo = Math.max(...rfqNos);
  971. //
  972. // // 生成新的rfqNo,确保有9位数,前面补零
  973. // maxRfqNo += 1; // 增加最大值
  974. // this.modalData.quoteVersionNo = 'XJ' + String(maxRfqNo).padStart(8, '0');
  975. // }
  976. // }
  977. // },
  978. // 保存弹框关闭事件
  979. closeSaveDataDialog() {
  980. this.modalData = {
  981. flag: '',
  982. title: '',
  983. site: '',
  984. bu: '',
  985. buNo: '',
  986. buDesc: '',
  987. id: '',
  988. quoteVersionNo: '',
  989. customerNo: '',
  990. customerDesc: '',
  991. requester:'',
  992. requesterName: '',
  993. quoter: '',
  994. quoterName: '',
  995. customerInquiryNo: '',
  996. status: '',
  997. priorityLevel: '',
  998. requestDate: '',
  999. requiredCompletionDate: '',
  1000. remark: '',
  1001. }
  1002. this.modalFlag = false
  1003. },
  1004. rowStyle({row}) {
  1005. if (this.quoteCurrentRow.id === row.id) {
  1006. return {'background-color': '#E8F7F6', cursor: 'pointer'};
  1007. }
  1008. },
  1009. },
  1010. }
  1011. </script>
  1012. <style scoped>
  1013. /deep/ .customer-tab .el-tabs__content {
  1014. padding: 0px !important;
  1015. height: 100%;
  1016. }
  1017. /deep/ .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner {
  1018. background-color: #17B3A3;
  1019. border-color: #17B3A3;
  1020. }
  1021. /deep/ .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after {
  1022. border-color: #FFF
  1023. }
  1024. /deep/ .el-form-item--medium .el-form-item__content{
  1025. height: auto;
  1026. }
  1027. .el-input-number /deep/ .el-input__inner {
  1028. text-align: right;
  1029. padding-right: 5px !important;
  1030. }
  1031. /deep/ .el-input .el-input--medium{
  1032. line-height: 20px;
  1033. }
  1034. /deep/ .el-input-number .el-input--medium{
  1035. line-height: 20px;
  1036. }
  1037. /*table中input 修改样式*/
  1038. /deep/ div.table-el-date {
  1039. padding: 0px 0px;
  1040. height: 25px !important;
  1041. }
  1042. /*table中input*/
  1043. div.table-el-date /deep/ input.el-input__inner{
  1044. padding: 0px 0px;
  1045. height: 23px !important;
  1046. text-align: right;
  1047. }
  1048. /* 特殊的样式*/
  1049. /deep/ .el-table div.cell:has(.table-el-date) {
  1050. /* 直接作用于 <td> 元素 */
  1051. padding: 0px;
  1052. height: 25px;
  1053. }
  1054. .el-transfer-panel {
  1055. border: 2px solid #17b3a3;
  1056. border-radius: 4px;
  1057. overflow: hidden;
  1058. background: #fff;
  1059. display: inline-block;
  1060. vertical-align: middle;
  1061. width: 200px;
  1062. max-height: 100%;
  1063. -webkit-box-sizing: border-box;
  1064. box-sizing: border-box;
  1065. position: relative;
  1066. }
  1067. .el-transfer-panel .el-transfer-panel__header {
  1068. height: 40px;
  1069. line-height: 40px;
  1070. background: #17b3a3;
  1071. margin: 0;
  1072. padding-left: 15px;
  1073. border-bottom: 1px solid #17b3a3;
  1074. -webkit-box-sizing: border-box;
  1075. box-sizing: border-box;
  1076. color: #000;
  1077. }
  1078. .el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label {
  1079. font-size: 14px;
  1080. color: #303133;
  1081. font-weight: 400;
  1082. }
  1083. </style>