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.

2290 lines
82 KiB

  1. <template>
  2. <div>
  3. <el-form :inline="true" label-position="top" :model="searchData" @keyup.enter.native="getDataList()">
  4. <el-form-item :label="'BU'">
  5. <el-select v-model="searchData.buDesc" placeholder="请选择" clearable style="width: 130px">
  6. <el-option
  7. v-for = "i in userBuList"
  8. :key = "i.buNo"
  9. :label = "i.buDesc"
  10. :value = "i.buDesc">
  11. </el-option>
  12. </el-select>
  13. </el-form-item>
  14. <el-form-item :label="'项目编码'">
  15. <el-input v-model="searchData.projectNo" style="width: 120px"></el-input>
  16. </el-form-item>
  17. <el-form-item :label="'项目名称'">
  18. <el-input v-model="searchData.projectDesc" style="width: 120px"></el-input>
  19. </el-form-item>
  20. <el-form-item :label="'项目料号'">
  21. <el-input v-model="searchData.testPartNo" style="width: 120px"></el-input>
  22. </el-form-item>
  23. <el-form-item :label="'料号描述'">
  24. <el-input v-model="searchData.partDesc" style="width: 120px"></el-input>
  25. </el-form-item>
  26. <el-form-item :label="'客户编码'">
  27. <el-input v-model="searchData.customerNo" style="width: 120px"></el-input>
  28. </el-form-item>
  29. <el-form-item :label="'客户名称'">
  30. <el-input v-model="searchData.customerDesc" style="width: 120px"></el-input>
  31. </el-form-item>
  32. <el-form-item :label="'项目分类'">
  33. <el-select v-model="searchData.projectCategory" placeholder="请选择" clearable style="width: 130px">
  34. <el-option
  35. v-for = "i in projectCategoryList"
  36. :key = "i.projectCategory"
  37. :label = "i.projectCategory"
  38. :value = "i.projectCategory">
  39. </el-option>
  40. </el-select>
  41. </el-form-item>
  42. <el-form-item :label="'项目状态'">
  43. <el-select v-model="searchData.status" placeholder="请选择" clearable style="width: 130px">
  44. <el-option
  45. v-for = "i in statusList"
  46. :key = "i.status"
  47. :label = "i.status"
  48. :value = "i.status">
  49. </el-option>
  50. </el-select>
  51. </el-form-item>
  52. <el-form-item :label="'PM/Sales'">
  53. <el-select v-model="searchData.projectManager" placeholder="请选择" clearable style="width: 130px">
  54. <el-option
  55. v-for = "i in projectManagersList"
  56. :key = "i.projectManagerId"
  57. :label = "i.projectManagerName"
  58. :value = "i.projectManager">
  59. </el-option>
  60. </el-select>
  61. </el-form-item>
  62. <el-form-item :label="'PjM'">
  63. <el-select v-model="searchData.projectOwner" placeholder="请选择" clearable style="width: 130px">
  64. <el-option
  65. v-for = "i in projectOwnersList"
  66. :key = "i.projectOwnerId"
  67. :label = "i.projectOwnerName"
  68. :value = "i.projectOwner">
  69. </el-option>
  70. </el-select>
  71. </el-form-item>
  72. <el-form-item :label="'Engineer'">
  73. <el-select v-model="searchData.engineer" placeholder="请选择" clearable style="width: 130px">
  74. <el-option
  75. v-for = "i in engineersList"
  76. :key = "i.engineerId"
  77. :label = "i.engineerName"
  78. :value = "i.engineer">
  79. </el-option>
  80. </el-select>
  81. </el-form-item>
  82. <el-form-item :label="'是否确认'">
  83. <el-select filterable v-model="searchData.confirmFlag" style="width: 130px">
  84. <el-option label="全部" value=""></el-option>
  85. <el-option label="是" value="Y"></el-option>
  86. <el-option label="否" value="N"></el-option>
  87. </el-select>
  88. </el-form-item>
  89. <el-form-item :label="'立项日期:'">
  90. <el-date-picker
  91. style="width: 120px"
  92. v-model="searchData.startDate"
  93. type="date"
  94. value-format="yyyy-MM-dd"
  95. placeholder="选择日期">
  96. </el-date-picker>
  97. -
  98. <el-date-picker
  99. style="width: 120px"
  100. v-model="searchData.endDate"
  101. type="date"
  102. value-format="yyyy-MM-dd"
  103. placeholder="选择日期">
  104. </el-date-picker>
  105. </el-form-item>
  106. <!-- <el-form-item :label="'在用'">-->
  107. <!-- <el-select filterable v-model="searchData.active" style="width: 130px">-->
  108. <!-- <el-option label="全部" value=""></el-option>-->
  109. <!-- <el-option label="是" value="Y"></el-option>-->
  110. <!-- <el-option label="否" value="N"></el-option>-->
  111. <!-- </el-select>-->
  112. <!-- </el-form-item>-->
  113. <el-form-item :label="' '">
  114. <el-button @click="getDataList()">查询</el-button>
  115. <download-excel
  116. v-if="this.$route.query.flag !== '2' && this.$route.query.flag !== '1'"
  117. :fields="fields()"
  118. :data="exportData"
  119. type="xls"
  120. :name="exportName"
  121. :header="exportHeader"
  122. :footer="exportFooter"
  123. :fetch="createExportData"
  124. :before-generate="startDownload"
  125. :before-finish="finishDownload"
  126. worksheet="导出信息"
  127. class="el-button el-button--primary el-button--medium">
  128. {{ "导出" }}
  129. </download-excel>
  130. </el-form-item>
  131. </el-form>
  132. <el-table :data="dataList"
  133. @header-dragend="handleColumnResize"
  134. border
  135. :height="height"
  136. style="width: 100%;margin-top: 0px;">
  137. <el-table-column
  138. v-for="(item,index) in columnProjectList" :key="index"
  139. :sortable="item.columnSortable"
  140. :prop="item.columnProp"
  141. :header-align="item.headerAlign"
  142. :show-overflow-tooltip="item.showOverflowTooltip"
  143. :align="item.align"
  144. :fixed="item.fixed==''?false:item.fixed"
  145. :min-width="item.columnWidth"
  146. :label="item.columnLabel">
  147. <template slot-scope="scope">
  148. <span v-if="!item.columnHidden"> {{scope.row[item.columnProp]}}</span>
  149. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]"
  150. style="width: 100px; height: 80px"/></span>
  151. </template>
  152. </el-table-column>
  153. <!-- <el-table-column header-align="center" align="center" width="70" prop="userDisplay" label="指定确认人"></el-table-column>-->
  154. <!-- <el-table-column header-align="center" align="center" :formatter="formatDate" prop="wantedConfirmDate" label="要求确认日期"></el-table-column>-->
  155. <!-- <el-table-column header-align="center" align="center" prop="confirmFlag" label="是否确认"></el-table-column>-->
  156. <!-- <el-table-column header-align="center" align="center" prop="confirmedBy" label="实际确认人"></el-table-column>-->
  157. <!-- <el-table-column header-align="center" align="center" prop="remark" label="备注"></el-table-column>-->
  158. <!-- <el-table-column header-align="center" align="center" prop="confirmedDate" label="实际确认时间"></el-table-column>-->
  159. <!-- <el-table-column header-align="center" align="center" prop="createDate" label="推送时间"></el-table-column>-->
  160. <!-- <el-table-column header-align="center" align="center" prop="createBy" label="推送人"></el-table-column>-->
  161. <el-table-column
  162. header-align="center"
  163. align="center"
  164. width="90"
  165. fixed="left"
  166. label="操作">
  167. <template slot-scope="scope">
  168. <a type="text" size="small" @click="toMes(scope.row)">项目信息</a>
  169. <a v-if="scope.row.confirmFlag === 'N'" type="text" size="small" @click="confirmDocument(scope.row)">确认</a>
  170. </template>
  171. </el-table-column>
  172. </el-table>
  173. <el-pagination
  174. @size-change="sizeChangeHandle"
  175. @current-change="currentChangeHandle"
  176. :current-page="pageIndex"
  177. :page-sizes="[20, 50, 100, 200, 500]"
  178. :page-size="pageSize"
  179. :total="totalPage"
  180. layout="total, sizes, prev, pager, next, jumper">
  181. </el-pagination>
  182. <el-dialog title="确认" @close="closeUploadFileVisible" :visible.sync="confirmVisible" width="579px" style="margin-top: 0vh;height: 100%;" :close-on-click-modal="false">
  183. <el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: -5px;">
  184. <el-form-item label="项目编码" prop="projectNo" class="red-label">
  185. <el-input v-model="modalData.projectNo" disabled style="width: 110px;" ></el-input>
  186. </el-form-item>
  187. <el-form-item label="项目名称" prop="projectDesc" >
  188. <el-input v-model="modalData.projectDesc" disabled style="width: 170px;"></el-input>
  189. </el-form-item>
  190. <el-form-item label="BU" prop="bu">
  191. <el-input v-model="modalData.bu" disabled style="width: 110px;" ></el-input>
  192. </el-form-item>
  193. <el-form-item label="项目分类" prop="cProjectTypeDb">
  194. <el-input v-model="modalData.cProjectTypeDb" disabled style="width: 110px;" ></el-input>
  195. </el-form-item>
  196. </el-form>
  197. <el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: -5px;">
  198. <el-form-item label="指定确认人" prop="userDisplay">
  199. <el-input v-model="confirmData.userDisplay" readonly style="width: 110px;"></el-input>
  200. </el-form-item>
  201. <el-form-item label="要求确认日期" prop="wantedConfirmDate">
  202. <el-input v-model="confirmData.wantedConfirmDate" disabled style="width: 170px;" ></el-input>
  203. </el-form-item>
  204. </el-form>
  205. <el-form :inline="true" label-position="top" :model="confirmData" style="margin-left: 7px;margin-top: -5px;">
  206. <el-form-item label="备注" prop="remark">
  207. <el-input v-model="confirmData.remark" style="width: 541px" type="textarea" :rows="1"></el-input>
  208. </el-form-item>
  209. </el-form>
  210. <el-form :inline="true" label-position="top" :model="confirmData" style="margin-left: 7px;margin-top: -15px;">
  211. <el-form-item label=" ">
  212. <a href="javascript:void(0);" @click="triggerUpload" type="text" size="small">点击选择文件</a>
  213. <tr></tr>
  214. <el-input v-model="this.fileName" readonly placeholder="文件名称" style="width: 541px"></el-input>
  215. <el-upload class="custom-upload" :file-list="fileList"
  216. action="javascript:void(0);" ref="uploadFile"
  217. :on-change="onChange" :on-close="closeFileUpdate"
  218. multiple :auto-upload="false"
  219. style="text-align: left;margin-top: 0px;margin-left: 6px;display: none;">
  220. </el-upload>
  221. </el-form-item>
  222. </el-form>
  223. <el-table
  224. @header-dragend="handleColumnResize"
  225. :height="height - 200"
  226. :data="projectConfirmatorFileList"
  227. border
  228. style="width: 100%;margin-top: 17px;margin-left: 0px;">
  229. <el-table-column
  230. prop="fileName"
  231. header-align="center"
  232. align="center"
  233. min-width="120"
  234. label="文件名">
  235. </el-table-column>
  236. <el-table-column
  237. prop="createDate"
  238. header-align="center"
  239. align="center"
  240. min-width="80"
  241. label="上传时间">
  242. </el-table-column>
  243. <el-table-column
  244. prop="createdBy"
  245. header-align="center"
  246. align="center"
  247. min-width="60"
  248. label="上传人">
  249. </el-table-column>
  250. </el-table>
  251. <div slot="footer" class="dialog-footer" style="margin-top: 0px">
  252. <el-button type="primary" @click="saveUploadFile()">确定</el-button>
  253. <el-button @click="closeUploadFileVisible()">关闭</el-button>
  254. </div>
  255. </el-dialog>
  256. <el-dialog title="查看附件" @close="closeViewDocumentFileVisible" :visible.sync="viewDocumentFileVisible" width="520px" style="margin-top: 0vh" :close-on-click-modal="false">
  257. <el-table
  258. @header-dragend="handleColumnResize"
  259. :height="height + 200"
  260. :data="projectConfirmatorFileList"
  261. border
  262. style="width: 100%;margin-top: 0px;margin-left: 0px;">
  263. <el-table-column
  264. prop="fileName"
  265. header-align="center"
  266. align="center"
  267. min-width="120"
  268. label="文件名">
  269. </el-table-column>
  270. <el-table-column
  271. prop="createDate"
  272. header-align="center"
  273. align="center"
  274. min-width="80"
  275. label="上传时间">
  276. </el-table-column>
  277. <el-table-column
  278. prop="createdBy"
  279. header-align="center"
  280. align="center"
  281. min-width="50"
  282. label="上传人">
  283. </el-table-column>
  284. <el-table-column
  285. header-align="center"
  286. align="center"
  287. width="100"
  288. label="操作">
  289. <template slot-scope="scope">
  290. <a type="text" size="small" @click="viewFile(scope.row)">查看</a>
  291. <a type="text" size="small" @click="downloadFile(scope.row)">下载</a>
  292. <a type="text" size="small" @click="deleteFile(scope.row)">删除</a>
  293. </template>
  294. </el-table-column>
  295. </el-table>
  296. <div slot="footer" class="dialog-footer" style="margin-top: 0px">
  297. <el-button @click="closeViewDocumentFileVisible()">关闭</el-button>
  298. </div>
  299. </el-dialog>
  300. </div>
  301. </template>
  302. <script>
  303. import {
  304. searchProjectUploadsDocumentList,
  305. searchProjectOverUploadsDocumentList,
  306. searchConfirmProgressList,
  307. searchOverConfirmProgressList,
  308. searchAllConfirmProgressList,
  309. queryOverConfirmProgressList,
  310. queryConfirmProgressList, queryAllConfirmProgressList
  311. } from "../../../api/eam/eamProofing";
  312. import {
  313. deleteProjectFile,
  314. searchConfirmProgressPusherList,
  315. searchProjectConfirmatorFileList, updateProjectDocumentConfirm, uploadProjectFile
  316. } from "../../../api/eam/eamProject";
  317. import {downLoadObjectFile} from "../../../api/eam/eam_object_list";
  318. import {getSiteAndBuByUserName} from "../../../api/qc/qc";
  319. import {removeUserFavorite, saveUserFavorite, userFavoriteList} from "../../../api/userFavorite";
  320. import {getTableDefaultListLanguage, getTableUserListLanguage, updateColumnSize} from "../../../api/table";
  321. import moment from "moment/moment";
  322. import {EventBus} from "../../../main";
  323. export default {
  324. computed: {
  325. projectOwnersList() {
  326. return this.allPersonnelInfoList.filter(item => item.projectOwnerId !== undefined);
  327. },
  328. projectManagersList() {
  329. return this.allPersonnelInfoList.filter(item => item.projectManagerId !== undefined);
  330. },
  331. engineersList() {
  332. return this.allPersonnelInfoList.filter(item => item.engineerId !== undefined);
  333. }
  334. },
  335. data() {
  336. return {
  337. // 导出
  338. exportData: [],
  339. exportName: '待文档确认' + this.dayjs().format('YYYYMMDDHHmmss'),
  340. exportHeader: ['待文档确认'],
  341. exportFooter: [],
  342. dataList: [],
  343. confirmProgressList: [],
  344. projectConfirmatorFileList: [],
  345. fileList: [],
  346. height: 200,
  347. pageIndex: 1,
  348. pageSize: 20,
  349. totalPage: 0,
  350. fileName:'',
  351. dataListLoading: false,
  352. viewDocumentFileVisible: false,
  353. confirmVisible: false,
  354. selectTypeFlag: [],
  355. searchData: {
  356. site: this.$store.state.user.site,
  357. userId: this.$store.state.user.id,
  358. projectId: '',
  359. projectNo: '',
  360. projectDesc: '',
  361. projectPartId: '',
  362. testPartNo: '',
  363. partDesc: '',
  364. customerNo: '',
  365. customerDesc: '',
  366. buDesc: '',
  367. projectCategory: '',
  368. status: '',
  369. startDate:'',
  370. endDate:'',
  371. projectCreationDate: new Date(),
  372. projectCloseDate:'',
  373. needDate:'',
  374. projectManager:'',
  375. projectOwner:'',
  376. engineer:'',
  377. confirmFlag:'N',
  378. page: 1,
  379. limit: 10,
  380. },
  381. modalData:{
  382. flag:'',
  383. id:'',
  384. bu: '',
  385. buNo: '',
  386. site: this.$store.state.user.site,
  387. projectId: '',
  388. oriProjectId: '',
  389. projectDesc:'',
  390. projectCloseDate:'',
  391. proofingNo:'',
  392. needDate:'',
  393. customerNo:'',
  394. finalCustomerId:'',
  395. customerDesc:'',
  396. projectCategory:'',
  397. testPartNo:'',
  398. partDesc:'',
  399. priority:'',
  400. projectManager:'',
  401. projectManagerName:'',
  402. projectOwner:'',
  403. projectOwnerName:'',
  404. cProjectRegion:'',
  405. cProjectBuildDate:'',
  406. cQualityEngineer1:'',
  407. cQualityEngineer1Name:'',
  408. cQualityEngineer2:'',
  409. cQualityEngineer2Name:'',
  410. cQualityEngineer3:'',
  411. cQualityEngineer3Name:'',
  412. cQualityEngineer4:'',
  413. cQualityEngineer4Name:'',
  414. cQualityEngineer5:'',
  415. cQualityEngineer5Name:'',
  416. cQualityEngineer6:'',
  417. cQualityEngineer6Name:'',
  418. cManufactureEngineer:'',
  419. cManufactureEngineerName:'',
  420. engineer:'',
  421. engineerName:'',
  422. docEngineer:'',
  423. docEngineerName:'',
  424. docEngineer2:'',
  425. docEngineer2Name:'',
  426. ipqcHardTag:'',
  427. ipqcHardTagName:'',
  428. cQualityEngineer7:'',
  429. cQualityEngineer7Name:'',
  430. //projectCreationDate为当前服务器的时间
  431. projectCreationDate: new Date(),
  432. finalPartNo:'',
  433. finalPartDesc:'',
  434. wantedConfirmDate: new Date(),
  435. // active:'',
  436. createBy: this.$store.state.user.name,
  437. updateBy: this.$store.state.user.name,
  438. },
  439. confirmData:{
  440. site: '',
  441. projectId: '',
  442. orderRef1: '',
  443. orderRef2: '',
  444. documentId: '',
  445. documentType: '',
  446. itemNo: '',
  447. userid: '',
  448. wantedConfirmDate: '',
  449. confirmFlag: '',
  450. confirmedBy: '',
  451. remark: '',
  452. confirmedDate: '',
  453. createDate: '',
  454. createBy: '',
  455. page: 1,
  456. limit: 1000
  457. },
  458. columnProjectList: [
  459. {
  460. userId: this.$store.state.user.name,
  461. functionId: 401007,
  462. serialNumber: '401007Table1BuDesc',
  463. tableId: "401007Table1",
  464. tableName: "项目信息待文档确认表",
  465. columnProp: 'buDesc',
  466. headerAlign: "center",
  467. align: "center",
  468. columnLabel: 'BU',
  469. columnHidden: false,
  470. columnImage: false,
  471. columnSortable: false,
  472. sortLv: 0,
  473. status: true,
  474. fixed: '',
  475. columnWidth: 100,
  476. },
  477. {
  478. userId: this.$store.state.user.name,
  479. functionId: 401007,
  480. serialNumber: '401007Table1ProjectId',
  481. tableId: "401007Table1",
  482. tableName: "项目信息待文档确认表",
  483. columnProp: 'projectNo',
  484. headerAlign: "center",
  485. align: "center",
  486. columnLabel: '项目编码',
  487. columnHidden: false,
  488. columnImage: false,
  489. columnSortable: false,
  490. sortLv: 0,
  491. status: true,
  492. fixed: '',
  493. columnWidth: 100,
  494. },
  495. {
  496. userId: this.$store.state.user.name,
  497. functionId: 401007,
  498. serialNumber: '401007Table1ProjectDesc',
  499. tableId: "401007Table1",
  500. tableName: "项目信息待文档确认表",
  501. columnProp: 'projectDesc',
  502. headerAlign: "center",
  503. align: "center",
  504. columnLabel: '项目名称',
  505. columnHidden: false,
  506. columnImage: false,
  507. columnSortable: false,
  508. sortLv: 0,
  509. status: true,
  510. fixed: '',
  511. columnWidth: 100,
  512. },
  513. {
  514. userId: this.$store.state.user.name,
  515. functionId: 401007,
  516. serialNumber: '401007Table1TestPartNo',
  517. tableId: "401007Table1",
  518. tableName: "项目信息待文档确认表",
  519. columnProp: 'testPartNo',
  520. headerAlign: "center",
  521. align: "center",
  522. columnLabel: '项目料号',
  523. columnHidden: false,
  524. columnImage: false,
  525. columnSortable: false,
  526. sortLv: 0,
  527. status: true,
  528. fixed: '',
  529. columnWidth: 100,
  530. },
  531. {
  532. userId: this.$store.state.user.name,
  533. functionId: 401007,
  534. serialNumber: '401007Table1PartDesc',
  535. tableId: "401007Table1",
  536. tableName: "项目信息待文档确认表",
  537. columnProp: 'partDesc',
  538. headerAlign: "center",
  539. align: "center",
  540. columnLabel: '料号描述',
  541. columnHidden: false,
  542. columnImage: false,
  543. columnSortable: false,
  544. sortLv: 0,
  545. status: true,
  546. fixed: '',
  547. columnWidth: 100,
  548. },
  549. {
  550. userId: this.$store.state.user.name,
  551. functionId: 401007,
  552. serialNumber: '401007Table1customerNo',
  553. tableId: "401007Table1",
  554. tableName: "项目信息待文档确认表",
  555. columnProp: "customerNo",
  556. headerAlign: "center",
  557. align: "left",
  558. columnLabel: "客户编码",
  559. columnHidden: false,
  560. columnImage: false,
  561. columnSortable: false,
  562. sortLv: 0,
  563. status: true,
  564. fixed: '',
  565. columnWidth: 100
  566. },
  567. {
  568. userId: this.$store.state.user.name,
  569. functionId: 401007,
  570. serialNumber: '401007Table1customerDesc',
  571. tableId: "401007Table1",
  572. tableName: "项目信息待文档确认表",
  573. columnProp: "customerDesc",
  574. headerAlign: "center",
  575. align: "left",
  576. columnLabel: "客户名称",
  577. columnHidden: false,
  578. columnImage: false,
  579. columnSortable: false,
  580. sortLv: 0,
  581. status: true,
  582. fixed: '',
  583. columnWidth: 150
  584. },
  585. {
  586. userId: this.$store.state.user.name,
  587. functionId: 401007,
  588. serialNumber: '401007Table1BuildDate',
  589. tableId: "401007Table1",
  590. tableName: "项目信息待文档确认表",
  591. columnProp: "buildDate",
  592. headerAlign: "center",
  593. align: "center",
  594. columnLabel: "立项日期",
  595. columnHidden: false,
  596. columnImage: false,
  597. columnSortable: false,
  598. sortLv: 0,
  599. status: true,
  600. fixed: '',
  601. columnWidth: 120
  602. },
  603. {
  604. userId: this.$store.state.user.name,
  605. functionId: 401007,
  606. serialNumber: '401007Table1ProjectCategory',
  607. tableId: "401007Table1",
  608. tableName: "项目信息待文档确认表",
  609. columnProp: 'projectCategory',
  610. headerAlign: "center",
  611. align: "left",
  612. columnLabel: '项目分类',
  613. columnHidden: false,
  614. columnImage: false,
  615. columnSortable: false,
  616. sortLv: 0,
  617. status: true,
  618. fixed: '',
  619. columnWidth: 120,
  620. },
  621. {
  622. userId: this.$store.state.user.name,
  623. functionId: 401007,
  624. serialNumber: '401007Table1Priority',
  625. tableId: "401007Table1",
  626. tableName: "项目信息待文档确认表",
  627. columnProp: 'priority',
  628. headerAlign: "center",
  629. align: "left",
  630. columnLabel: '优先级',
  631. columnHidden: false,
  632. columnImage: false,
  633. columnSortable: false,
  634. sortLv: 0,
  635. status: true,
  636. fixed: '',
  637. columnWidth: 80,
  638. },
  639. {
  640. userId: this.$store.state.user.name,
  641. functionId: 401007,
  642. serialNumber: '401007Table1CProjectRegion',
  643. tableId: "401007Table1",
  644. tableName: "项目信息待文档确认表",
  645. columnProp: 'cProjectRegion',
  646. headerAlign: "center",
  647. align: "left",
  648. columnLabel: '区域',
  649. columnHidden: false,
  650. columnImage: false,
  651. columnSortable: false,
  652. sortLv: 0,
  653. status: true,
  654. fixed: '',
  655. columnWidth: 120,
  656. },
  657. {
  658. userId: this.$store.state.user.name,
  659. functionId: 401007,
  660. serialNumber: '401007Table1ProjectManager',
  661. tableId: "401007Table1",
  662. tableName: "项目信息待文档确认表",
  663. columnProp: 'projectManagerName',
  664. headerAlign: "center",
  665. align: "left",
  666. columnLabel: 'PM/Sales',
  667. columnHidden: false,
  668. columnImage: false,
  669. columnSortable: false,
  670. sortLv: 0,
  671. status: true,
  672. fixed: '',
  673. columnWidth: 120,
  674. },
  675. {
  676. userId: this.$store.state.user.name,
  677. functionId: 401007,
  678. serialNumber: '401007Table1ProjectOwner',
  679. tableId: "401007Table1",
  680. tableName: "项目信息待文档确认表",
  681. columnProp: 'projectOwnerName',
  682. headerAlign: "center",
  683. align: "left",
  684. columnLabel: 'PjM',
  685. columnHidden: false,
  686. columnImage: false,
  687. columnSortable: false,
  688. sortLv: 0,
  689. status: true,
  690. fixed: '',
  691. columnWidth: 120,
  692. },
  693. {
  694. userId: this.$store.state.user.name,
  695. functionId: 401007,
  696. serialNumber: '401007Table1Engineer',
  697. tableId: "401007Table1",
  698. tableName: "项目信息待文档确认表",
  699. columnProp: 'engineerName',
  700. headerAlign: "center",
  701. align: "left",
  702. columnLabel: 'Engineer',
  703. columnHidden: false,
  704. columnImage: false,
  705. columnSortable: false,
  706. sortLv: 0,
  707. status: true,
  708. fixed: '',
  709. columnWidth: 120,
  710. },
  711. {
  712. userId: this.$store.state.user.name,
  713. functionId: 401007,
  714. serialNumber: '401007Table1CQualityEngineer1',
  715. tableId: "401007Table1",
  716. tableName: "项目信息待文档确认表",
  717. columnProp: 'cQualityEngineer1Name',
  718. headerAlign: "center",
  719. align: "left",
  720. columnLabel: 'IPQC-Lam/Pri/Etch/Slit',
  721. columnHidden: false,
  722. columnImage: false,
  723. columnSortable: false,
  724. sortLv: 0,
  725. status: true,
  726. fixed: '',
  727. columnWidth: 170,
  728. },
  729. {
  730. userId: this.$store.state.user.name,
  731. functionId: 401007,
  732. serialNumber: '401007Table1CQualityEngineer2',
  733. tableId: "401007Table1",
  734. tableName: "项目信息待文档确认表",
  735. columnProp: 'cQualityEngineer2Name',
  736. headerAlign: "center",
  737. align: "left",
  738. columnLabel: 'IPQC-Converting',
  739. columnHidden: false,
  740. columnImage: false,
  741. columnSortable: false,
  742. sortLv: 0,
  743. status: true,
  744. fixed: '',
  745. columnWidth: 150,
  746. },
  747. {
  748. userId: this.$store.state.user.name,
  749. functionId: 401007,
  750. serialNumber: '401007Table1CQualityEngineer3',
  751. tableId: "401007Table1",
  752. tableName: "项目信息待文档确认表",
  753. columnProp: 'cQualityEngineer3Name',
  754. headerAlign: "center",
  755. align: "left",
  756. columnLabel: 'FQC1',
  757. columnHidden: false,
  758. columnImage: false,
  759. columnSortable: false,
  760. sortLv: 0,
  761. status: true,
  762. fixed: '',
  763. columnWidth: 120,
  764. },
  765. {
  766. userId: this.$store.state.user.name,
  767. functionId: 401007,
  768. serialNumber: '401007Table1CQualityEngineer5',
  769. tableId: "401007Table1",
  770. tableName: "项目信息待文档确认表",
  771. columnProp: 'cQualityEngineer5Name',
  772. headerAlign: "center",
  773. align: "left",
  774. columnLabel: 'FQC2',
  775. columnHidden: false,
  776. columnImage: false,
  777. columnSortable: false,
  778. sortLv: 0,
  779. status: true,
  780. fixed: '',
  781. columnWidth: 120,
  782. },
  783. {
  784. userId: this.$store.state.user.name,
  785. functionId: 401007,
  786. serialNumber: '401007Table1CQualityEngineer6',
  787. tableId: "401007Table1",
  788. tableName: "项目信息待文档确认表",
  789. columnProp: 'cQualityEngineer6Name',
  790. headerAlign: "center",
  791. align: "left",
  792. columnLabel: 'IQC',
  793. columnHidden: false,
  794. columnImage: false,
  795. columnSortable: false,
  796. sortLv: 0,
  797. status: true,
  798. fixed: '',
  799. columnWidth: 120,
  800. },
  801. {
  802. userId: this.$store.state.user.name,
  803. functionId: 401007,
  804. serialNumber: '401007Table1CQualityEngineer6',
  805. tableId: "401007Table1",
  806. tableName: "项目信息待文档确认表",
  807. columnProp: 'cQualityEngineer6Name',
  808. headerAlign: "center",
  809. align: "left",
  810. columnLabel: 'IQC',
  811. columnHidden: false,
  812. columnImage: false,
  813. columnSortable: false,
  814. sortLv: 0,
  815. status: true,
  816. fixed: '',
  817. columnWidth: 120,
  818. },
  819. {
  820. userId: this.$store.state.user.name,
  821. functionId: 401007,
  822. serialNumber: '401007Table1CManufactureEngineer',
  823. tableId: "401007Table1",
  824. tableName: "项目信息待文档确认表",
  825. columnProp: 'cManufactureEngineerName',
  826. headerAlign: "center",
  827. align: "left",
  828. columnLabel: 'MFG',
  829. columnHidden: false,
  830. columnImage: false,
  831. columnSortable: false,
  832. sortLv: 0,
  833. status: true,
  834. fixed: '',
  835. columnWidth: 120,
  836. },
  837. {
  838. userId: this.$store.state.user.name,
  839. functionId: 401007,
  840. serialNumber: '401007Table1CQualityEngineer4',
  841. tableId: "401007Table1",
  842. tableName: "项目信息待文档确认表",
  843. columnProp: 'cQualityEngineer4Name',
  844. headerAlign: "center",
  845. align: "left",
  846. columnLabel: 'SQE',
  847. columnHidden: false,
  848. columnImage: false,
  849. columnSortable: false,
  850. sortLv: 0,
  851. status: true,
  852. fixed: '',
  853. columnWidth: 120,
  854. },
  855. {
  856. userId: this.$store.state.user.name,
  857. functionId: 401007,
  858. serialNumber: '401007Table1DocEngineer',
  859. tableId: "401007Table1",
  860. tableName: "项目信息待上传文件表",
  861. columnProp: 'docEngineerName',
  862. headerAlign: "center",
  863. align: "left",
  864. columnLabel: '文档工程师',
  865. columnHidden: false,
  866. columnImage: false,
  867. columnSortable: false,
  868. sortLv: 0,
  869. status: true,
  870. fixed: '',
  871. columnWidth: 120,
  872. },
  873. {
  874. userId: this.$store.state.user.name,
  875. functionId: 401007,
  876. serialNumber: '401007Table1DocEngineer2',
  877. tableId: "401007Table1",
  878. tableName: "项目信息待上传文件表",
  879. columnProp: 'docEngineer2Name',
  880. headerAlign: "center",
  881. align: "left",
  882. columnLabel: '文档工程师2',
  883. columnHidden: false,
  884. columnImage: false,
  885. columnSortable: false,
  886. sortLv: 0,
  887. status: true,
  888. fixed: '',
  889. columnWidth: 120,
  890. },
  891. {
  892. userId: this.$store.state.user.name,
  893. functionId: 401007,
  894. serialNumber: '401007Table1IpqcHardTag',
  895. tableId: "401007Table1",
  896. tableName: "项目信息待上传文件表",
  897. columnProp: 'ipqcHardTagName',
  898. headerAlign: "center",
  899. align: "left",
  900. columnLabel: 'IPQC-Hardtag',
  901. columnHidden: false,
  902. columnImage: false,
  903. columnSortable: false,
  904. sortLv: 0,
  905. status: true,
  906. fixed: '',
  907. columnWidth: 120,
  908. },
  909. {
  910. userId: this.$store.state.user.name,
  911. functionId: 401007,
  912. serialNumber: '401007Table1CQualityEngineer7',
  913. tableId: "401007Table1",
  914. tableName: "项目信息待文档确认表",
  915. columnProp: 'cQualityEngineer7Name',
  916. headerAlign: "center",
  917. align: "left",
  918. columnLabel: '前道工程师',
  919. columnHidden: false,
  920. columnImage: false,
  921. columnSortable: false,
  922. sortLv: 0,
  923. status: true,
  924. fixed: '',
  925. columnWidth: 120,
  926. },
  927. {
  928. userId: this.$store.state.user.name,
  929. functionId: 401007,
  930. serialNumber: '401007Table1Status',
  931. tableId: "401007Table1",
  932. tableName: "项目信息待文档确认表",
  933. columnProp: 'status',
  934. headerAlign: "center",
  935. align: "left",
  936. columnLabel: '项目状态' ,
  937. columnHidden: false,
  938. columnImage: false,
  939. columnSortable: false,
  940. sortLv: 0,
  941. status: true,
  942. fixed: '',
  943. columnWidth: 100,
  944. },
  945. {
  946. userId: this.$store.state.user.name,
  947. functionId: 401007,
  948. serialNumber: '401007Table1NeedDate',
  949. tableId: "401007Table1",
  950. tableName: "项目信息待文档确认表",
  951. columnProp: 'needDate',
  952. headerAlign: "center",
  953. align: "center",
  954. columnLabel: '预计完成日期',
  955. columnHidden: false,
  956. columnImage: false,
  957. columnSortable: false,
  958. sortLv: 0,
  959. status: true,
  960. fixed: '',
  961. columnWidth: 120,
  962. },
  963. {
  964. userId: this.$store.state.user.name,
  965. functionId: 401007,
  966. serialNumber: '401007Table1CloseDate',
  967. tableId: "401007Table1",
  968. tableName: "项目信息待文档确认表",
  969. columnProp: 'closeDate',
  970. headerAlign: "center",
  971. align: "center",
  972. columnLabel: '转量产日期',
  973. columnHidden: false,
  974. columnImage: false,
  975. columnSortable: false,
  976. sortLv: 0,
  977. status: true,
  978. fixed: '',
  979. columnWidth: 120,
  980. },
  981. {
  982. userId: this.$store.state.user.name,
  983. functionId: 401007,
  984. serialNumber: '401007Table1FinalPartNo',
  985. tableId: "401007Table1",
  986. tableName: "项目信息待文档确认表",
  987. columnProp: 'finalPartNo',
  988. headerAlign: "center",
  989. align: "left",
  990. columnLabel: 'ERP正式料号',
  991. columnHidden: false,
  992. columnImage: false,
  993. columnSortable: false,
  994. sortLv: 0,
  995. status: true,
  996. fixed: '',
  997. columnWidth: 120,
  998. },
  999. {
  1000. userId: this.$store.state.user.name,
  1001. functionId: 401007,
  1002. serialNumber: '401007Table1UserDisplay',
  1003. tableId: "401007Table1",
  1004. tableName: "项目信息待文档确认表",
  1005. columnProp: 'userDisplay',
  1006. headerAlign: "center",
  1007. align: "center",
  1008. columnLabel: '指定确认人',
  1009. columnHidden: false,
  1010. columnImage: false,
  1011. columnSortable: false,
  1012. sortLv: 0,
  1013. status: true,
  1014. fixed: '',
  1015. columnWidth: 70,
  1016. },
  1017. {
  1018. userId: this.$store.state.user.name,
  1019. functionId: 401007,
  1020. serialNumber: '401007Table1WantedConfirmDate',
  1021. tableId: "401007Table1",
  1022. tableName: "项目信息待文档确认表",
  1023. columnProp: 'wantedConfirmDate',
  1024. headerAlign: "center",
  1025. align: "center",
  1026. columnLabel: '要求确认日期',
  1027. columnHidden: false,
  1028. columnImage: false,
  1029. columnSortable: false,
  1030. sortLv: 0,
  1031. status: true,
  1032. fixed: '',
  1033. columnWidth: 120,
  1034. },
  1035. {
  1036. userId: this.$store.state.user.name,
  1037. functionId: 401007,
  1038. serialNumber: '401007Table1ConfirmFlag',
  1039. tableId: "401007Table1",
  1040. tableName: "项目信息待文档确认表",
  1041. columnProp: 'confirmFlag',
  1042. headerAlign: "center",
  1043. align: "center",
  1044. columnLabel: '是否确认',
  1045. columnHidden: false,
  1046. columnImage: false,
  1047. columnSortable: false,
  1048. sortLv: 0,
  1049. status: true,
  1050. fixed: '',
  1051. columnWidth: 70,
  1052. },
  1053. {
  1054. userId: this.$store.state.user.name,
  1055. functionId: 401007,
  1056. serialNumber: '401007Table1ConfirmedBy',
  1057. tableId: "401007Table1",
  1058. tableName: "项目信息待文档确认表",
  1059. columnProp: 'confirmedBy',
  1060. headerAlign: "center",
  1061. align: "center",
  1062. columnLabel: '实际确认人',
  1063. columnHidden: false,
  1064. columnImage: false,
  1065. columnSortable: false,
  1066. sortLv: 0,
  1067. status: true,
  1068. fixed: '',
  1069. columnWidth: 70,
  1070. },
  1071. {
  1072. userId: this.$store.state.user.name,
  1073. functionId: 401007,
  1074. serialNumber: '401007Table1Remark',
  1075. tableId: "401007Table1",
  1076. tableName: "项目信息待文档确认表",
  1077. columnProp: 'remark',
  1078. headerAlign: "center",
  1079. align: "center",
  1080. columnLabel: '备注',
  1081. columnHidden: false,
  1082. columnImage: false,
  1083. columnSortable: false,
  1084. sortLv: 0,
  1085. status: true,
  1086. fixed: '',
  1087. columnWidth: 120,
  1088. },
  1089. {
  1090. userId: this.$store.state.user.name,
  1091. functionId: 401007,
  1092. serialNumber: '401007Table1ConfirmedDate',
  1093. tableId: "401007Table1",
  1094. tableName: "项目信息待文档确认表",
  1095. columnProp: 'confirmedDate',
  1096. headerAlign: "center",
  1097. align: "center",
  1098. columnLabel: '实际确认时间',
  1099. columnHidden: false,
  1100. columnImage: false,
  1101. columnSortable: false,
  1102. sortLv: 0,
  1103. status: true,
  1104. fixed: '',
  1105. columnWidth: 140,
  1106. },
  1107. {
  1108. userId: this.$store.state.user.name,
  1109. functionId: 401007,
  1110. serialNumber: '401007Table1CreateDate',
  1111. tableId: "401007Table1",
  1112. tableName: "项目信息待文档确认表",
  1113. columnProp: 'createDate',
  1114. headerAlign: "center",
  1115. align: "center",
  1116. columnLabel: '推送时间',
  1117. columnHidden: false,
  1118. columnImage: false,
  1119. columnSortable: false,
  1120. sortLv: 0,
  1121. status: true,
  1122. fixed: '',
  1123. columnWidth: 140,
  1124. },
  1125. {
  1126. userId: this.$store.state.user.name,
  1127. functionId: 401007,
  1128. serialNumber: '401007Table1CreateBy',
  1129. tableId: "401007Table1",
  1130. tableName: "项目信息待文档确认表",
  1131. columnProp: 'createBy',
  1132. headerAlign: "center",
  1133. align: "center",
  1134. columnLabel: '推送人',
  1135. columnHidden: false,
  1136. columnImage: false,
  1137. columnSortable: false,
  1138. sortLv: 0,
  1139. status: true,
  1140. fixed: '',
  1141. columnWidth: 70,
  1142. },
  1143. ],
  1144. userBuList: [],
  1145. projectCategoryList: [
  1146. {
  1147. projectCategory: 'Low Risk',
  1148. },
  1149. {
  1150. projectCategory: 'High Risk',
  1151. },
  1152. {
  1153. projectCategory: 'Sustaining',
  1154. }
  1155. ],
  1156. statusList: [
  1157. {
  1158. status: '草稿',
  1159. },
  1160. {
  1161. status: '进行中',
  1162. },
  1163. {
  1164. status: '已量产',
  1165. },
  1166. {
  1167. status: '正式量产',
  1168. }
  1169. ],
  1170. allPersonnelInfoList: [],
  1171. };
  1172. },
  1173. created() {
  1174. // 获取用户的 site 和 bu
  1175. this.getSiteAndBuByUserName()
  1176. // 校验用户是否收藏
  1177. this.favoriteIsOk()
  1178. // 动态列
  1179. this.getTableUserColumn(this.$route.meta.menuId+'table1',1)
  1180. this.getDataList()
  1181. },
  1182. activated() {
  1183. if (this.$route.query.flag) {
  1184. this.getDataList()
  1185. }
  1186. this.$store.commit("sift/commitSearchFunction",this.queryConfirmProgressList)
  1187. },
  1188. mounted () {
  1189. this.$nextTick(() => {
  1190. this.height = window.innerHeight - 200
  1191. })
  1192. EventBus.$on('updateAgencyMatterForConfirm', () => {
  1193. this.getDataList();
  1194. });
  1195. },
  1196. methods: {
  1197. handleColumnResize(newWidth, oldWidth, column, event){
  1198. let inData= this.columnList.filter(item => item.columnProp === column.property)[0]
  1199. inData.columnWidth=newWidth
  1200. updateColumnSize(inData).then(({data}) => {
  1201. if (data.code === 0) {
  1202. console.log("栏位宽度保存成功!")
  1203. }
  1204. })
  1205. },
  1206. // 获取用户的bu
  1207. getSiteAndBuByUserName () {
  1208. let tempData = {
  1209. username: this.$store.state.user.name,
  1210. }
  1211. getSiteAndBuByUserName(tempData).then(({data}) => {
  1212. if (data.code === 0) {
  1213. this.userBuList = data.rows
  1214. }
  1215. })
  1216. },
  1217. //导出excel
  1218. async createExportData () {
  1219. this.searchData.limit = -1
  1220. this.searchData.page = 1
  1221. await searchAllConfirmProgressList(this.searchData).then(({data}) => {
  1222. this.exportList = data.page.list
  1223. this.exportList.forEach((item) => {
  1224. item.projectManagerName = item.projectManager.split('-')[1];
  1225. item.projectOwnerName = item.projectOwner.split('-')[1];
  1226. item.engineerName = item.engineer.split('-')[1];
  1227. item.cQualityEngineer1Name = item.cQualityEngineer1.split('-')[1];
  1228. item.cQualityEngineer2Name = item.cQualityEngineer2.split('-')[1];
  1229. item.cQualityEngineer3Name = item.cQualityEngineer3.split('-')[1];
  1230. item.cManufactureEngineerName = item.cManufactureEngineer.split('-')[1];
  1231. if (item.cQualityEngineer4 !== null && item.cQualityEngineer4 !== ''){
  1232. item.cQualityEngineer4Name = item.cQualityEngineer4.split('-')[1];
  1233. }
  1234. if (item.cQualityEngineer5 !== null && item.cQualityEngineer5 !== ''){
  1235. item.cQualityEngineer5Name = item.cQualityEngineer5.split('-')[1];
  1236. }
  1237. if (item.cQualityEngineer6 !== null && item.cQualityEngineer6 !== ''){
  1238. item.cQualityEngineer6Name = item.cQualityEngineer6.split('-')[1];
  1239. }
  1240. if (item.docEngineer !== null && item.docEngineer !== ''){
  1241. item.docEngineerName = item.docEngineer.split('-')[1];
  1242. }
  1243. if (item.docEngineer2 !== null && item.docEngineer2 !== ''){
  1244. item.docEngineer2Name = item.docEngineer2.split('-')[1];
  1245. }
  1246. if (item.ipqcHardTag !== null && item.ipqcHardTag !== ''){
  1247. item.ipqcHardTagName = item.ipqcHardTag.split('-')[1];
  1248. }
  1249. if (item.cQualityEngineer7 !== null && item.cQualityEngineer7 !== ''){
  1250. item.cQualityEngineer7Name = item.cQualityEngineer7.split('-')[1];
  1251. }
  1252. });
  1253. for (let i = 0; i < this.exportList.length; i++) {
  1254. if (this.exportList[i].responsibleDepartment === 'R001') {
  1255. this.exportList[i].projectLeader = this.exportList[i].projectManager.split("-")[1];
  1256. } else if (this.exportList[i].responsibleDepartment === 'R002') {
  1257. this.exportList[i].projectLeader = this.exportList[i].projectOwner.split("-")[1];
  1258. } else if (this.exportList[i].responsibleDepartment === 'R004') {
  1259. this.exportList[i].projectLeader = this.exportList[i].engineer.split("-")[1];
  1260. } else if (this.exportList[i].responsibleDepartment === 'R005') {
  1261. this.exportList[i].projectLeader = this.exportList[i].cQualityEngineer1.split("-")[1];
  1262. } else if (this.exportList[i].responsibleDepartment === 'R007') {
  1263. this.exportList[i].projectLeader = this.exportList[i].cQualityEngineer2.split("-")[1];
  1264. } else if (this.exportList[i].responsibleDepartment === 'R008') {
  1265. this.exportList[i].projectLeader = this.exportList[i].cQualityEngineer3.split("-")[1];
  1266. } else if (this.exportList[i].responsibleDepartment === 'R009') {
  1267. this.exportList[i].projectLeader = this.exportList[i].cManufactureEngineer.split("-")[1];
  1268. } else if (this.exportList[i].responsibleDepartment === 'R011') {
  1269. if (this.exportList[i].cQualityEngineer4 !== null && this.exportList[i].cQualityEngineer4 !== '') {
  1270. this.exportList[i].projectLeader = this.exportList[i].cQualityEngineer4.split("-")[1];
  1271. }
  1272. } else if (this.exportList[i].responsibleDepartment === 'R012') {
  1273. if (this.exportList[i].docEngineer !== null && this.exportList[i].docEngineer !== '') {
  1274. this.exportList[i].projectLeader = this.exportList[i].docEngineer.split("-")[1];
  1275. }
  1276. } else if (this.exportList[i].responsibleDepartment === 'R017') {
  1277. if (this.exportList[i].docEngineer2 !== null && this.exportList[i].docEngineer2 !== '') {
  1278. this.exportList[i].projectLeader = this.exportList[i].docEngineer2.split("-")[1];
  1279. }
  1280. } else if (this.exportList[i].responsibleDepartment === 'R013') {
  1281. if (this.exportList[i].cQualityEngineer5 !== null && this.exportList[i].cQualityEngineer5 !== '') {
  1282. this.exportList[i].projectLeader = this.exportList[i].cQualityEngineer5.split("-")[1];
  1283. }
  1284. } else if (this.exportList[i].responsibleDepartment === 'R014') {
  1285. if (this.exportList[i].cQualityEngineer6 !== null && this.exportList[i].cQualityEngineer6 !== '') {
  1286. this.exportList[i].projectLeader = this.exportList[i].cQualityEngineer6.split("-")[1];
  1287. }
  1288. } else if (this.exportList[i].responsibleDepartment === 'R015') {
  1289. if (this.exportList[i].ipqcHardTag !== null && this.exportList[i].ipqcHardTag !== '') {
  1290. this.exportList[i].projectLeader = this.exportList[i].ipqcHardTag.split("-")[1];
  1291. }
  1292. } else if (this.exportList[i].responsibleDepartment === 'R016') {
  1293. if (this.exportList[i].cQualityEngineer7 !== null && this.exportList[i].cQualityEngineer7 !== '') {
  1294. this.exportList[i].projectLeader = this.exportList[i].cQualityEngineer7.split("-")[1];
  1295. }
  1296. }
  1297. }
  1298. })
  1299. return this.exportList
  1300. },
  1301. startDownload () {},
  1302. finishDownload () {},
  1303. fields () {
  1304. let json = "{"
  1305. this.columnProjectList.forEach((item, index) => {
  1306. if (index == this.columnProjectList.length - 1) {
  1307. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\""
  1308. } else {
  1309. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\"" + ","
  1310. }
  1311. })
  1312. json += "}"
  1313. let s = eval("(" + json + ")")
  1314. return s
  1315. },
  1316. // 获取数据列表
  1317. getDataList (params) {
  1318. this.selectTypeFlag = params
  1319. this.searchData.limit = this.pageSize
  1320. this.searchData.page = this.pageIndex
  1321. if (this.$route.query.flag === '4') {
  1322. searchOverConfirmProgressList(this.searchData).then(({data}) => {
  1323. if (data.code === 0) {
  1324. this.dataList = data.page.list
  1325. console.log('list', this.dataList)
  1326. this.allPersonnelInfoList = data.list
  1327. this.pageIndex = data.page.currPage
  1328. this.pageSize = data.page.pageSize
  1329. this.totalPage = data.page.totalCount
  1330. this.dataList.forEach((item) => {
  1331. item.projectManagerName = item.projectManager.split('-')[1]
  1332. item.projectOwnerName = item.projectOwner.split('-')[1]
  1333. item.engineerName = item.engineer.split('-')[1]
  1334. item.cQualityEngineer1Name = item.cQualityEngineer1.split('-')[1]
  1335. item.cQualityEngineer2Name = item.cQualityEngineer2.split('-')[1]
  1336. item.cQualityEngineer3Name = item.cQualityEngineer3.split('-')[1]
  1337. item.cManufactureEngineerName = item.cManufactureEngineer.split('-')[1]
  1338. if (item.docEngineer === null || item.docEngineer === ''){
  1339. item.docEngineerName = ''
  1340. } else {
  1341. item.docEngineerName = item.docEngineer.split('-')[1]
  1342. }
  1343. if (item.docEngineer2 === null || item.docEngineer2 === ''){
  1344. item.docEngineer2Name = ''
  1345. } else {
  1346. item.docEngineer2Name = item.docEngineer2.split('-')[1]
  1347. }
  1348. if (item.cQualityEngineer4 === null || item.cQualityEngineer4 === ''){
  1349. item.cQualityEngineer4Name = ''
  1350. } else {
  1351. item.cQualityEngineer4Name = item.cQualityEngineer4.split('-')[1]
  1352. }
  1353. if (item.cQualityEngineer5 === null || item.cQualityEngineer5 === ''){
  1354. item.cQualityEngineer5Name = ''
  1355. } else {
  1356. item.cQualityEngineer5Name = item.cQualityEngineer5.split('-')[1]
  1357. }
  1358. if (item.cQualityEngineer6 === null || item.cQualityEngineer6 === ''){
  1359. item.cQualityEngineer6Name = ''
  1360. } else {
  1361. item.cQualityEngineer6Name = item.cQualityEngineer6.split('-')[1]
  1362. }
  1363. if (item.ipqcHardTag === null || item.ipqcHardTag === ''){
  1364. item.ipqcHardTagName = ''
  1365. } else {
  1366. item.ipqcHardTagName = item.ipqcHardTag.split('-')[1]
  1367. }
  1368. if (item.cQualityEngineer7 === null || item.cQualityEngineer7 === ''){
  1369. item.cQualityEngineer7Name = ''
  1370. } else {
  1371. item.cQualityEngineer7Name = item.cQualityEngineer7.split('-')[1]
  1372. }
  1373. })
  1374. console.log('list2', this.dataList)
  1375. }
  1376. // 获取全部人员信息用于下拉框
  1377. this.getAllPersonnelList()
  1378. })
  1379. } else if (this.$route.query.flag === '3') {
  1380. searchConfirmProgressList(this.searchData).then(({data}) => {
  1381. if (data.code === 0) {
  1382. this.dataList = data.page.list
  1383. this.allPersonnelInfoList = data.list
  1384. this.pageIndex = data.page.currPage
  1385. this.pageSize = data.page.pageSize
  1386. this.totalPage = data.page.totalCount
  1387. this.dataList.forEach((item) => {
  1388. item.projectManagerName = item.projectManager.split('-')[1]
  1389. item.projectOwnerName = item.projectOwner.split('-')[1]
  1390. item.engineerName = item.engineer.split('-')[1]
  1391. item.cQualityEngineer1Name = item.cQualityEngineer1.split('-')[1]
  1392. item.cQualityEngineer2Name = item.cQualityEngineer2.split('-')[1]
  1393. item.cQualityEngineer3Name = item.cQualityEngineer3.split('-')[1]
  1394. item.cManufactureEngineerName = item.cManufactureEngineer.split('-')[1]
  1395. if (item.docEngineer === null || item.docEngineer === ''){
  1396. item.docEngineerName = ''
  1397. } else {
  1398. item.docEngineerName = item.docEngineer.split('-')[1]
  1399. }
  1400. if (item.docEngineer2 === null || item.docEngineer2 === ''){
  1401. item.docEngineer2Name = ''
  1402. } else {
  1403. item.docEngineer2Name = item.docEngineer2.split('-')[1]
  1404. }
  1405. if (item.cQualityEngineer4 === null || item.cQualityEngineer4 === ''){
  1406. item.cQualityEngineer4Name = ''
  1407. } else {
  1408. item.cQualityEngineer4Name = item.cQualityEngineer4.split('-')[1]
  1409. }
  1410. if (item.cQualityEngineer5 === null || item.cQualityEngineer5 === ''){
  1411. item.cQualityEngineer5Name = ''
  1412. } else {
  1413. item.cQualityEngineer5Name = item.cQualityEngineer5.split('-')[1]
  1414. }
  1415. if (item.cQualityEngineer6 === null || item.cQualityEngineer6 === ''){
  1416. item.cQualityEngineer6Name = ''
  1417. } else {
  1418. item.cQualityEngineer6Name = item.cQualityEngineer6.split('-')[1]
  1419. }
  1420. if (item.ipqcHardTag === null || item.ipqcHardTag === ''){
  1421. item.ipqcHardTagName = ''
  1422. } else {
  1423. item.ipqcHardTagName = item.ipqcHardTag.split('-')[1]
  1424. }
  1425. if (item.cQualityEngineer7 === null || item.cQualityEngineer7 === ''){
  1426. item.cQualityEngineer7Name = ''
  1427. } else {
  1428. item.cQualityEngineer7Name = item.cQualityEngineer7.split('-')[1]
  1429. }
  1430. })
  1431. }
  1432. // 获取全部人员信息用于下拉框
  1433. this.getAllPersonnelList()
  1434. })
  1435. }else {
  1436. searchAllConfirmProgressList(this.searchData).then(({data}) => {
  1437. if (data.code === 0) {
  1438. let pjmList = []
  1439. // 遍历data.page.list
  1440. data.list.forEach((item) => {
  1441. if (item.projectOwner !== null && item.projectOwner !== '') {
  1442. if (!pjmList.includes(item.projectOwner.split('-')[0])) {
  1443. pjmList.push(item.projectOwner.split('-')[0])
  1444. }
  1445. }
  1446. })
  1447. if (pjmList.includes(this.$store.state.user.name) || this.$store.state.user.name === 'admin') {
  1448. this.dataList = data.page.list
  1449. this.allPersonnelInfoList = data.list
  1450. this.pageIndex = data.page.currPage
  1451. this.pageSize = data.page.pageSize
  1452. this.totalPage = data.page.totalCount
  1453. this.dataList.forEach((item) => {
  1454. item.projectManagerName = item.projectManager.split('-')[1]
  1455. item.projectOwnerName = item.projectOwner.split('-')[1]
  1456. item.engineerName = item.engineer.split('-')[1]
  1457. item.cQualityEngineer1Name = item.cQualityEngineer1.split('-')[1]
  1458. item.cQualityEngineer2Name = item.cQualityEngineer2.split('-')[1]
  1459. item.cQualityEngineer3Name = item.cQualityEngineer3.split('-')[1]
  1460. item.cManufactureEngineerName = item.cManufactureEngineer.split('-')[1]
  1461. if (item.docEngineer === null || item.docEngineer === ''){
  1462. item.docEngineerName = ''
  1463. } else {
  1464. item.docEngineerName = item.docEngineer.split('-')[1]
  1465. }
  1466. if (item.docEngineer2 === null || item.docEngineer2 === ''){
  1467. item.docEngineer2Name = ''
  1468. } else {
  1469. item.docEngineer2Name = item.docEngineer2.split('-')[1]
  1470. }
  1471. if (item.cQualityEngineer4 === null || item.cQualityEngineer4 === ''){
  1472. item.cQualityEngineer4Name = ''
  1473. } else {
  1474. item.cQualityEngineer4Name = item.cQualityEngineer4.split('-')[1]
  1475. }
  1476. if (item.cQualityEngineer5 === null || item.cQualityEngineer5 === ''){
  1477. item.cQualityEngineer5Name = ''
  1478. } else {
  1479. item.cQualityEngineer5Name = item.cQualityEngineer5.split('-')[1]
  1480. }
  1481. if (item.cQualityEngineer6 === null || item.cQualityEngineer6 === ''){
  1482. item.cQualityEngineer6Name = ''
  1483. } else {
  1484. item.cQualityEngineer6Name = item.cQualityEngineer6.split('-')[1]
  1485. }
  1486. if (item.ipqcHardTag === null || item.ipqcHardTag === ''){
  1487. item.ipqcHardTagName = ''
  1488. } else {
  1489. item.ipqcHardTagName = item.ipqcHardTag.split('-')[1]
  1490. }
  1491. if (item.cQualityEngineer7 === null || item.cQualityEngineer7 === ''){
  1492. item.cQualityEngineer7Name = ''
  1493. } else {
  1494. item.cQualityEngineer7Name = item.cQualityEngineer7.split('-')[1]
  1495. }
  1496. })
  1497. }
  1498. } else {
  1499. this.$route.query.flag = '3'
  1500. }
  1501. // 获取全部人员信息用于下拉框
  1502. this.getAllPersonnelList()
  1503. })
  1504. }
  1505. },
  1506. queryConfirmProgressList (params) {
  1507. this.selectTypeFlag = params
  1508. this.searchData.limit = this.pageSize
  1509. this.searchData.page = this.pageIndex
  1510. if (params !== null && params !== undefined) {
  1511. params.limit = this.pageSize
  1512. params.page = this.pageIndex
  1513. params.site = this.$store.state.user.site
  1514. params.userName = this.$store.state.user.name
  1515. } else {
  1516. params = this.searchData
  1517. }
  1518. if (this.$route.query.flag === '4') {
  1519. queryOverConfirmProgressList(params).then(({data}) => {
  1520. if (data.code === 0) {
  1521. this.dataList = data.page.list
  1522. this.allPersonnelInfoList = data.list
  1523. this.pageIndex = data.page.currPage
  1524. this.pageSize = data.page.pageSize
  1525. this.totalPage = data.page.totalCount
  1526. this.dataList.forEach((item) => {
  1527. item.projectManagerName = item.projectManager.split('-')[1]
  1528. item.projectOwnerName = item.projectOwner.split('-')[1]
  1529. item.engineerName = item.engineer.split('-')[1]
  1530. item.cQualityEngineer1Name = item.cQualityEngineer1.split('-')[1]
  1531. item.cQualityEngineer2Name = item.cQualityEngineer2.split('-')[1]
  1532. item.cQualityEngineer3Name = item.cQualityEngineer3.split('-')[1]
  1533. item.cManufactureEngineerName = item.cManufactureEngineer.split('-')[1]
  1534. if (item.docEngineer === null || item.docEngineer === ''){
  1535. item.docEngineerName = ''
  1536. } else {
  1537. item.docEngineerName = item.docEngineer.split('-')[1]
  1538. }
  1539. if (item.docEngineer2 === null || item.docEngineer2 === ''){
  1540. item.docEngineer2Name = ''
  1541. } else {
  1542. item.docEngineer2Name = item.docEngineer2.split('-')[1]
  1543. }
  1544. if (item.cQualityEngineer4 === null || item.cQualityEngineer4 === ''){
  1545. item.cQualityEngineer4Name = ''
  1546. } else {
  1547. item.cQualityEngineer4Name = item.cQualityEngineer4.split('-')[1]
  1548. }
  1549. if (item.cQualityEngineer5 === null || item.cQualityEngineer5 === ''){
  1550. item.cQualityEngineer5Name = ''
  1551. } else {
  1552. item.cQualityEngineer5Name = item.cQualityEngineer5.split('-')[1]
  1553. }
  1554. if (item.cQualityEngineer6 === null || item.cQualityEngineer6 === ''){
  1555. item.cQualityEngineer6Name = ''
  1556. } else {
  1557. item.cQualityEngineer6Name = item.cQualityEngineer6.split('-')[1]
  1558. }
  1559. if (item.ipqcHardTag === null || item.ipqcHardTag === ''){
  1560. item.ipqcHardTagName = ''
  1561. } else {
  1562. item.ipqcHardTagName = item.ipqcHardTag.split('-')[1]
  1563. }
  1564. if (item.cQualityEngineer7 === null || item.cQualityEngineer7 === ''){
  1565. item.cQualityEngineer7Name = ''
  1566. } else {
  1567. item.cQualityEngineer7Name = item.cQualityEngineer7.split('-')[1]
  1568. }
  1569. })
  1570. }
  1571. // 获取全部人员信息用于下拉框
  1572. this.getAllPersonnelList()
  1573. })
  1574. } else if (this.$route.query.flag === '3') {
  1575. queryConfirmProgressList(params).then(({data}) => {
  1576. if (data.code === 0) {
  1577. this.dataList = data.page.list
  1578. this.allPersonnelInfoList = data.list
  1579. this.pageIndex = data.page.currPage
  1580. this.pageSize = data.page.pageSize
  1581. this.totalPage = data.page.totalCount
  1582. this.dataList.forEach((item) => {
  1583. item.projectManagerName = item.projectManager.split('-')[1]
  1584. item.projectOwnerName = item.projectOwner.split('-')[1]
  1585. item.engineerName = item.engineer.split('-')[1]
  1586. item.cQualityEngineer1Name = item.cQualityEngineer1.split('-')[1]
  1587. item.cQualityEngineer2Name = item.cQualityEngineer2.split('-')[1]
  1588. item.cQualityEngineer3Name = item.cQualityEngineer3.split('-')[1]
  1589. item.cManufactureEngineerName = item.cManufactureEngineer.split('-')[1]
  1590. if (item.docEngineer === null || item.docEngineer === ''){
  1591. item.docEngineerName = ''
  1592. } else {
  1593. item.docEngineerName = item.docEngineer.split('-')[1]
  1594. }
  1595. if (item.docEngineer2 === null || item.docEngineer2 === ''){
  1596. item.docEngineer2Name = ''
  1597. } else {
  1598. item.docEngineer2Name = item.docEngineer2.split('-')[1]
  1599. }
  1600. if (item.cQualityEngineer4 === null || item.cQualityEngineer4 === ''){
  1601. item.cQualityEngineer4Name = ''
  1602. } else {
  1603. item.cQualityEngineer4Name = item.cQualityEngineer4.split('-')[1]
  1604. }
  1605. if (item.cQualityEngineer5 === null || item.cQualityEngineer5 === ''){
  1606. item.cQualityEngineer5Name = ''
  1607. } else {
  1608. item.cQualityEngineer5Name = item.cQualityEngineer5.split('-')[1]
  1609. }
  1610. if (item.cQualityEngineer6 === null || item.cQualityEngineer6 === ''){
  1611. item.cQualityEngineer6Name = ''
  1612. } else {
  1613. item.cQualityEngineer6Name = item.cQualityEngineer6.split('-')[1]
  1614. }
  1615. if (item.ipqcHardTag === null || item.ipqcHardTag === ''){
  1616. item.ipqcHardTagName = ''
  1617. } else {
  1618. item.ipqcHardTagName = item.ipqcHardTag.split('-')[1]
  1619. }
  1620. if (item.cQualityEngineer7 === null || item.cQualityEngineer7 === ''){
  1621. item.cQualityEngineer7Name = ''
  1622. } else {
  1623. item.cQualityEngineer7Name = item.cQualityEngineer7.split('-')[1]
  1624. }
  1625. })
  1626. }
  1627. // 获取全部人员信息用于下拉框
  1628. this.getAllPersonnelList()
  1629. })
  1630. }else {
  1631. queryAllConfirmProgressList(params).then(({data}) => {
  1632. if (data.code === 0) {
  1633. // let pjmList = []
  1634. // 遍历data.page.list
  1635. // data.list.forEach((item) => {
  1636. // if (item.projectOwner !== null && item.projectOwner !== ''){
  1637. // if (!pjmList.includes(item.projectOwner.split('-')[0])) {
  1638. // pjmList.push(item.projectOwner.split('-')[0])
  1639. // }
  1640. // }
  1641. // })
  1642. // if (pjmList.includes(this.$store.state.user.name)) {
  1643. this.dataList = data.page.list
  1644. this.pageIndex = data.page.currPage
  1645. this.pageSize = data.page.pageSize
  1646. this.totalPage = data.page.totalCount
  1647. this.dataList.forEach((item) => {
  1648. item.projectManagerName = item.projectManager.split('-')[1]
  1649. item.projectOwnerName = item.projectOwner.split('-')[1]
  1650. item.engineerName = item.engineer.split('-')[1]
  1651. item.cQualityEngineer1Name = item.cQualityEngineer1.split('-')[1]
  1652. item.cQualityEngineer2Name = item.cQualityEngineer2.split('-')[1]
  1653. item.cQualityEngineer3Name = item.cQualityEngineer3.split('-')[1]
  1654. item.cManufactureEngineerName = item.cManufactureEngineer.split('-')[1]
  1655. if (item.docEngineer === null || item.docEngineer === ''){
  1656. item.docEngineerName = ''
  1657. } else {
  1658. item.docEngineerName = item.docEngineer.split('-')[1]
  1659. }
  1660. if (item.docEngineer2 === null || item.docEngineer2 === ''){
  1661. item.docEngineer2Name = ''
  1662. } else {
  1663. item.docEngineer2Name = item.docEngineer2.split('-')[1]
  1664. }
  1665. if (item.cQualityEngineer4 === null || item.cQualityEngineer4 === ''){
  1666. item.cQualityEngineer4Name = ''
  1667. } else {
  1668. item.cQualityEngineer4Name = item.cQualityEngineer4.split('-')[1]
  1669. }
  1670. if (item.cQualityEngineer5 === null || item.cQualityEngineer5 === ''){
  1671. item.cQualityEngineer5Name = ''
  1672. } else {
  1673. item.cQualityEngineer5Name = item.cQualityEngineer5.split('-')[1]
  1674. }
  1675. if (item.cQualityEngineer6 === null || item.cQualityEngineer6 === ''){
  1676. item.cQualityEngineer6Name = ''
  1677. } else {
  1678. item.cQualityEngineer6Name = item.cQualityEngineer6.split('-')[1]
  1679. }
  1680. if (item.ipqcHardTag === null || item.ipqcHardTag === ''){
  1681. item.ipqcHardTagName = ''
  1682. } else {
  1683. item.ipqcHardTagName = item.ipqcHardTag.split('-')[1]
  1684. }
  1685. if (item.cQualityEngineer7 === null || item.cQualityEngineer7 === ''){
  1686. item.cQualityEngineer7Name = ''
  1687. } else {
  1688. item.cQualityEngineer7Name = item.cQualityEngineer7.split('-')[1]
  1689. }
  1690. })
  1691. // }
  1692. } else {
  1693. this.$route.query.flag = '3'
  1694. }
  1695. // 获取全部人员信息用于下拉框
  1696. this.getAllPersonnelList()
  1697. })
  1698. }
  1699. },
  1700. // 获取全部人员信息用于下拉框
  1701. getAllPersonnelList() {
  1702. let allPersonnelInfoDataList = JSON.parse(JSON.stringify(this.allPersonnelInfoList))
  1703. // 找出所有的同时过滤出唯一的 project owners, managers, and engineers
  1704. const allPersonnelList = [];
  1705. const projectOwnersMap = new Map();
  1706. const projectManagersMap = new Map();
  1707. const engineersMap = new Map();
  1708. allPersonnelInfoDataList.forEach((item) => {
  1709. if (item.projectOwner !== null && item.projectOwner !== '') {
  1710. // Handle project owners
  1711. if (!projectOwnersMap.has(item.projectOwner)) {
  1712. const projectOwnerId = projectOwnersMap.size + 1; // Incrementing by +1
  1713. projectOwnersMap.set(item.projectOwner, {
  1714. projectOwnerId,
  1715. projectOwner: item.projectOwner,
  1716. projectOwnerName: item.projectOwner.split('-')[1]
  1717. });
  1718. allPersonnelList.push(projectOwnersMap.get(item.projectOwner));
  1719. }
  1720. }
  1721. if (item.projectManager !== null && item.projectManager !== '') {
  1722. // Handle project managers
  1723. if (!projectManagersMap.has(item.projectManager)) {
  1724. const projectManagerId = projectManagersMap.size + 1;
  1725. projectManagersMap.set(item.projectManager, {
  1726. projectManagerId,
  1727. projectManager: item.projectManager,
  1728. projectManagerName: item.projectManager.split('-')[1]
  1729. });
  1730. allPersonnelList.push(projectManagersMap.get(item.projectManager));
  1731. }
  1732. }
  1733. if (item.engineer !== null && item.engineer !== '') {
  1734. // Handle engineers
  1735. if (!engineersMap.has(item.engineer)) {
  1736. const engineerId = engineersMap.size + 1;
  1737. engineersMap.set(item.engineer, {
  1738. engineerId,
  1739. engineer: item.engineer,
  1740. engineerName: item.engineer.split('-')[1]
  1741. });
  1742. allPersonnelList.push(engineersMap.get(item.engineer));
  1743. }
  1744. }
  1745. });
  1746. this.allPersonnelInfoList = allPersonnelList;
  1747. },
  1748. toMes (row) {
  1749. this.$router.push({ path: 'eam-eamProjectPartInfo', query: { projectNo: row.projectNo, testPartNo: row.testPartNo }})
  1750. },
  1751. // 每页数
  1752. sizeChangeHandle (val) {
  1753. this.pageSize = val
  1754. this.pageIndex = 1
  1755. if (this.selectTypeFlag !== null && this.selectTypeFlag !== undefined) {
  1756. this.queryConfirmProgressList(this.selectTypeFlag)
  1757. } else {
  1758. this.getDataList()
  1759. }
  1760. },
  1761. // 当前页
  1762. currentChangeHandle (val) {
  1763. this.pageIndex = val
  1764. if (this.selectTypeFlag !== null && this.selectTypeFlag !== undefined) {
  1765. this.queryConfirmProgressList(this.selectTypeFlag)
  1766. } else {
  1767. this.getDataList()
  1768. }
  1769. },
  1770. viewDocumentFile(row) {
  1771. this.confirmData = {
  1772. site: row.site,
  1773. documentType: row.documentType,
  1774. orderRef1: row.orderRef1,
  1775. orderRef2: row.orderRef2,
  1776. itemNo: row.itemNo,
  1777. userid: row.userid,
  1778. username: row.username,
  1779. userDisplay: row.userDisplay,
  1780. wantedConfirmDate: row.wantedConfirmDate,
  1781. confirmFlag: row.confirmFlag,
  1782. confirmedDate: new Date(),
  1783. createBy: row.createBy,
  1784. createDate: row.createDate,
  1785. confirmedBy: this.$store.state.user.userDisplay,
  1786. documentId: row.documentId,
  1787. remark: row.remark
  1788. }
  1789. let inData = {
  1790. orderRef1: row.site,
  1791. orderRef2: row.itemNo,
  1792. orderRef3: row.userid,
  1793. orderRef4: row.orderRef1,
  1794. orderRef5: row.orderRef2,
  1795. page: 1,
  1796. limit: 1000
  1797. }
  1798. searchProjectConfirmatorFileList(inData).then(({data}) => {
  1799. if (data && data.code === 0){
  1800. this.projectConfirmatorFileList = data.page.list;
  1801. }
  1802. })
  1803. this.viewDocumentFileVisible = true
  1804. },
  1805. closeViewDocumentFileVisible(){
  1806. this.viewDocumentFileVisible = false;
  1807. this.projectConfirmatorFileList = [];
  1808. },
  1809. // 查看文件
  1810. viewFile(row) {
  1811. // 预览文件
  1812. let image = ['jpg', 'jpeg', 'png', 'gif', 'bmp']
  1813. let video = ['mp4', 'avi', 'mov', 'wmv', 'flv']
  1814. let office = ['doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx']
  1815. let txt = ['txt']
  1816. let type = ''
  1817. let pdf = ['pdf']
  1818. if (image.includes(row.fileType.toLowerCase())) {
  1819. type = 'image/' + row.fileType
  1820. downLoadObjectFile(row).then(({data}) => {
  1821. const blob = new Blob([data], { type: type });
  1822. // 创建URL来生成预览
  1823. const fileURL = URL.createObjectURL(blob);
  1824. // 在新标签页中打开文件预览
  1825. const newTab = window.open(fileURL, '_blank')
  1826. })
  1827. }
  1828. else if (video.includes(row.fileType.toLowerCase())) {
  1829. type = 'video/' + row.fileType
  1830. downLoadObjectFile(row).then(({data}) => {
  1831. const blob = new Blob([data], { type: type });
  1832. // 创建URL来生成预览
  1833. const fileURL = URL.createObjectURL(blob);
  1834. // 在新标签页中打开文件预览
  1835. const newTab = window.open(fileURL, '_blank')
  1836. })
  1837. }
  1838. else if (txt.includes(row.fileType.toLowerCase())) {
  1839. type = 'text/plain'
  1840. downLoadObjectFile(row).then(({data}) => {
  1841. const blob = new Blob([data], { type: type });
  1842. // 创建URL来生成预览
  1843. const fileURL = URL.createObjectURL(blob);
  1844. // 在新标签页中打开文件预览
  1845. const newTab = window.open(fileURL, '_blank')
  1846. })
  1847. }
  1848. else if (office.includes(row.fileType.toLowerCase())) {
  1849. if (row.fileType.toLowerCase() === 'doc' || row.fileType.toLowerCase() === 'docx') {
  1850. type = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
  1851. } else if (row.fileType.toLowerCase() === 'ppt' || row.fileType.toLowerCase() === 'pptx') {
  1852. type = 'application/vnd.openxmlformats-officedocument.presentationml.presentation'
  1853. } else {
  1854. type = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
  1855. }
  1856. downLoadObjectFile(row).then(({data}) => {
  1857. const blob = new Blob([data], { type: type });
  1858. // 创建URL来生成预览
  1859. const fileURL = URL.createObjectURL(blob);
  1860. // 在新标签页中打开文件预览
  1861. const newTab = window.open(fileURL, '_blank')
  1862. })
  1863. }
  1864. else if (pdf.includes(row.fileType.toLowerCase())) {
  1865. type = 'application/pdf'
  1866. downLoadObjectFile(row).then(({data}) => {
  1867. const blob = new Blob([data], { type: type });
  1868. // 创建URL来生成预览
  1869. const fileURL = URL.createObjectURL(blob);
  1870. // 在新标签页中打开文件预览
  1871. const newTab = window.open(fileURL, '_blank')
  1872. })
  1873. }
  1874. else {
  1875. this.$message({
  1876. message: '不支持的文件类型',
  1877. type: 'warning'
  1878. })
  1879. }
  1880. },
  1881. // 下载
  1882. downloadFile (row) {
  1883. downLoadObjectFile(row)
  1884. .then(({data}) => {
  1885. // 不限制文件下载类型
  1886. const blob = new Blob([data], {type:'application/octet-stream;charset=utf-8'})
  1887. // 下载文件名称
  1888. const fileName = row.fileName
  1889. // a标签下载
  1890. const linkNode = document.createElement('a')
  1891. linkNode.download = fileName // a标签的download属性规定下载文件的名称
  1892. linkNode.style.display = 'none'
  1893. linkNode.href = URL.createObjectURL(blob) // 生成一个Blob URL
  1894. document.body.appendChild(linkNode)
  1895. linkNode.click() // 模拟在按钮上的一次鼠标单击
  1896. URL.revokeObjectURL(linkNode.href) // 释放URL 对象
  1897. document.body.removeChild(linkNode)
  1898. })
  1899. },
  1900. deleteFile(row) {
  1901. if (this.confirmData.confirmedBy === this.$store.state.user.userDisplay) {
  1902. this.$confirm('是否删除该文件?', '提示', {
  1903. confirmButtonText: '确定',
  1904. cancelButtonText: '取消',
  1905. type: 'warning'
  1906. }).then(() => {
  1907. let inData = {
  1908. id: row.id,
  1909. orderRef1: row.orderRef1,
  1910. orderRef2: row.orderRef2,
  1911. orderRef3: row.orderRef3,
  1912. orderRef4: row.orderRef4,
  1913. orderRef5: row.orderRef5,
  1914. createdBy: this.$store.state.user.name
  1915. }
  1916. deleteProjectFile(inData).then(({data}) => {
  1917. if (data && data.code === 0) {
  1918. this.$message({
  1919. message: '删除成功',
  1920. type: 'success'
  1921. })
  1922. this.getProjectConfirmatorFileList(this.confirmData)
  1923. } else {
  1924. this.$message({
  1925. message: '删除失败',
  1926. type: 'error'
  1927. })
  1928. }
  1929. })
  1930. }).catch(() => {
  1931. this.$message({
  1932. type: 'info',
  1933. message: '已取消删除'
  1934. });
  1935. });
  1936. } else {
  1937. this.$message({
  1938. message: '只有确认人员才能删除文件',
  1939. type: 'error'
  1940. })
  1941. }
  1942. },
  1943. confirmDocument(row) {
  1944. this.confirmData = {
  1945. site: row.site,
  1946. documentType: row.documentType,
  1947. orderRef1: row.orderRef1,
  1948. orderRef2: row.orderRef2,
  1949. itemNo: row.itemNo,
  1950. userid: row.userid,
  1951. username: row.username,
  1952. userDisplay: row.userDisplay,
  1953. wantedConfirmDate: row.wantedConfirmDate,
  1954. confirmFlag: row.confirmFlag,
  1955. confirmedDate: new Date(),
  1956. createBy: row.createBy,
  1957. createDate: row.createDate,
  1958. confirmedBy: this.$store.state.user.userDisplay,
  1959. documentId: row.documentId,
  1960. remark: row.remark
  1961. }
  1962. this.modalData = {
  1963. site: row.site,
  1964. projectId: row.projectId,
  1965. projectNo: row.projectNo,
  1966. projectDesc: row.projectDesc,
  1967. projectPartId: row.projectPartId,
  1968. testPartNo: row.testPartNo,
  1969. partDesc: row.partDesc,
  1970. customerNo: row.customerNo,
  1971. customerDesc: row.customerDesc,
  1972. buNo: row.buNo,
  1973. bu: row.site + '_' + row.buNo,
  1974. cProjectTypeDb: row.projectCategory,
  1975. }
  1976. this.getProjectConfirmatorFileList(row)
  1977. this.confirmVisible = true
  1978. },
  1979. getProjectConfirmatorFileList (row) {
  1980. let inData = {
  1981. orderRef1: row.site,
  1982. orderRef3: row.userid,
  1983. orderRef2: row.itemNo,
  1984. orderRef4: row.orderRef1,
  1985. orderRef5: row.orderRef2,
  1986. page: 1,
  1987. limit: 1000
  1988. }
  1989. searchProjectConfirmatorFileList(inData).then(({data}) => {
  1990. if (data && data.code === 0){
  1991. this.projectConfirmatorFileList = data.page.list;
  1992. }
  1993. })
  1994. },
  1995. closeUploadFileVisible(){
  1996. this.confirmVisible = false;
  1997. this.projectConfirmatorFileList = [];
  1998. this.fileList = [];
  1999. this.closeFileUpdate()
  2000. },
  2001. saveUploadFile(){
  2002. this.confirmData.confirmedDate = moment(this.confirmData.confirmedDate).utcOffset('+8').format('YYYY-MM-DD HH:mm:ss');
  2003. this.confirmData.confirmedBy = this.$store.state.user.userDisplay;
  2004. this.confirmData.userid = this.$store.state.user.id;
  2005. updateProjectDocumentConfirm(this.confirmData) .then(({data}) => {
  2006. if (data.code === 0) {
  2007. this.confirmVisible = false;
  2008. this.getDataList();
  2009. // 成功操作后触发事件
  2010. EventBus.$emit('updateProjectPartInfo');
  2011. }else {
  2012. this.$alert(data.msg, '错误', {
  2013. confirmButtonText: '确定'
  2014. })
  2015. }
  2016. })
  2017. let remark = this.confirmData.remark;
  2018. const formData = new FormData();
  2019. //片接文件
  2020. for (let i = 0; i < this.fileList.length; i++) {
  2021. formData.append("file",this.fileList[i].raw)
  2022. }
  2023. formData.append("folder", 'projectPDConfirmFiles');
  2024. formData.append("orderRef1", this.confirmData.site);
  2025. formData.append("orderRef4", this.confirmData.orderRef1);
  2026. formData.append("orderRef2", this.confirmData.itemNo);
  2027. formData.append("orderRef3", this.confirmData.userid);
  2028. formData.append("orderRef5", this.confirmData.orderRef2);
  2029. formData.append("createdBy", this.$store.state.user.name);
  2030. formData.append("updatedBy", this.$store.state.user.name);
  2031. formData.append("remark", remark);
  2032. uploadProjectFile(formData).then(({data}) => {
  2033. if (data.code === 0) {
  2034. this.$message.success('操作成功');
  2035. //清空文件上传记录
  2036. this.$refs.uploadFile.clearFiles();
  2037. this.closeFileUpdate();
  2038. this.projectConfirmatorFileList = [];
  2039. }else {
  2040. this.$alert(data.msg, '错误', {
  2041. confirmButtonText: '确定'
  2042. })
  2043. }
  2044. })
  2045. },
  2046. closeFileUpdate() {
  2047. this.fileName = '';
  2048. this.uploadDialog = false;
  2049. //this.fileRemark = ''
  2050. this.$refs.uploadFile.clearFiles()
  2051. this.fileList = []
  2052. },
  2053. /*选择上传文件时*/
  2054. onChange(file,fileList){
  2055. const newFileName = file.name;
  2056. if (this.fileName) {
  2057. this.fileName += ', ' + newFileName;
  2058. } else {
  2059. this.fileName = newFileName;
  2060. }
  2061. this.fileList.push(file);
  2062. },
  2063. triggerUpload() {
  2064. this.$refs.uploadFile.$el.querySelector('input').click()
  2065. },
  2066. formatDate(row, column) {
  2067. // row 是当前行的数据对象
  2068. // column 是当前列的属性信息对象
  2069. const date = row[column.property];
  2070. if (date) {
  2071. const s = new Date(date).toLocaleDateString('zh-CN', { year: 'numeric', month: '2-digit', day: '2-digit' });
  2072. return s.replace(/\//g, '-')
  2073. } else {
  2074. return '';
  2075. }
  2076. },
  2077. rowStyle ({row}) {
  2078. },
  2079. getCombinedDocumentType(row) {
  2080. // 根据您的需求,组合或拼接需要显示的字段
  2081. if (row.documentType === null || row.documentType === undefined) {
  2082. return row.documentDesc
  2083. }else {
  2084. return row.documentType
  2085. }
  2086. },
  2087. // 校验用户是否收藏
  2088. favoriteIsOk () {
  2089. let userFavorite = {
  2090. userId: this.$store.state.user.id,
  2091. languageCode: this.$i18n.locale
  2092. }
  2093. userFavoriteList(userFavorite).then(({data}) => {
  2094. for (let i = 0; i < data.list.length; i++) {
  2095. if (this.$route.meta.menuId === data.list[i].menuId) {
  2096. this.favorite = true
  2097. }
  2098. }
  2099. })
  2100. },
  2101. // 收藏 OR 取消收藏
  2102. favoriteFunction () {
  2103. let userFavorite = {
  2104. userId: this.$store.state.user.id,
  2105. functionId: this.$route.meta.menuId,
  2106. }
  2107. if (this.favorite) {
  2108. removeUserFavorite(userFavorite).then(({data}) => {
  2109. this.$message.success(data.msg)
  2110. this.favorite = false
  2111. })
  2112. } else {
  2113. // 收藏
  2114. saveUserFavorite(userFavorite).then(({data}) => {
  2115. this.$message.success(data.msg)
  2116. this.favorite = true
  2117. })
  2118. }
  2119. },
  2120. // 动态列开始 获取 用户保存的 格式列
  2121. async getTableUserColumn(tableId, columnId) {
  2122. let queryTableUser = {
  2123. userId: this.$store.state.user.name,
  2124. functionId: this.$route.meta.menuId,
  2125. tableId: tableId,
  2126. status: true,
  2127. languageCode: this.$i18n.locale
  2128. }
  2129. await getTableUserListLanguage(queryTableUser).then(({data}) => {
  2130. if (data.rows.length > 0) {
  2131. //this.columnList1 = []
  2132. switch (columnId) {
  2133. case 1:
  2134. this.columnProjectList = data.rows
  2135. break;
  2136. // case 2:
  2137. // this.detailColumnList = data.rows
  2138. // break;
  2139. // case 3:
  2140. // this.columnList2 = data.rows
  2141. // break;
  2142. // case 4:
  2143. // this.columnList3 = data.rows
  2144. // break;
  2145. }
  2146. } else {
  2147. this.getColumnList(tableId, columnId)
  2148. }
  2149. })
  2150. },
  2151. // 获取 tableDefault 列
  2152. async getColumnList (tableId, columnId) {
  2153. let queryTable= {
  2154. functionId: this.$route.meta.menuId,
  2155. tableId: tableId,
  2156. languageCode: this.$i18n.locale
  2157. }
  2158. await getTableDefaultListLanguage(queryTable).then(({data}) => {
  2159. if (!data.rows.length == 0) {
  2160. switch (columnId) {
  2161. case 1:
  2162. this.columnProjectList = data.rows
  2163. break;
  2164. // case 2:
  2165. // this.detailColumnList = data.rows
  2166. // break;
  2167. // case 3:
  2168. // this.columnList2 = data.rows
  2169. // break;
  2170. // case 4:
  2171. // this.columnList3 = data.rows
  2172. // break;
  2173. }
  2174. } else {
  2175. // this.showDefault = true.
  2176. }
  2177. })
  2178. },
  2179. //获取按钮的权限数据
  2180. getButtonAuthData () {
  2181. let searchFlag = this.isAuth(this.menuId+":search")
  2182. let saveFlag = this.isAuth(this.menuId+":save")
  2183. let updateFlag = this.isAuth(this.menuId+":update")
  2184. let deleteFlag = this.isAuth(this.menuId+":delete")
  2185. //处理页面的权限数据
  2186. this.authSearch = !searchFlag
  2187. this.authSave = !saveFlag
  2188. this.authUpdate = !updateFlag
  2189. this.authDelete = !deleteFlag
  2190. },
  2191. },
  2192. };
  2193. </script>
  2194. <style scoped>
  2195. .red-text /deep/ .el-input__inner {
  2196. color: red;
  2197. }
  2198. .card-item {
  2199. cursor: pointer;
  2200. margin-bottom: 20px;
  2201. transition: transform 0.3s, box-shadow 0.3s;
  2202. overflow: hidden;
  2203. //padding: 10px;
  2204. display: flex;
  2205. flex-direction: column;
  2206. justify-content: space-between;
  2207. align-items: center;
  2208. height: 208px;
  2209. width: 230px;
  2210. margin-left: 40px;
  2211. margin-top: 10px;
  2212. }
  2213. .card-item:hover {
  2214. transform: translateY(-5px);
  2215. box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
  2216. }
  2217. .card-title {
  2218. font-size: 18px;
  2219. font-weight: bold;
  2220. margin-bottom: 10px;
  2221. margin-top: 20px;
  2222. }
  2223. .card-count {
  2224. font-size: 55px;
  2225. color: #17B3A3;
  2226. text-align: center;
  2227. font-weight: bold;
  2228. margin-top: 50px;
  2229. }
  2230. .project-list {
  2231. font-size: 12px;
  2232. color: #333;
  2233. line-height: 1.5;
  2234. margin-bottom: 5px;
  2235. }
  2236. .el-divider {
  2237. margin: 10px 0;
  2238. }
  2239. </style>
  2240. <style lang="scss" scoped>
  2241. .el-table /deep/ .cell{
  2242. height: auto;
  2243. line-height: 1.5;
  2244. }
  2245. </style>
  2246. ```