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.

1411 lines
44 KiB

10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
7 months ago
10 months ago
10 months ago
10 months ago
7 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
7 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
7 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
  1. <template>
  2. <div>
  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.buNo" placeholder="请选择" clearable>
  8. <el-option v-for="i in userBuList" :key="i.buNo" :label="i.buDesc" :value="i.buNo">
  9. </el-option>
  10. </el-select>
  11. </el-form-item>
  12. </el-col>
  13. <el-col :span="3">
  14. <el-form-item label="项目编码">
  15. <el-input v-model="searchData.projectNo"></el-input>
  16. </el-form-item>
  17. </el-col>
  18. <el-col :span="3">
  19. <el-form-item label="项目名称">
  20. <el-input v-model="searchData.projectName"></el-input>
  21. </el-form-item>
  22. </el-col>
  23. <el-col :span="3">
  24. <el-form-item label="状态">
  25. <el-select v-model="searchData.sstatus" style="width: 100%">
  26. <el-option label="审核中" value="审核中"></el-option>
  27. <el-option label="已驳回" value="已驳回"></el-option>
  28. <el-option label="进行中" value="进行中"></el-option>
  29. <el-option label="结案" value="结案"></el-option>
  30. </el-select>
  31. </el-form-item>
  32. </el-col>
  33. <el-col :span="6">
  34. <el-form-item label="开始时间">
  35. <div style="display: flex">
  36. <el-date-picker style="width: 47%" v-model="searchData.startDate" type="date" value-format='yyyy-MM-dd'
  37. format='yyyy-MM-dd'></el-date-picker>
  38. <div style="width: 6%;text-align: center">-</div>
  39. <el-date-picker style="width: 47%" v-model="searchData.endDate" type="date" value-format='yyyy-MM-dd'
  40. format='yyyy-MM-dd'></el-date-picker>
  41. </div>
  42. </el-form-item>
  43. </el-col>
  44. <el-col :span="3">
  45. <el-form-item label=" ">
  46. <el-button @click="getDataListAll"> </el-button>
  47. </el-form-item>
  48. </el-col>
  49. </el-row>
  50. </el-form>
  51. <!-- 询价列表 -->
  52. <el-table @header-dragend="handleColumnResize" height="30vh" :data="dataList" border ref="mainTable"
  53. highlight-current-row @row-click="projectClickRow" @current-change="changeCurrentRow" v-loading="dataListLoading"
  54. style="width: 100%;margin-top: 5px">
  55. <el-table-column type="index" width="55" align="center" label="序号"></el-table-column>
  56. <el-table-column v-for="(item,index) in columnList" :key="index" :sortable="item.columnSortable"
  57. :prop="item.columnProp" :header-align="item.headerAlign" :align="item.align"
  58. :fixed="item.fixed === ''?false:item.fixed" :min-width="item.columnWidth" :label="item.columnLabel">
  59. <template slot-scope="scope">
  60. <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
  61. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]"
  62. style="width: 100px; height: 80px" /></span>
  63. </template>
  64. </el-table-column>
  65. <el-table-column fixed="right" header-align="center" align="center" width="180" label="操作">
  66. <template slot-scope="scope">
  67. <el-link style="cursor: pointer" v-if="scope.row.sstatus == '审核中'"
  68. @click="updateModal(scope.row)">审批</el-link>
  69. <!-- <el-link style="cursor: pointer" @click="updateModal(scope.row)">驳回</el-link> -->
  70. </template>
  71. </el-table-column>
  72. </el-table>
  73. <!-- 分页插件 -->
  74. <el-pagination style="margin-top: 0px" @size-change="sizeChangeHandle" @current-change="currentChangeHandle"
  75. :current-page="pageIndex" :page-sizes="[20, 50, 100, 200, 500]" :page-size="pageSize" :total="totalPage"
  76. layout="total, sizes, prev, pager, next, jumper">
  77. </el-pagination>
  78. <el-tabs style="margin-top: 0px; width: 100%; height: 100%;" v-model="activeTable" class="customer-tab"
  79. type="border-card" @tab-click="tabClick">
  80. <el-tab-pane label="项目预算" name="projectIncome">
  81. <!-- <el-form :inline="true" label-width="120px" label-position="top">
  82. <el-form-item label="Application">
  83. <el-input v-model="quoteCurrentRow.application" style="width: 210px" readonly></el-input>
  84. </el-form-item>
  85. <el-form-item label="Customer">
  86. <el-input v-model="quoteCurrentRow.customerDesc" readonly></el-input>
  87. </el-form-item>
  88. <el-form-item label="年需求量">
  89. <el-input v-model="quoteCurrentRow.annualDemand" class="right-aligned-input" readonly></el-input>
  90. </el-form-item>
  91. <el-form-item label="Cost Model">
  92. <el-input v-model="quoteCurrentRow.costModel" style="width: 210px" readonly></el-input>
  93. </el-form-item>
  94. <el-form-item label="Markup">
  95. <el-input v-model="quoteCurrentRow.markup" class="right-aligned-input" readonly></el-input>
  96. </el-form-item>
  97. </el-form>
  98. <el-form :inline="true" label-width="120px" label-position="top">
  99. <el-form-item label="备注">
  100. <el-input type="textarea" :rows="2" v-model="quoteCurrentRow.remark" style="width: 1019px"
  101. readonly></el-input>
  102. </el-form-item>
  103. </el-form> -->
  104. <MachineProjectIncome :projectIncome="projectIncome" :project="model" @IncomeFinished="getIncomeList"
  105. :auth-flag="true" :height="'33vh'"></MachineProjectIncome>
  106. </el-tab-pane>
  107. <el-tab-pane label="项目计划" name="projectPlan">
  108. <div style="height: 100%;overflow: auto;">
  109. <MachineProjectPlan :projectPlan="projectPlan" :project="model" @planFinished="getPlanList" :auth-flag="true"
  110. :height="'33vh'"></MachineProjectPlan>
  111. </div>
  112. </el-tab-pane>
  113. <el-tab-pane label="项目任务" name="projectTask">
  114. <div style="height: 100%;overflow: auto;">
  115. <MachineProjectTask :projectTask="projectTask" :project="model" @taskFinished="getTaskList" :auth-flag="true"
  116. :height="'33vh'"></MachineProjectTask>
  117. </div>
  118. </el-tab-pane>
  119. <el-tab-pane label="结案确认" name="projectClose">
  120. <div style="height: 100%;overflow: auto;">
  121. <MachineProjectCloseTable :projectClose="projectClose" :project="model" @taskFinished="getCloseList"
  122. :auth-flag="true" :height="'33vh'"></MachineProjectCloseTable>
  123. </div>
  124. </el-tab-pane>
  125. <el-tab-pane label="审核记录" name="projectAuth">
  126. <div style="height: 100%;overflow: auto;">
  127. <MachineProjectAuthTable :projectAuth="projectAuth" :project="model" @taskFinished="getAuthList"
  128. :auth-flag="true" :height="'33vh'"></MachineProjectAuthTable>
  129. </div>
  130. </el-tab-pane>
  131. <el-tab-pane label="相关文档" name="inquiryDocument">
  132. <div style="height: 100%;overflow: auto;">
  133. <oss-components ref="inquiryDocument" label="申请单号" style="margin-top: 5px" height="44vh" :columns="ossColumns"
  134. :disabled="false" :orderRef1="model.site" :orderRef2="model.objectId" :rfqNo="model.projectNo"
  135. :orderRef4="model.buNo" :orderRef5="model.id">
  136. </oss-components>
  137. </div>
  138. </el-tab-pane>
  139. </el-tabs>
  140. <el-dialog title="申请单审核" :visible.sync="reviewFlag" width="500px" :close-on-click-modal="false" v-drag top="10%">
  141. <el-form :inline="true" label-position="top" label-width="100px">
  142. <el-row :gutter="20">
  143. <el-col :span="12">
  144. <el-form-item label="申请单号">
  145. <el-input style="width:140%" disabled placeholder="" :value="modalData.projectNo"></el-input>
  146. </el-form-item>
  147. </el-col>
  148. <el-col :span="12">
  149. <el-form-item label="审批步骤号">
  150. <el-input style="width:140%" disabled placeholder="" :value="modalData.stepId"></el-input>
  151. </el-form-item>
  152. </el-col>
  153. </el-row>
  154. <el-row :gutter="20">
  155. <el-col :span="12">
  156. <el-form-item label="审批人">
  157. <el-input style="width:140%" disabled placeholder="" :value="modalData.userName"></el-input>
  158. </el-form-item>
  159. </el-col>
  160. <el-col :span="12">
  161. <el-form-item label="审批时间">
  162. <el-input style="width:140%" disabled placeholder="" :value="modalData.strActAuthorizeDate"></el-input>
  163. </el-form-item>
  164. </el-col>
  165. </el-row>
  166. <el-row :gutter="20">
  167. <el-col :span="24">
  168. <el-form-item label="备注" style="display: block;min-height: 90px">
  169. <el-input type="textarea" style="width:103%" :disabled="(modalData.canAuthFlag!=='Y') " :rows="3"
  170. v-model="modalData.authHistRemark"></el-input>
  171. </el-form-item>
  172. </el-col>
  173. </el-row>
  174. </el-form>
  175. <div slot="footer" class="dialog-footer">
  176. <el-button type="primary" v-if="( modalData.canAuthFlag === 'Y') " :loading="loading"
  177. @click="saveReview(modalData,'Y')">{{'同意'}}
  178. </el-button>
  179. <el-button type="primary" v-if="( modalData.canAuthFlag === 'Y') " :loading="loading"
  180. @click="saveReview(modalData ,'N')">{{'不同意'}}
  181. </el-button>
  182. </div>
  183. </el-dialog>
  184. <!-- chooseList模态框 -->
  185. <Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
  186. </div>
  187. </template>
  188. <script>
  189. import Chooselist from '@/views/modules/common/Chooselist_eam'
  190. import { getSiteAndBuByUserName } from '../../../api/qc/qc'
  191. import DictDataSelect from '../sys/dict-data-select.vue'
  192. import OssComponents from '../oss/ossProjectComponents.vue'
  193. import quotationUpload from '../quote/quotation_upload.vue'
  194. import TpCost from '../quote/detail/tpCost.vue'
  195. import QuoteDetail from '../quote/detail/quoteDetail.vue'
  196. import {
  197. getTableDefaultListLanguage,
  198. getTableUserListLanguage,
  199. updateColumnSize,
  200. } from '../../../api/table'
  201. import {
  202. searchUserAuthMachineProjectApplicationInfo,
  203. updateProjectAuthHist,
  204. queryMachineProjectAuthList,
  205. } from '../../../api/machine/machineProject'
  206. import {
  207. queryMachineProjectIncomeList,
  208. queryMachineProjectPlanList,
  209. queryMachineProjectTaskList,
  210. queryMachineProjectCloseList,
  211. } from '../../../api/machine/machineProjectIncome'
  212. import MachineProjectIncome from '../machine/modules/machineProjectIncomeTable.vue'
  213. import MachineProjectPlan from '../machine/modules/machineProjectPlanTable.vue'
  214. import MachineProjectTask from '../machine/modules/machineProjectTaskTable.vue'
  215. import MachineProjectCloseTable from '../machine/modules/machineProjectCloseTable.vue'
  216. import MachineProjectAuthTable from '../machine/modules/machineProjectAuthTable.vue'
  217. export default {
  218. beforeRouteEnter(to, from, next) {
  219. next((vm) => {
  220. // 跳转后清除 redirectPath
  221. localStorage.removeItem('redirectPath')
  222. console.log('redirectPath 已清除')
  223. })
  224. },
  225. name: 'authMachineProject',
  226. computed: {},
  227. components: {
  228. QuoteDetail,
  229. TpCost,
  230. quotationUpload,
  231. DictDataSelect,
  232. Chooselist,
  233. MachineProjectIncome,
  234. MachineProjectPlan,
  235. MachineProjectTask,
  236. MachineProjectCloseTable,
  237. MachineProjectAuthTable,
  238. OssComponents,
  239. },
  240. props: {},
  241. data() {
  242. return {
  243. userBuList: [],
  244. projectIncome: [],
  245. projectPlan: [],
  246. projectTask: [],
  247. projectClose: [],
  248. projectAuth: [],
  249. model: {},
  250. loading: false,
  251. attributeDialog: true,
  252. priceCheckRule: {
  253. associatedPartNo: [{ required: true, message: ' ', trigger: 'change' }],
  254. materialRequired: [{ required: true, message: ' ', trigger: 'change' }],
  255. yearlyOrMonthlyRequirement: [
  256. { required: true, message: ' ', trigger: 'change' },
  257. ],
  258. runningWidth: [{ required: true, message: ' ', trigger: 'change' }],
  259. },
  260. savePriceDetail: {
  261. site: '',
  262. quotationNo: '',
  263. associatedPartNo: '',
  264. materialRequired: '',
  265. yearlyOrMonthlyRequirement: '',
  266. runningWidth: '',
  267. },
  268. priceCheckPropertiesList: [],
  269. // 导出
  270. exportData: [],
  271. exportName: '询价申请' + this.dayjs().format('YYYYMMDDHHmmss'),
  272. exportHeader: ['询价申请'],
  273. exportFooter: [],
  274. resultList: [],
  275. uploadUrl: '/plm/quotationInformation/uploadExcel',
  276. // ======== 行高 ========
  277. secondHeight: 200,
  278. // ======== 分页 ========
  279. pageIndex: 1,
  280. pageSize: 50,
  281. totalPage: 0,
  282. selectedDataNum: 0,
  283. ossColumns: [
  284. {
  285. userId: this.$store.state.user.name,
  286. functionId: 101506001001,
  287. serialNumber: '101506001001Table2FileName',
  288. tableId: '101506001001Table2',
  289. tableName: '文件信息表',
  290. columnProp: 'fileName',
  291. headerAlign: 'center',
  292. align: 'center',
  293. columnLabel: '文件名称',
  294. columnHidden: false,
  295. columnImage: false,
  296. columnSortable: false,
  297. sortLv: 0,
  298. status: true,
  299. fixed: '',
  300. columnWidth: 140,
  301. },
  302. {
  303. userId: this.$store.state.user.name,
  304. functionId: 101506001001,
  305. serialNumber: '101506001001Table2FileRemark',
  306. tableId: '101506001001Table2',
  307. tableName: '文件信息表',
  308. columnProp: 'cadditionalInfo',
  309. headerAlign: 'center',
  310. align: 'center',
  311. columnLabel: '备注',
  312. columnHidden: false,
  313. columnImage: false,
  314. columnSortable: false,
  315. sortLv: 0,
  316. status: true,
  317. fixed: '',
  318. columnWidth: 240,
  319. },
  320. {
  321. userId: this.$store.state.user.name,
  322. functionId: 101506001001,
  323. serialNumber: '101506001001Table2CreateDate',
  324. tableId: '101506001001Table2',
  325. tableName: '文件信息表',
  326. columnProp: 'createDate',
  327. headerAlign: 'center',
  328. align: 'center',
  329. columnLabel: '上传时间',
  330. columnHidden: false,
  331. columnImage: false,
  332. columnSortable: false,
  333. sortLv: 0,
  334. status: true,
  335. fixed: '',
  336. columnWidth: 140,
  337. },
  338. {
  339. userId: this.$store.state.user.name,
  340. functionId: 101506001001,
  341. serialNumber: '101506001001Table2CreatedBy',
  342. tableId: '101506001001Table2',
  343. tableName: '文件信息表',
  344. columnProp: 'createdBy',
  345. headerAlign: 'center',
  346. align: 'center',
  347. columnLabel: '上传人',
  348. columnHidden: false,
  349. columnImage: false,
  350. columnSortable: false,
  351. sortLv: 0,
  352. status: true,
  353. fixed: '',
  354. columnWidth: 140,
  355. },
  356. ],
  357. // 条件查询
  358. searchData: {
  359. userId: this.$store.state.user.id,
  360. site: this.$store.state.user.site,
  361. id: '',
  362. customerNo: '',
  363. customerDesc: '',
  364. projectNo: '',
  365. buNo: '',
  366. requestStartDate: '',
  367. requestEndDate: '',
  368. requiredCompletionStartDate: '',
  369. requiredCompletionEndDate: '',
  370. status: '',
  371. sstatus: '审核中',
  372. quoterName: '',
  373. requesterName: '',
  374. priorityLevel: '',
  375. orderRef1: 'PJ',
  376. page: 1,
  377. limit: 10,
  378. menuId: this.$route.meta.menuId,
  379. },
  380. searchData1: {
  381. userId: this.$store.state.user.id,
  382. site: this.$store.state.user.site,
  383. id: '',
  384. customerNo: '',
  385. customerDesc: '',
  386. projectNo: '',
  387. bu: '',
  388. requestStartDate: '',
  389. requestEndDate: '',
  390. requiredCompletionStartDate: '',
  391. requiredCompletionEndDate: '',
  392. status: '',
  393. quoterName: '',
  394. requesterName: '',
  395. priorityLevel: '',
  396. orderRef1: 'PJ',
  397. page: 1,
  398. limit: 10,
  399. menuId: this.$route.meta.menuId,
  400. },
  401. // 其它
  402. dataListLoading: false,
  403. // 选择项目弹框开关
  404. chooseProjectListFlag: false,
  405. reviewFlag: false,
  406. // 初始页签
  407. activeTable: 'projectIncome',
  408. // ======== 数据对象 ========
  409. modalData: {
  410. flag: '',
  411. title: '',
  412. site: this.$store.state.user.site,
  413. userName: this.$store.state.user.name,
  414. id: '',
  415. projectNo: '',
  416. customerNo: '',
  417. customerDesc: '',
  418. requestDate: '',
  419. requester: '',
  420. requesterName: '',
  421. customerInquiryNo: '',
  422. priorityLevel: '',
  423. requiredCompletionDate: '',
  424. quoter: '',
  425. quoterName: '',
  426. status: '',
  427. remark: '',
  428. createDate: '',
  429. createBy: '',
  430. updateDate: '',
  431. updateBy: '',
  432. authHistId: '',
  433. approveResult: '',
  434. authHistRemark: '',
  435. canAuthFlag: '',
  436. actAuthorizator: '',
  437. strActAuthorizeDate: this.dayjs().format('YYYY-MM-DD HH:mm:ss'),
  438. actAuthorizeDate: '',
  439. },
  440. inquiryPartItemModalData: {
  441. bu: '',
  442. buDesc: '',
  443. projectNo: '',
  444. partNo: '',
  445. partDesc: '',
  446. umId: '',
  447. umName: '',
  448. codeNo: '',
  449. codeDesc: '',
  450. textValue: '',
  451. numValue: '',
  452. valueType: '',
  453. valueTypeDb: '',
  454. valueChooseFlag: '',
  455. availableValueList: [],
  456. },
  457. // ======== 数据列表 ========
  458. dataList: [],
  459. inquiryAuthDataList: [],
  460. // ======== 列表表头 ========
  461. columnList: [
  462. {
  463. userId: this.$store.state.user.name,
  464. functionId: 190006,
  465. serialNumber: '190006Table1BuDesc',
  466. tableId: '190006Table1',
  467. tableName: '报价审批表',
  468. columnProp: 'buDesc',
  469. headerAlign: 'center',
  470. align: 'center',
  471. columnLabel: 'BU',
  472. columnHidden: false,
  473. columnImage: false,
  474. columnSortable: false,
  475. sortLv: 0,
  476. status: true,
  477. fixed: '',
  478. columnWidth: 100,
  479. },
  480. {
  481. userId: this.$store.state.user.name,
  482. functionId: 190006,
  483. serialNumber: '190006Table1QuoteVersionNo',
  484. tableId: '190006Table1',
  485. tableName: '报价审批表',
  486. columnProp: 'projectNo',
  487. headerAlign: 'center',
  488. align: 'center',
  489. columnLabel: '项目编码',
  490. columnHidden: false,
  491. columnImage: false,
  492. columnSortable: false,
  493. sortLv: 0,
  494. status: true,
  495. fixed: '',
  496. columnWidth: 120,
  497. },
  498. {
  499. userId: this.$store.state.user.name,
  500. functionId: 190006,
  501. serialNumber: '190006Table1QuoteDate',
  502. tableId: '190006Table1',
  503. tableName: '报价审批表',
  504. columnProp: 'projectName',
  505. headerAlign: 'center',
  506. align: 'left',
  507. columnLabel: '项目名称',
  508. columnHidden: false,
  509. columnImage: false,
  510. columnSortable: false,
  511. sortLv: 0,
  512. status: true,
  513. fixed: '',
  514. columnWidth: 160,
  515. },
  516. {
  517. userId: this.$store.state.user.name,
  518. functionId: 190006,
  519. serialNumber: '190006Table1CustomerNo',
  520. tableId: '190006Table1',
  521. tableName: '报价审批表',
  522. columnProp: 'projectIncome',
  523. headerAlign: 'center',
  524. align: 'left',
  525. columnLabel: '项目收益',
  526. columnHidden: false,
  527. columnImage: false,
  528. columnSortable: false,
  529. sortLv: 0,
  530. status: true,
  531. fixed: '',
  532. columnWidth: 200,
  533. },
  534. {
  535. userId: this.$store.state.user.name,
  536. functionId: 190006,
  537. serialNumber: '190006Table1CustomerDesc',
  538. tableId: '190006Table1',
  539. tableName: '报价审批表',
  540. columnProp: 'projectBudget',
  541. headerAlign: 'center',
  542. align: 'right',
  543. columnLabel: '项目总预算',
  544. columnHidden: false,
  545. columnImage: false,
  546. columnSortable: false,
  547. sortLv: 0,
  548. status: true,
  549. fixed: '',
  550. columnWidth: 120,
  551. },
  552. {
  553. userId: this.$store.state.user.name,
  554. functionId: 190006,
  555. serialNumber: '190006Table1QuoterName',
  556. tableId: '190006Table1',
  557. tableName: '报价审批表',
  558. columnProp: 'projectActualExpenses',
  559. headerAlign: 'center',
  560. align: 'right',
  561. columnLabel: '项目总实际开销',
  562. columnHidden: false,
  563. columnImage: false,
  564. columnSortable: false,
  565. sortLv: 0,
  566. status: true,
  567. fixed: '',
  568. columnWidth: 120,
  569. },
  570. {
  571. userId: this.$store.state.user.name,
  572. functionId: 190006,
  573. serialNumber: '190006Table1PurchaseName',
  574. tableId: '190006Table1',
  575. tableName: '报价审批表',
  576. columnProp: 'responsiblePerson',
  577. headerAlign: 'center',
  578. align: 'center',
  579. columnLabel: '项目负责人',
  580. columnHidden: false,
  581. columnImage: false,
  582. columnSortable: false,
  583. sortLv: 0,
  584. status: true,
  585. fixed: '',
  586. columnWidth: 120,
  587. },
  588. {
  589. userId: this.$store.state.user.name,
  590. functionId: 190006,
  591. serialNumber: '190006Table1Currency',
  592. tableId: '190006Table1',
  593. tableName: '报价审批表',
  594. columnProp: 'startDate',
  595. headerAlign: 'center',
  596. align: 'center',
  597. columnLabel: '开始时间',
  598. columnHidden: false,
  599. columnImage: false,
  600. columnSortable: false,
  601. sortLv: 0,
  602. status: true,
  603. fixed: '',
  604. columnWidth: 120,
  605. },
  606. {
  607. userId: this.$store.state.user.name,
  608. functionId: 190006,
  609. serialNumber: '190006Table1Currency',
  610. tableId: '190006Table1',
  611. tableName: '报价审批表',
  612. columnProp: 'endDate',
  613. headerAlign: 'center',
  614. align: 'center',
  615. columnLabel: '结案时间',
  616. columnHidden: false,
  617. columnImage: false,
  618. columnSortable: false,
  619. sortLv: 0,
  620. status: true,
  621. fixed: '',
  622. columnWidth: 120,
  623. },
  624. {
  625. userId: this.$store.state.user.name,
  626. functionId: 190006,
  627. serialNumber: '190006Table1Status',
  628. tableId: '190006Table1',
  629. tableName: '报价审批表',
  630. columnProp: 'sstatus',
  631. headerAlign: 'center',
  632. align: 'center',
  633. columnLabel: '状态',
  634. columnHidden: false,
  635. columnImage: false,
  636. columnSortable: false,
  637. sortLv: 0,
  638. status: true,
  639. fixed: '',
  640. columnWidth: 120,
  641. },
  642. {
  643. userId: this.$store.state.user.name,
  644. functionId: 190006,
  645. serialNumber: '190006Table1Status',
  646. tableId: '190006Table1',
  647. tableName: '报价审批表',
  648. columnProp: 'stepId',
  649. headerAlign: 'center',
  650. align: 'center',
  651. columnLabel: '审批步骤号',
  652. columnHidden: false,
  653. columnImage: false,
  654. columnSortable: false,
  655. sortLv: 0,
  656. status: true,
  657. fixed: '',
  658. columnWidth: 120,
  659. },
  660. ],
  661. // ======== 必填规则 ========
  662. rules: {
  663. bu: [
  664. { required: true, message: ' ', trigger: 'change' },
  665. { required: true, message: ' ', trigger: 'blur' },
  666. ],
  667. projectNo: [
  668. { required: true, message: ' ', trigger: 'change' },
  669. { required: true, message: ' ', trigger: 'blur' },
  670. ],
  671. customerNo: [
  672. { required: true, message: ' ', trigger: 'change' },
  673. { required: true, message: ' ', trigger: 'blur' },
  674. ],
  675. customerDesc: [
  676. { required: true, message: ' ', trigger: 'change' },
  677. { required: true, message: ' ', trigger: 'blur' },
  678. ],
  679. requester: [
  680. { required: true, message: ' ', trigger: 'change' },
  681. { required: true, message: ' ', trigger: 'blur' },
  682. ],
  683. requesterName: [
  684. { required: true, message: ' ', trigger: 'change' },
  685. { required: true, message: ' ', trigger: 'blur' },
  686. ],
  687. quoter: [
  688. { required: true, message: ' ', trigger: 'change' },
  689. { required: true, message: ' ', trigger: 'blur' },
  690. ],
  691. quoterName: [
  692. { required: true, message: ' ', trigger: 'change' },
  693. { required: true, message: ' ', trigger: 'blur' },
  694. ],
  695. priorityLevel: [{ required: true, message: ' ', trigger: 'change' }],
  696. requiredCompletionDate: [
  697. { required: true, message: ' ', trigger: 'change' },
  698. { required: true, message: ' ', trigger: 'blur' },
  699. ],
  700. requestDate: [
  701. { required: true, message: ' ', trigger: 'change' },
  702. { required: true, message: ' ', trigger: 'blur' },
  703. ],
  704. },
  705. inquiryPartRules: {
  706. bu: [
  707. { required: true, message: ' ', trigger: 'change' },
  708. { required: true, message: ' ', trigger: 'blur' },
  709. ],
  710. partNo: [
  711. { required: true, message: ' ', trigger: 'change' },
  712. { required: true, message: ' ', trigger: 'blur' },
  713. ],
  714. partDesc: [
  715. { required: true, message: ' ', trigger: 'change' },
  716. { required: true, message: ' ', trigger: 'blur' },
  717. ],
  718. inquiryQty: [
  719. { required: true, message: ' ', trigger: 'change' },
  720. { required: true, message: ' ', trigger: 'blur' },
  721. ],
  722. umId: [
  723. { required: true, message: ' ', trigger: 'change' },
  724. { required: true, message: ' ', trigger: 'blur' },
  725. ],
  726. codeNo: [
  727. { required: true, message: ' ', trigger: 'change' },
  728. { required: true, message: ' ', trigger: 'blur' },
  729. ],
  730. },
  731. // ======== 选中的当前行数据 ========
  732. projectCurrentRow: {},
  733. // ======== 模态框开关控制 ========
  734. modalFlag: false,
  735. modalDisableFlag: false,
  736. inquiryPartModalFlag: false,
  737. inquiryPartModalDisableFlag: false,
  738. inquiryPartItemModalFlag: false,
  739. }
  740. },
  741. mounted() {
  742. this.$nextTick(() => {
  743. /*第二个表格高度的动态调整*/
  744. this.height = window.innerHeight - 210
  745. })
  746. },
  747. created() {
  748. this.getSiteAndBuByUserName()
  749. // 获取 URL 查询参数
  750. const { projectNo } = this.$route.query
  751. // 将查询参数赋值给 searchData
  752. if (projectNo) {
  753. this.searchData1.projectNo = this.$route.query.projectNo
  754. }
  755. // 动态列
  756. this.getTableUserColumn(this.$route.meta.menuId + 'table1', 1)
  757. this.getDataList()
  758. },
  759. methods: {
  760. handleColumnResize(newWidth, oldWidth, column, event) {
  761. let inData = this.columnList.filter(
  762. (item) => item.columnProp === column.property
  763. )[0]
  764. inData.columnWidth = newWidth
  765. updateColumnSize(inData).then(({ data }) => {
  766. if (data.code === 0) {
  767. console.log('栏位宽度保存成功!')
  768. }
  769. })
  770. },
  771. // 获取用户的bu
  772. getSiteAndBuByUserName() {
  773. let tempData = {
  774. username: this.$store.state.user.name,
  775. }
  776. getSiteAndBuByUserName(tempData).then(({ data }) => {
  777. if (data.code === 0) {
  778. this.userBuList = data.rows
  779. }
  780. })
  781. },
  782. // ======== 分页相关方法 ========
  783. /**
  784. * 每页数
  785. * @param val
  786. */
  787. sizeChangeHandle(val) {
  788. this.pageSize = val
  789. this.pageIndex = 1
  790. this.getDataList()
  791. },
  792. /**
  793. * 当前页
  794. * @param val
  795. */
  796. currentChangeHandle(val) {
  797. this.pageIndex = val
  798. this.getDataList()
  799. },
  800. // ======== 页签切换相关方法 ========
  801. /**
  802. * 列表表格选择替换
  803. * @param tab
  804. * @param event
  805. */
  806. tabClick(tab, event) {
  807. // 刷新列表数据
  808. this.refreshCurrentTabTable()
  809. },
  810. // ======== 列表操作方法 ========
  811. /**
  812. * 单机选中询价信息
  813. * @param row
  814. */
  815. projectClickRow(row) {
  816. this.projectCurrentRow = JSON.parse(JSON.stringify(row))
  817. this.model = JSON.parse(JSON.stringify(row))
  818. //刷新当前页表
  819. this.refreshCurrentTabTable()
  820. },
  821. /**
  822. * 当前值发生变化的时候修改
  823. * @param row
  824. * @param oldRow
  825. */
  826. changeCurrentRow(row, oldRow) {
  827. // 判断是否是获取焦点的事件
  828. if (row) {
  829. this.projectCurrentRow = JSON.parse(JSON.stringify(row))
  830. }
  831. },
  832. /**
  833. * 刷新页签的table数据
  834. */
  835. refreshCurrentTabTable() {
  836. this.getTabs()
  837. },
  838. // ======== 列表数据刷新方法 ========
  839. /**
  840. * 获取数据列表
  841. */
  842. getDataListAll() {
  843. this.searchData1 = null
  844. this.getDataList()
  845. },
  846. getDataList() {
  847. //console.log(this.searchData1)
  848. this.searchData.pageSize = this.pageSize
  849. this.searchData.pageNo = this.pageIndex
  850. let inData = this.searchData
  851. searchUserAuthMachineProjectApplicationInfo(inData).then(({ data }) => {
  852. if (data.code === 0) {
  853. this.dataList = data.page.records
  854. this.pageIndex = data.page.current
  855. this.pageSize = data.page.size
  856. this.totalPage = data.page.total
  857. this.dataList.forEach((item) => {
  858. if (item.groupDesc === '' || item.groupDesc === null) {
  859. item.auth = item.userDisplay
  860. } else {
  861. item.auth = item.groupDesc
  862. }
  863. })
  864. //判断是否全部存在数据
  865. if (this.totalPage > 0) {
  866. //设置选中行
  867. this.$refs.mainTable.setCurrentRow(this.dataList[0])
  868. this.projectClickRow(this.dataList[0])
  869. this.refreshCurrentTabTable() //加载当前的页签的table
  870. }
  871. }
  872. this.dataListLoading = false
  873. })
  874. },
  875. getTabs() {
  876. switch (this.activeTable) {
  877. case 'projectIncome':
  878. this.getIncomeList()
  879. break
  880. case 'projectPlan':
  881. this.getPlanList()
  882. break
  883. case 'projectTask':
  884. this.getTaskList()
  885. break
  886. case 'projectClose':
  887. this.getCloseList()
  888. break
  889. case 'projectAuth':
  890. this.getAuthList()
  891. break
  892. case 'inquiryDocument':
  893. this.$refs.inquiryDocument.handleQuery()
  894. break
  895. default:
  896. this.getIncomeList()
  897. break
  898. }
  899. },
  900. getIncomeList() {
  901. console.log('this.model.projectNo', this.model.projectNo)
  902. if (this.model.projectNo) {
  903. let obj = {
  904. projectNo: this.model.projectNo,
  905. }
  906. queryMachineProjectIncomeList(obj)
  907. .then(({ data }) => {
  908. if (data && data.code === 0) {
  909. this.projectIncome = data.list
  910. //判断是否全部存在数据
  911. //if (this.totalPage > 0) {
  912. // this.$refs.mainTable.setCurrentRow(this.dataList[0])
  913. // this.refreshCurrentTabTable()
  914. // this.inquiryClickRow(this.dataList[0])
  915. //}
  916. } else {
  917. this.$message.warning(data.msg)
  918. }
  919. this.queryLoading = false
  920. })
  921. .catch((error) => {
  922. this.$message.error(error)
  923. this.queryLoading = false
  924. })
  925. }
  926. },
  927. incomeFinished() {
  928. this.getIncomeList()
  929. },
  930. getPlanList() {
  931. let obj = {
  932. projectNo: this.model.projectNo,
  933. }
  934. queryMachineProjectPlanList(obj)
  935. .then(({ data }) => {
  936. if (data && data.code === 0) {
  937. this.projectPlan = data.list
  938. } else {
  939. this.$message.warning(data.msg)
  940. }
  941. this.queryLoading = false
  942. })
  943. .catch((error) => {
  944. this.$message.error(error)
  945. this.queryLoading = false
  946. })
  947. },
  948. getTaskList() {
  949. let obj = {
  950. projectNo: this.model.projectNo,
  951. }
  952. queryMachineProjectTaskList(obj)
  953. .then(({ data }) => {
  954. if (data && data.code === 0) {
  955. this.projectTask = data.list
  956. } else {
  957. this.$message.warning(data.msg)
  958. }
  959. this.queryLoading = false
  960. })
  961. .catch((error) => {
  962. this.$message.error(error)
  963. this.queryLoading = false
  964. })
  965. },
  966. getCloseList() {
  967. let obj = {
  968. projectNo: this.model.projectNo,
  969. }
  970. queryMachineProjectCloseList(obj)
  971. .then(({ data }) => {
  972. if (data && data.code === 0) {
  973. this.projectClose = data.list
  974. } else {
  975. this.$message.warning(data.msg)
  976. }
  977. this.queryLoading = false
  978. })
  979. .catch((error) => {
  980. this.$message.error(error)
  981. this.queryLoading = false
  982. })
  983. },
  984. getAuthList() {
  985. let obj = {
  986. site: this.$store.state.user.site,
  987. projectNo: this.model.projectNo,
  988. }
  989. queryMachineProjectAuthList(obj)
  990. .then(({ data }) => {
  991. if (data && data.code === 0) {
  992. this.projectAuth = data.list
  993. } else {
  994. this.$message.warning(data.msg)
  995. }
  996. this.queryLoading = false
  997. })
  998. .catch((error) => {
  999. this.$message.error(error)
  1000. this.queryLoading = false
  1001. })
  1002. },
  1003. // /**
  1004. // * 获得这些询价号的全部附件
  1005. // */
  1006. // getFileContentList () {
  1007. // let currentData = {
  1008. // orderRef1: this.$store.state.user.site,
  1009. // orderRef2: this.enterResultData.quotationNo
  1010. // }
  1011. // getFileContentList(currentData).then(({data}) => {
  1012. // if (data && data.code === 0) {
  1013. // this.enterResultData.fileContentList = data.rows
  1014. // } else {
  1015. // this.enterResultData.fileContentList = []
  1016. // }
  1017. // })
  1018. // },
  1019. // ======== chooseList相关方法 ========
  1020. /**
  1021. * 获取基础数据列表S
  1022. * @param val
  1023. * @param type
  1024. */
  1025. getBaseList(val, type) {
  1026. this.tagNo = val
  1027. this.tagNo1 = type
  1028. this.$nextTick(() => {
  1029. let strVal = ''
  1030. let conSql = ''
  1031. if (val === 509) {
  1032. if (type === 1) {
  1033. strVal = this.modalData.customerNo ? this.modalData.customerNo : ''
  1034. }
  1035. if (type === 2) {
  1036. strVal = this.searchData.customerNo
  1037. ? this.searchData.customerNo
  1038. : ''
  1039. }
  1040. }
  1041. if (val === 2002) {
  1042. if (type === 1) {
  1043. strVal = this.searchData.quoterName
  1044. ? this.searchData.quoterName
  1045. : ''
  1046. conSql = " and b.site = '" + this.$store.state.user.site + "'"
  1047. }
  1048. if (type === 2) {
  1049. strVal = this.modalData.quoterName ? this.modalData.quoterName : ''
  1050. conSql = " and b.site = '" + this.$store.state.user.site + "'"
  1051. }
  1052. }
  1053. if (val === 2008) {
  1054. if (type === 1) {
  1055. strVal = this.searchData.requesterName
  1056. ? this.searchData.requesterName
  1057. : ''
  1058. conSql = " and b.site = '" + this.$store.state.user.site + "'"
  1059. }
  1060. if (type === 2) {
  1061. strVal = this.modalData.requesterName
  1062. ? this.modalData.requesterName
  1063. : ''
  1064. conSql = " and b.site = '" + this.$store.state.user.site + "'"
  1065. }
  1066. }
  1067. this.$refs.baseList.init(val, strVal, conSql)
  1068. })
  1069. },
  1070. /**
  1071. * 列表方法的回调
  1072. * @param val
  1073. */
  1074. getBaseData(val) {
  1075. if (this.tagNo === 509) {
  1076. if (this.tagNo1 === 1) {
  1077. if (val.customer_no === this.modalData.customerNo) {
  1078. return
  1079. }
  1080. this.modalData.customerNo = val.customer_no
  1081. this.modalData.customerDesc = val.customer_desc
  1082. }
  1083. if (this.tagNo1 === 2) {
  1084. if (val.customer_no === this.searchData.customerNo) {
  1085. return
  1086. }
  1087. this.searchData.customerNo = val.customer_no
  1088. }
  1089. }
  1090. if (this.tagNo === 2002) {
  1091. if (this.tagNo1 === 1) {
  1092. this.searchData.quoter = val.username
  1093. this.searchData.quoterName = val.user_display
  1094. }
  1095. if (this.tagNo1 === 2) {
  1096. this.modalData.quoter = val.username
  1097. this.modalData.quoterName = val.user_display
  1098. }
  1099. }
  1100. if (this.tagNo === 2008) {
  1101. if (this.tagNo1 === 1) {
  1102. this.searchData.requester = val.username
  1103. this.searchData.requesterName = val.user_display
  1104. }
  1105. if (this.tagNo1 === 2) {
  1106. this.modalData.requester = val.username
  1107. this.modalData.requesterName = val.user_display
  1108. }
  1109. }
  1110. },
  1111. updateModal(row) {
  1112. this.modalData = JSON.parse(JSON.stringify(row))
  1113. this.modalData.strActAuthorizeDate = this.dayjs().format(
  1114. 'YYYY-MM-DD HH:mm:ss'
  1115. )
  1116. this.modalData.userName = this.$store.state.user.name
  1117. this.reviewFlag = true
  1118. },
  1119. saveReview(row, val) {
  1120. if (row.authHistRemark == '') {
  1121. this.$alert(data.msg, '操作提示', {
  1122. confirmButtonText: '确定',
  1123. callback: (action) => {
  1124. this.saveButton = false
  1125. },
  1126. })
  1127. }
  1128. this.loading = true
  1129. this.modalData.id = row.authHistId
  1130. this.modalData.actAuthorizator = row.userName
  1131. this.modalData.remark = row.authHistRemark
  1132. this.modalData.actAuthorizeDate = row.strActAuthorizeDate
  1133. this.modalData.orderRef1 = row.projectNo
  1134. if (val === 'Y') {
  1135. if (row.lastStepFlag === 'Y') {
  1136. this.modalData.approveResult = '已审批'
  1137. } else {
  1138. this.modalData.approveResult = '已审批'
  1139. }
  1140. } else if (val === 'N') {
  1141. this.modalData.approveResult = '未通过'
  1142. }
  1143. updateProjectAuthHist(this.modalData).then(({ data }) => {
  1144. if (data && data.code === 0) {
  1145. this.getDataList()
  1146. this.reviewFlag = false
  1147. this.$message({
  1148. message: '操作成功',
  1149. type: 'success',
  1150. duration: 1500,
  1151. onClose: () => {},
  1152. })
  1153. } else {
  1154. this.$alert(data.msg, '错误', {
  1155. confirmButtonText: '确定',
  1156. })
  1157. }
  1158. this.loading = false
  1159. })
  1160. },
  1161. // ======== 导出相关方法 ========
  1162. /**
  1163. * 导出excel
  1164. */
  1165. async createExportData() {
  1166. this.searchData.limit = -1
  1167. this.searchData.page = 1
  1168. await searchUserAuthMachineProjectApplicationInfo(this.searchData).then(
  1169. ({ data }) => {
  1170. this.resultList = data.page.list
  1171. }
  1172. )
  1173. return this.resultList
  1174. },
  1175. startDownload() {},
  1176. finishDownload() {},
  1177. fields() {
  1178. let json = '{'
  1179. this.columnList.forEach((item, index) => {
  1180. if (index == this.columnList.length - 1) {
  1181. json +=
  1182. '"' + item.columnLabel + '"' + ':' + '"' + item.columnProp + '"'
  1183. } else {
  1184. json +=
  1185. '"' +
  1186. item.columnLabel +
  1187. '"' +
  1188. ':' +
  1189. '"' +
  1190. item.columnProp +
  1191. '"' +
  1192. ','
  1193. }
  1194. })
  1195. json += '}'
  1196. let s = eval('(' + json + ')')
  1197. return s
  1198. },
  1199. // ======== 导入相关方法 ========
  1200. handleImportQuotation() {
  1201. let currentData = {
  1202. createBy: this.$store.state.user.name,
  1203. site: this.$store.state.user.site,
  1204. }
  1205. //打开组件 去做新增业务
  1206. this.$nextTick(() => {
  1207. this.$refs.quotationUpload.init(currentData)
  1208. })
  1209. },
  1210. // openSaveDataDialog(){
  1211. // if (this.modalData.title === '询价新增') {
  1212. // let rfqNos = [];
  1213. // this.dataList.forEach((item) => {
  1214. // // 如果item.rfqNo为XJ开头
  1215. // if (item.projectNo.startsWith('XJ')) {
  1216. // // 解析数字部分
  1217. // const numPart = parseInt(item.projectNo.replace('XJ', ''), 10);
  1218. // if (!isNaN(numPart)) {
  1219. // rfqNos.push(numPart);
  1220. // }
  1221. // }
  1222. // });
  1223. // if (rfqNos.length === 0) {
  1224. // // 如果没有XJ开头的rfqNo
  1225. // this.modalData.projectNo = 'XJ00000001';
  1226. // } else {
  1227. // // 取到最大的XJ开头的rfqNo
  1228. // let maxRfqNo = Math.max(...rfqNos);
  1229. //
  1230. // // 生成新的rfqNo,确保有9位数,前面补零
  1231. // maxRfqNo += 1; // 增加最大值
  1232. // this.modalData.projectNo = 'XJ' + String(maxRfqNo).padStart(8, '0');
  1233. // }
  1234. // }
  1235. // },
  1236. // 保存弹框关闭事件
  1237. closeSaveDataDialog() {
  1238. this.modalData = {
  1239. flag: '',
  1240. title: '',
  1241. site: '',
  1242. bu: '',
  1243. buNo: '',
  1244. buDesc: '',
  1245. id: '',
  1246. projectNo: '',
  1247. customerNo: '',
  1248. customerDesc: '',
  1249. requester: '',
  1250. requesterName: '',
  1251. quoter: '',
  1252. quoterName: '',
  1253. customerInquiryNo: '',
  1254. status: '',
  1255. priorityLevel: '',
  1256. requestDate: '',
  1257. requiredCompletionDate: '',
  1258. remark: '',
  1259. }
  1260. this.modalFlag = false
  1261. },
  1262. rowStyle({ row }) {
  1263. if (this.projectCurrentRow.id === row.id) {
  1264. return { 'background-color': '#E8F7F6', cursor: 'pointer' }
  1265. }
  1266. },
  1267. // 动态列开始 获取 用户保存的 格式列
  1268. async getTableUserColumn(tableId, columnId) {
  1269. let queryTableUser = {
  1270. userId: this.$store.state.user.name,
  1271. functionId: this.$route.meta.menuId,
  1272. tableId: tableId,
  1273. status: true,
  1274. languageCode: this.$i18n.locale,
  1275. }
  1276. await getTableUserListLanguage(queryTableUser).then(({ data }) => {
  1277. if (data.rows.length > 0) {
  1278. switch (columnId) {
  1279. case 1:
  1280. this.columnList = data.rows
  1281. break
  1282. }
  1283. } else {
  1284. this.getColumnList(tableId, columnId)
  1285. }
  1286. })
  1287. },
  1288. // 获取 tableDefault 列
  1289. async getColumnList(tableId, columnId) {
  1290. let queryTable = {
  1291. functionId: this.$route.meta.menuId,
  1292. tableId: tableId,
  1293. languageCode: this.$i18n.locale,
  1294. }
  1295. await getTableDefaultListLanguage(queryTable).then(({ data }) => {
  1296. if (!data.rows.length === 0) {
  1297. switch (columnId) {
  1298. case 1:
  1299. this.columnList = data.rows
  1300. break
  1301. }
  1302. }
  1303. })
  1304. },
  1305. },
  1306. }
  1307. </script>
  1308. <style scoped>
  1309. /deep/ .customer-tab .el-tabs__content {
  1310. padding: 0px !important;
  1311. height: 100%;
  1312. }
  1313. /deep/ .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner {
  1314. background-color: #17b3a3;
  1315. border-color: #17b3a3;
  1316. }
  1317. /deep/ .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after {
  1318. border-color: #fff;
  1319. }
  1320. /deep/ .el-form-item--medium .el-form-item__content {
  1321. height: auto;
  1322. }
  1323. .el-input-number /deep/ .el-input__inner {
  1324. text-align: right;
  1325. padding-right: 5px !important;
  1326. }
  1327. /deep/ .el-input .el-input--medium {
  1328. line-height: 20px;
  1329. }
  1330. /deep/ .el-input-number .el-input--medium {
  1331. line-height: 20px;
  1332. }
  1333. /*table中input 修改样式*/
  1334. /deep/ div.table-el-date {
  1335. padding: 0px 0px;
  1336. height: 25px !important;
  1337. }
  1338. /*table中input*/
  1339. div.table-el-date /deep/ input.el-input__inner {
  1340. padding: 0px 0px;
  1341. height: 23px !important;
  1342. text-align: right;
  1343. }
  1344. /* 特殊的样式*/
  1345. /deep/ .el-table div.cell:has(.table-el-date) {
  1346. /* 直接作用于 <td> 元素 */
  1347. padding: 0px;
  1348. height: 25px;
  1349. }
  1350. .el-transfer-panel {
  1351. border: 2px solid #17b3a3;
  1352. border-radius: 4px;
  1353. overflow: hidden;
  1354. background: #fff;
  1355. display: inline-block;
  1356. vertical-align: middle;
  1357. width: 200px;
  1358. max-height: 100%;
  1359. -webkit-box-sizing: border-box;
  1360. box-sizing: border-box;
  1361. position: relative;
  1362. }
  1363. .el-transfer-panel .el-transfer-panel__header {
  1364. height: 40px;
  1365. line-height: 40px;
  1366. background: #17b3a3;
  1367. margin: 0;
  1368. padding-left: 15px;
  1369. border-bottom: 1px solid #17b3a3;
  1370. -webkit-box-sizing: border-box;
  1371. box-sizing: border-box;
  1372. color: #000;
  1373. }
  1374. .el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label {
  1375. font-size: 14px;
  1376. color: #303133;
  1377. font-weight: 400;
  1378. }
  1379. </style>