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.

4000 lines
145 KiB

  1. <template>
  2. <div class="mod-config">
  3. <div>
  4. <span @click="favoriteFunction()">
  5. <icon-svg :name="favorite?'xiangqufill':'xiangqu'" class="sl-svg"></icon-svg>
  6. </span>
  7. </div>
  8. <el-form :inline="true" label-position="top" :model="searchData" @keyup.enter.native="getDataList()">
  9. <el-form-item :label="'BU'">
  10. <el-select v-model="searchData.buDesc" placeholder="请选择" clearable style="width: 130px">
  11. <el-option
  12. v-for = "i in userBuList"
  13. :key = "i.buNo"
  14. :label = "i.buDesc"
  15. :value = "i.buDesc">
  16. </el-option>
  17. </el-select>
  18. </el-form-item>
  19. <el-form-item :label="'项目编码'">
  20. <el-input v-model="searchData.projectNo" style="width: 120px"></el-input>
  21. </el-form-item>
  22. <el-form-item :label="'项目名称'">
  23. <el-input v-model="searchData.projectDesc" style="width: 120px"></el-input>
  24. </el-form-item>
  25. <el-form-item :label="'客户编码'">
  26. <el-input v-model="searchData.customerNo" style="width: 120px"></el-input>
  27. </el-form-item>
  28. <el-form-item :label="'客户名称'">
  29. <el-input v-model="searchData.customerDesc" style="width: 120px"></el-input>
  30. </el-form-item>
  31. <el-form-item :label="'项目分类'">
  32. <el-select v-model="searchData.projectCategory" placeholder="请选择" clearable style="width: 130px">
  33. <el-option
  34. v-for = "i in projectCategoryList"
  35. :key = "i.projectCategory"
  36. :label = "i.projectCategory"
  37. :value = "i.projectCategory">
  38. </el-option>
  39. </el-select>
  40. </el-form-item>
  41. <!-- <el-form-item :label="'项目状态'">-->
  42. <!-- <el-select v-model="searchData.status" placeholder="请选择" clearable style="width: 130px">-->
  43. <!-- <el-option-->
  44. <!-- v-for = "i in statusList"-->
  45. <!-- :key = "i.status"-->
  46. <!-- :label = "i.status"-->
  47. <!-- :value = "i.status">-->
  48. <!-- </el-option>-->
  49. <!-- </el-select>-->
  50. <!-- </el-form-item>-->
  51. <el-form-item :label="'PM/Sales'">
  52. <el-select v-model="searchData.projectManager" placeholder="请选择" clearable style="width: 130px">
  53. <el-option
  54. v-for = "i in projectManagersList"
  55. :key = "i.projectManagerId"
  56. :label = "i.projectManagerName"
  57. :value = "i.projectManager">
  58. </el-option>
  59. </el-select>
  60. </el-form-item>
  61. <el-form-item :label="'PjM'">
  62. <el-select v-model="searchData.projectOwner" placeholder="请选择" clearable style="width: 130px">
  63. <el-option
  64. v-for = "i in projectOwnersList"
  65. :key = "i.projectOwnerId"
  66. :label = "i.projectOwnerName"
  67. :value = "i.projectOwner">
  68. </el-option>
  69. </el-select>
  70. </el-form-item>
  71. <el-form-item :label="'Engineer'">
  72. <el-select v-model="searchData.engineer" placeholder="请选择" clearable style="width: 130px">
  73. <el-option
  74. v-for = "i in engineersList"
  75. :key = "i.engineerId"
  76. :label = "i.engineerName"
  77. :value = "i.engineer">
  78. </el-option>
  79. </el-select>
  80. </el-form-item>
  81. <el-form-item :label="'区域'">
  82. <el-select clearable v-model="searchData.cProjectRegion" style="width: 120px">
  83. <el-option
  84. v-for = "i in cProjectRegionList"
  85. :key = "i.cProjectRegion"
  86. :label = "i.cProjectRegion"
  87. :value = "i.cProjectRegion">
  88. </el-option>
  89. </el-select>
  90. </el-form-item>
  91. <el-form-item :label="'立项日期:'">
  92. <el-date-picker
  93. style="width: 120px"
  94. v-model="searchData.startDate"
  95. type="date"
  96. value-format="yyyy-MM-dd"
  97. placeholder="选择日期">
  98. </el-date-picker>
  99. -
  100. <el-date-picker
  101. style="width: 120px"
  102. v-model="searchData.endDate"
  103. type="date"
  104. value-format="yyyy-MM-dd"
  105. placeholder="选择日期">
  106. </el-date-picker>
  107. </el-form-item>
  108. <el-form-item :label="' '">
  109. <el-button @click="agencyMatter()">查询</el-button>
  110. <el-button type="primary" @click="addModal()">新增</el-button>
  111. <download-excel
  112. :fields="fields()"
  113. :data="exportData"
  114. type="xls"
  115. :name="exportName"
  116. :header="exportHeader"
  117. :footer="exportFooter"
  118. :fetch="createExportData"
  119. :before-generate="startDownload"
  120. :before-finish="finishDownload"
  121. worksheet="导出信息"
  122. class="el-button el-button--primary el-button--medium">
  123. {{ "导出" }}
  124. </download-excel>
  125. </el-form-item>
  126. </el-form>
  127. <el-table
  128. :height="this.height + 100"
  129. :data="dataList"
  130. ref="mainTable"
  131. highlight-current-row
  132. @row-click="projectPartClickRow"
  133. @current-change="changeCurrentRow"
  134. border
  135. style="width: 100%;">
  136. <el-table-column
  137. v-for="(item,index) in columnList" :key="index"
  138. :sortable="item.columnSortable"
  139. :prop="item.columnProp"
  140. :header-align="item.headerAlign"
  141. :show-overflow-tooltip="item.showOverflowTooltip"
  142. :align="item.align"
  143. :fixed="item.fixed==''?false:item.fixed"
  144. :min-width="item.columnWidth"
  145. :label="item.columnLabel">
  146. <template slot-scope="scope">
  147. <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
  148. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  149. </template>
  150. </el-table-column>
  151. <el-table-column
  152. fixed="right"
  153. header-align="center"
  154. align="center"
  155. width="208"
  156. label="操作">
  157. <template slot-scope="scope">
  158. <a type="text" size="small" @click="addProjectPartModal(scope.row)">新增产品</a>
  159. <a v-if="scope.row.status !== '已量产'" type="text" size="small" @click="updateModal(scope.row)">修改</a>
  160. <a type="text" size="small" @click="eamProjectInfoDelete(scope.row)">删除</a>
  161. </template>
  162. </el-table-column>
  163. </el-table>
  164. <el-pagination
  165. @size-change="sizeChangeHandle"
  166. @current-change="currentChangeHandle"
  167. :current-page="pageIndex"
  168. :page-sizes="[20, 50, 100, 200, 500]"
  169. :page-size="pageSize"
  170. :total="totalPage"
  171. layout="total, sizes, prev, pager, next, jumper">
  172. </el-pagination>
  173. <el-dialog title="项目" :close-on-click-modal="false" @close="closeClear" v-drag :visible.sync="modalFlag" width="600px">
  174. <!-- <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">-->
  175. <!-- <el-form-item label="是否在用" prop="active" :rules="rules.activeType">-->
  176. <!-- <el-select filterable v-model="modalData.active" style="width: 140px">-->
  177. <!-- <el-option label="是" value="Y"></el-option>-->
  178. <!-- <el-option label="否" value="N"></el-option>-->
  179. <!-- </el-select>-->
  180. <!-- </el-form-item>-->
  181. <!-- </el-form>-->
  182. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  183. <el-form-item label="BU" prop="bu" :rules="rules.bu">
  184. <el-select v-model="modalData.bu" placeholder="请选择" :disabled="modalDisableFlag" style="width: 110px">
  185. <el-option
  186. v-for = "i in userBuList"
  187. :key = "i.buNo"
  188. :label = "i.buDesc"
  189. :value = "i.buNo">
  190. <span style="float: right; color: #8492a6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; font-size: 11px;width: 60px">
  191. {{ i.buDesc }}
  192. </span>
  193. </el-option>
  194. </el-select>
  195. </el-form-item>
  196. <el-form-item label="项目编码" prop="projectNo" :rules="rules.projectNo">
  197. <el-input v-model="modalData.projectNo" :disabled="modalPartDisableFlag" style="width: 110px"></el-input>
  198. </el-form-item>
  199. <el-form-item label="项目名称" prop="projectDesc" v-if="!modalPartDisableFlag" :rules="rules.projectDesc">
  200. <el-input v-model="modalData.projectDesc" :disabled="modalPartDisableFlag" style="width: 170px"></el-input>
  201. </el-form-item>
  202. <el-form-item label="项目名称" prop="projectDesc" v-if="modalPartDisableFlag" :rules="rules.projectDesc">
  203. <el-input v-model="modalData.projectDesc" :disabled="modalPartDisableFlag" style="width: 294px"></el-input>
  204. </el-form-item>
  205. <el-form-item label="区域" prop="cProjectRegion" v-if="!modalPartDisableFlag" :rules="rules.cProjectRegion">
  206. <el-select v-model="modalData.cProjectRegion" placeholder="请选择" :disabled="modalPartDisableFlag" clearable style="width: 110px">
  207. <el-option
  208. v-for = "i in cProjectRegionList"
  209. :key = "i.cProjectRegion"
  210. :label = "i.cProjectRegion"
  211. :value = "i.cProjectRegion">
  212. </el-option>
  213. </el-select>
  214. </el-form-item>
  215. </el-form>
  216. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  217. <el-form-item prop="customerNo">
  218. <span slot="label" style="">
  219. <a herf="#" @click="getBaseList(509)">客户编码</a>
  220. <a herf="#" @click="newCustomer">新客户</a>
  221. </span>
  222. <el-input v-model="modalData.customerNo" @blur="customerNoBlur" style="width: 110px"></el-input>
  223. </el-form-item>
  224. <el-form-item label="客户名称" prop="customerDesc">
  225. <el-input v-model="modalData.customerDesc" disabled style="width: 293px"></el-input>
  226. </el-form-item>
  227. <el-form-item label="优先级" prop="priority" :rules="rules.priority">
  228. <el-select v-model="modalData.priority" placeholder="请选择" clearable style="width: 110px">
  229. <el-option
  230. v-for = "i in priorityList"
  231. :key = "i.priority"
  232. :label = "i.priority"
  233. :value = "i.priority">
  234. </el-option>
  235. </el-select>
  236. </el-form-item>
  237. </el-form>
  238. <el-form :inline="true" v-if="this.modalData.flag !== '1' && this.modalData.flag !== '2'" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  239. <el-form-item label="项目料号" prop="testPartNo" :rules="rules.testPartNo" >
  240. <el-input v-model="modalData.testPartNo" style="width: 110px"></el-input>
  241. </el-form-item>
  242. <el-form-item label="料号描述" prop="partDesc" :rules="rules.partDesc" >
  243. <el-input v-model="modalData.partDesc" style="width: 293px"></el-input>
  244. </el-form-item>
  245. <el-form-item label="料号状态" prop="partType" :rules="rules.partType">
  246. <el-select v-model="modalData.partType" clearable style="width: 110px">
  247. <el-option label = "Active" value = "Active"></el-option>
  248. <el-option label = "On hold" value = "On hold"></el-option>
  249. <el-option label = "Cancel" value = "Cancel"></el-option>
  250. <el-option label = "EOL" value = "EOL"></el-option>
  251. </el-select>
  252. </el-form-item>
  253. </el-form>
  254. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  255. <el-form-item prop="cQualityEngineer6Name" :rules="rules.cQualityEngineer6Name">
  256. <span slot="label" style="">
  257. <a herf="#" @click="getBaseList(2008)">IQC</a>
  258. </span>
  259. <el-input v-model="modalData.cQualityEngineer6Name" disabled style="width: 110px"></el-input>
  260. </el-form-item>
  261. <el-form-item :label="'立项日期:'">
  262. <el-date-picker
  263. style="width: 110px"
  264. v-model="modalData.projectCreationDate"
  265. type="date"
  266. value-format="yyyy-MM-dd"
  267. placeholder="选择日期">
  268. </el-date-picker>
  269. </el-form-item>
  270. <el-form-item label="项目分类" prop="projectCategory" :rules="rules.projectCategory">
  271. <el-select v-model="modalData.projectCategory" placeholder="请选择" clearable style="width: 170px">
  272. <el-option
  273. v-for = "i in projectCategoryList"
  274. :key = "i.projectCategory"
  275. :label = "i.projectCategory"
  276. :value = "i.projectCategory">
  277. </el-option>
  278. </el-select>
  279. </el-form-item>
  280. <el-form-item :label="'预计完成日期:'" :rules="rules.needDate">
  281. <el-date-picker
  282. style="width: 110px"
  283. v-model="modalData.needDate"
  284. type="date"
  285. value-format="yyyy-MM-dd"
  286. placeholder="选择日期">
  287. </el-date-picker>
  288. </el-form-item>
  289. <!-- <el-form-item label="文档类型ID" prop="documentTypeId" :rules="rules.documentTypeIdType">-->
  290. <!-- <el-input v-model="modalData.documentTypeId" style="width: 230px"></el-input>-->
  291. <!-- </el-form-item>-->
  292. </el-form>
  293. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  294. <!-- <el-form-item prop="projectManager" :rules="rules.projectManager">-->
  295. <!-- <el-input v-model="modalData.projectManager" disabled style="width: 110px"></el-input>-->
  296. <!-- </el-form-item>-->
  297. <el-form-item label="PM/Sales" prop="projectManagerName" :rules="rules.projectManagerName">
  298. <span slot="label" style="" @click="projectManagerFlag = true "><a herf="#">PM/Sales</a></span>
  299. <el-input v-model="modalData.projectManagerName" disabled style="width: 110px"></el-input>
  300. </el-form-item>
  301. <el-form-item label="PjM" prop="projectOwner" :rules="rules.projectOwner">
  302. <span slot="label" style="" @click="projectOwnerFlag = true"><a herf="#">PjM</a></span>
  303. <el-input v-model="modalData.projectOwnerName" disabled style="width: 110px"></el-input>
  304. </el-form-item>
  305. <el-form-item label="FQC1" prop="cQualityEngineer3Name" :rules="rules.cQualityEngineer3Name">
  306. <span slot="label" style="" @click="FQC1Flag = true"><a herf="#">FQC1</a></span>
  307. <el-input v-model="modalData.cQualityEngineer3Name" disabled style="width: 78px"></el-input>
  308. </el-form-item>
  309. <el-form-item prop="cQualityEngineer5Name" :rules="rules.cQualityEngineer5Name">
  310. <span slot="label" style="">
  311. <a herf="#" @click="getBaseList(2007)">FQC2</a>
  312. </span>
  313. <el-input v-model="modalData.cQualityEngineer5Name" disabled style="width: 78px"></el-input>
  314. </el-form-item>
  315. <!-- <el-form-item prop="cQualityEngineer2" :rules="rules.cQualityEngineer2">-->
  316. <!-- <el-input v-model="modalData.cQualityEngineer2" disabled style="width: 110px"></el-input>-->
  317. <!-- </el-form-item>-->
  318. <el-form-item label="IPQC-Lam/Pri/Etch/Slit" prop="cQualityEngineer1Name" :rules="rules.cQualityEngineer1Name">
  319. <span slot="label" style="" @click="engineerFlag = true"><a herf="#">IPQC-Lam/Pri/Etch/Slit</a></span>
  320. <el-input v-model="modalData.cQualityEngineer1Name" disabled style="width: 110px"></el-input>
  321. </el-form-item>
  322. <el-form-item label="IPQC-Converting" prop="cQualityEngineer2Name" :rules="rules.cQualityEngineer2Name">
  323. <span slot="label" style="" @click="IPQCFlag = true"><a herf="#">IPQC-Converting</a></span>
  324. <el-input v-model="modalData.cQualityEngineer2Name" disabled style="width: 110px"></el-input>
  325. </el-form-item>
  326. <el-form-item label="Engineer" prop="engineerName" :rules="rules.engineerName">
  327. <span slot="label" style="" @click="engineer6Flag = true"><a herf="#">Engineer</a></span>
  328. <el-input v-model="modalData.engineerName" disabled style="width: 110px"></el-input>
  329. </el-form-item>
  330. <el-form-item label="MFG" prop="cManufactureEngineerName" :rules="rules.cManufactureEngineerName">
  331. <span slot="label" style="" @click="MFGlag = true"><a herf="#">MFG</a></span>
  332. <el-input v-model="modalData.cManufactureEngineerName" disabled style="width: 79px"></el-input>
  333. </el-form-item>
  334. <el-form-item prop="cQualityEngineer4Name" :rules="rules.cQualityEngineer4Name">
  335. <span slot="label" style="">
  336. <a herf="#" @click="getBaseList(2006)">SQE</a>
  337. </span>
  338. <el-input v-model="modalData.cQualityEngineer4Name" disabled style="width: 79px"></el-input>
  339. </el-form-item>
  340. <el-form-item label="文档工程师" prop="docEngineerName" :rules="rules.docEngineerName">
  341. <span slot="label" style="" @click="docEngineerFlag = true"><a herf="#">文档工程师</a></span>
  342. <el-input v-model="modalData.docEngineerName" disabled style="width: 110px"></el-input>
  343. </el-form-item>
  344. </el-form>
  345. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  346. <el-button type="primary" @click="saveData()">保存</el-button>
  347. <el-button @click="modalFlag = false">关闭</el-button>
  348. </el-footer>
  349. </el-dialog>
  350. <!--新客户客户名称输入弹框-->
  351. <el-dialog title="新客户" :close-on-click-modal="false" @close="closeNewCustomer" v-drag :visible.sync="newCustomerFlag" width="348px">
  352. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  353. <el-form-item label="客户名称" prop="customerDesc" :rules="rules.customerDesc">
  354. <el-input v-model="modalData.customerDesc" style="width: 313px"></el-input>
  355. </el-form-item>
  356. </el-form>
  357. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  358. <el-button type="primary" @click="saveNewCustomer()">保存</el-button>
  359. <el-button @click="newCustomerFlag = false">关闭</el-button>
  360. </el-footer>
  361. </el-dialog>
  362. <!--项目经理选择弹框-->
  363. <el-dialog title="PM/Sales" @close="closeProjectManagerInfoDialog" @open="openProjectManagerInfoDialog" :visible.sync="projectManagerFlag" width="559px" v-drag>
  364. <el-form inline="inline" label-position="top" :model="searchBusinessData" style="margin-left: 7px;margin-top: -5px;">
  365. <el-form-item label="用户账号">
  366. <el-input v-model="searchBusinessData.username" clearable style="width: 110px"></el-input>
  367. </el-form-item>
  368. <el-form-item label="用户名">
  369. <el-input v-model="searchBusinessData.userDisplay" clearable style="width: 110px"></el-input>
  370. </el-form-item>
  371. <el-form-item label="是否在用">
  372. <el-select filterable v-model="searchBusinessData.active" style="width: 140px">
  373. <el-option label="是" value="Y"></el-option>
  374. <el-option label="否" value="N"></el-option>
  375. </el-select>
  376. </el-form-item>
  377. <el-form-item label=" ">
  378. <el-button type="primary" style="padding: 3px 12px" @click="searchBusinessInfoList()">查询</el-button>
  379. </el-form-item>
  380. </el-form>
  381. <el-table
  382. :height="height + 110"
  383. :data="businessDataList"
  384. stripe
  385. highlight-current-row
  386. border
  387. @row-dblclick="projectManagerRowDblclick"
  388. style="width: 100%;">
  389. <el-table-column
  390. prop="username"
  391. header-align="center"
  392. align="center"
  393. label="用户账号">
  394. </el-table-column>
  395. <el-table-column
  396. prop="userDisplay"
  397. header-align="center"
  398. align="center"
  399. label="用户名">
  400. </el-table-column>
  401. <el-table-column
  402. prop="active"
  403. header-align="center"
  404. align="center"
  405. label="是否在用">
  406. </el-table-column>
  407. </el-table>
  408. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  409. <el-button @click="projectManagerFlag = false">关闭</el-button>
  410. </el-footer>
  411. </el-dialog>
  412. <!--PjM选择弹框-->
  413. <el-dialog title="PjM" @close="closeProjectOwnerInfoDialog" @open="openProjectOwnerInfoDialog" :visible.sync="projectOwnerFlag" width="559px" v-drag>
  414. <el-form inline="inline" label-position="top" :model="searchBusinessData1" style="margin-left: 7px;margin-top: -5px;">
  415. <el-form-item label="用户账号">
  416. <el-input v-model="searchBusinessData1.username" clearable style="width: 110px"></el-input>
  417. </el-form-item>
  418. <el-form-item label="用户名">
  419. <el-input v-model="searchBusinessData1.userDisplay" clearable style="width: 110px"></el-input>
  420. </el-form-item>
  421. <el-form-item label="是否在用">
  422. <el-select filterable v-model="searchBusinessData1.active" style="width: 140px">
  423. <el-option label="是" value="Y"></el-option>
  424. <el-option label="否" value="N"></el-option>
  425. </el-select>
  426. </el-form-item>
  427. <el-form-item label=" ">
  428. <el-button type="primary" style="padding: 3px 12px" @click="searchBusinessInfoList1()">查询</el-button>
  429. </el-form-item>
  430. </el-form>
  431. <el-table
  432. :height="height + 110"
  433. :data="businessDataList1"
  434. stripe
  435. highlight-current-row
  436. border
  437. @row-dblclick="projectOwnerRowDblclick"
  438. style="width: 100%;">
  439. <el-table-column
  440. prop="username"
  441. header-align="center"
  442. align="center"
  443. label="用户账号">
  444. </el-table-column>
  445. <el-table-column
  446. prop="userDisplay"
  447. header-align="center"
  448. align="center"
  449. label="用户名">
  450. </el-table-column>
  451. <el-table-column
  452. prop="active"
  453. header-align="center"
  454. align="center"
  455. label="是否在用">
  456. </el-table-column>
  457. </el-table>
  458. <el-footer style="height:40px;margin-top:
  459. 10px;text-align:center">
  460. <el-button @click="projectOwnerFlag = false">关闭</el-button>
  461. </el-footer>
  462. </el-dialog>
  463. <!--工程师选择弹框-->
  464. <el-dialog title="Engineer" @close="closeEngineer6InfoDialog" @open="openEngineer6InfoDialog" :visible.sync="engineer6Flag" width="559px" v-drag>
  465. <el-form inline="inline" label-position="top" :model="searchBusinessData6" style="margin-left: 7px;margin-top: -5px;">
  466. <el-form-item label="用户账号">
  467. <el-input v-model="searchBusinessData6.username" clearable style="width: 110px"></el-input>
  468. </el-form-item>
  469. <el-form-item label="用户名">
  470. <el-input v-model="searchBusinessData6.userDisplay" clearable style="width: 110px"></el-input>
  471. </el-form-item>
  472. <el-form-item label="是否在用">
  473. <el-select filterable v-model="searchBusinessData6.active" style="width: 140px">
  474. <el-option label="是" value="Y"></el-option>
  475. <el-option label="否" value="N"></el-option>
  476. </el-select>
  477. </el-form-item>
  478. <el-form-item label=" ">
  479. <el-button type="primary" style="padding: 3px 12px" @click="searchBusinessInfoList6()">查询</el-button>
  480. </el-form-item>
  481. </el-form>
  482. <el-table
  483. :height="height + 110"
  484. :data="businessDataList6"
  485. stripe
  486. highlight-current-row
  487. border
  488. @row-dblclick="engineer6RowDblclick"
  489. style="width: 100%;">
  490. <el-table-column
  491. prop="username"
  492. header-align="center"
  493. align="center"
  494. label="用户账号">
  495. </el-table-column>
  496. <el-table-column
  497. prop="userDisplay"
  498. header-align="center"
  499. align="center"
  500. label="用户名">
  501. </el-table-column>
  502. <el-table-column
  503. prop="active"
  504. header-align="center"
  505. align="center"
  506. label="是否在用">
  507. </el-table-column>
  508. </el-table>
  509. <el-footer style="height:40px;margin-top:
  510. 10px;text-align:center">
  511. <el-button @click="engineer6Flag = false">关闭</el-button>
  512. </el-footer>
  513. </el-dialog>
  514. <!--工程师选择弹框-->
  515. <el-dialog title="IPQC-Lam/Pri/Etch/Slit" @close="closeEngineerInfoDialog" @open="openEngineerInfoDialog" :visible.sync="engineerFlag" width="559px" v-drag>
  516. <el-form inline="inline" label-position="top" :model="searchBusinessData2" style="margin-left: 7px;margin-top: -5px;">
  517. <el-form-item label="用户账号">
  518. <el-input v-model="searchBusinessData2.username" clearable style="width: 110px"></el-input>
  519. </el-form-item>
  520. <el-form-item label="用户名">
  521. <el-input v-model="searchBusinessData2.userDisplay" clearable style="width: 110px"></el-input>
  522. </el-form-item>
  523. <el-form-item label="是否在用">
  524. <el-select filterable v-model="searchBusinessData2.active" style="width: 140px">
  525. <el-option label="是" value="Y"></el-option>
  526. <el-option label="否" value="N"></el-option>
  527. </el-select>
  528. </el-form-item>
  529. <el-form-item label=" ">
  530. <el-button type="primary" style="padding: 3px 12px" @click="searchBusinessInfoList2()">查询</el-button>
  531. </el-form-item>
  532. </el-form>
  533. <el-table
  534. :height="height + 110"
  535. :data="businessDataList2"
  536. stripe
  537. highlight-current-row
  538. border
  539. @row-dblclick="engineerRowDblclick"
  540. style="width: 100%;">
  541. <el-table-column
  542. prop="username"
  543. header-align="center"
  544. align="center"
  545. label="用户账号">
  546. </el-table-column>
  547. <el-table-column
  548. prop="userDisplay"
  549. header-align="center"
  550. align="center"
  551. label="用户名">
  552. </el-table-column>
  553. <el-table-column
  554. prop="active"
  555. header-align="center"
  556. align="center"
  557. label="是否在用">
  558. </el-table-column>
  559. </el-table>
  560. <el-footer style="height:40px;margin-top:
  561. 10px;text-align:center">
  562. <el-button @click="engineerFlag = false">关闭</el-button>
  563. </el-footer>
  564. </el-dialog>
  565. <!--IPQC选择弹框-->
  566. <el-dialog title="IPQC-Converting" @close="closeIPQCInfoDialog" @open="openIPQCInfoDialog" :visible.sync="IPQCFlag" width="559px" v-drag>
  567. <el-form inline="inline" label-position="top" :model="searchBusinessData3" style="margin-left: 7px;margin-top: -5px;">
  568. <el-form-item label="用户账号">
  569. <el-input v-model="searchBusinessData3.username" clearable style="width: 110px"></el-input>
  570. </el-form-item>
  571. <el-form-item label="用户名">
  572. <el-input v-model="searchBusinessData3.userDisplay" clearable style="width: 110px"></el-input>
  573. </el-form-item>
  574. <el-form-item label="是否在用">
  575. <el-select filterable v-model="searchBusinessData3.active" style="width: 140px">
  576. <el-option label="是" value="Y"></el-option>
  577. <el-option label="否" value="N"></el-option>
  578. </el-select>
  579. </el-form-item>
  580. <el-form-item label=" ">
  581. <el-button type="primary" style="padding: 3px 12px" @click="searchBusinessInfoList3()">查询</el-button>
  582. </el-form-item>
  583. </el-form>
  584. <el-table
  585. :height="height + 110"
  586. :data="businessDataList3"
  587. stripe
  588. highlight-current-row
  589. border
  590. @row-dblclick="IPQCRowDblclick"
  591. style="width: 100%;">
  592. <el-table-column
  593. prop="username"
  594. header-align="center"
  595. align="center"
  596. label="用户账号">
  597. </el-table-column>
  598. <el-table-column
  599. prop="userDisplay"
  600. header-align="center"
  601. align="center"
  602. label="用户名">
  603. </el-table-column>
  604. <el-table-column
  605. prop="active"
  606. header-align="center"
  607. align="center"
  608. label="是否在用">
  609. </el-table-column>
  610. </el-table>
  611. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  612. <el-button @click="IPQCFlag = false">关闭</el-button>
  613. </el-footer>
  614. </el-dialog>
  615. <!--FQC1选择弹框-->
  616. <el-dialog title="FQC1" @close="closeFQC1InfoDialog" @open="openFQC1InfoDialog" :visible.sync="FQC1Flag" width="559px" v-drag>
  617. <el-form inline="inline" label-position="top" :model="searchBusinessData4" style="margin-left: 7px;margin-top: -5px;">
  618. <el-form-item label="用户账号">
  619. <el-input v-model="searchBusinessData4.username" clearable style="width: 110px"></el-input>
  620. </el-form-item>
  621. <el-form-item label="用户名">
  622. <el-input v-model="searchBusinessData4.userDisplay" clearable style="width: 110px"></el-input>
  623. </el-form-item>
  624. <el-form-item label="是否在用">
  625. <el-select filterable v-model="searchBusinessData4.active" style="width: 140px">
  626. <el-option label="是" value="Y"></el-option>
  627. <el-option label="否" value="N"></el-option>
  628. </el-select>
  629. </el-form-item>
  630. <el-form-item label=" ">
  631. <el-button type="primary" style="padding: 3px 12px" @click="searchBusinessInfoList4()">查询</el-button>
  632. </el-form-item>
  633. </el-form>
  634. <el-table
  635. :height="height + 110"
  636. :data="businessDataList4"
  637. stripe
  638. highlight-current-row
  639. border
  640. @row-dblclick="FQC1RowDblclick"
  641. style="width: 100%;">
  642. <el-table-column
  643. prop="username"
  644. header-align="center"
  645. align="center"
  646. label="用户账号">
  647. </el-table-column>
  648. <el-table-column
  649. prop="userDisplay"
  650. header-align="center"
  651. align="center"
  652. label="用户名">
  653. </el-table-column>
  654. <el-table-column
  655. prop="active"
  656. header-align="center"
  657. align="center"
  658. label="是否在用">
  659. </el-table-column>
  660. </el-table>
  661. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  662. <el-button @click="FQC1Flag = false">关闭</el-button>
  663. </el-footer>
  664. </el-dialog>
  665. <!--MFG选择弹框-->
  666. <el-dialog title="MFG" @close="closeMFGInfoDialog" @open="openMFGInfoDialog" :visible.sync="MFGlag" width="559px" v-drag>
  667. <el-form inline="inline" label-position="top" :model="searchBusinessData5" style="margin-left: 7px;margin-top: -5px;">
  668. <el-form-item label="用户账号">
  669. <el-input v-model="searchBusinessData5.username" clearable style="width: 110px"></el-input>
  670. </el-form-item>
  671. <el-form-item label="用户名">
  672. <el-input v-model="searchBusinessData5.userDisplay" clearable style="width: 110px"></el-input>
  673. </el-form-item>
  674. <el-form-item label="是否在用">
  675. <el-select filterable v-model="searchBusinessData5.active" style="width: 140px">
  676. <el-option label="是" value="Y"></el-option>
  677. <el-option label="否" value="N"></el-option>
  678. </el-select>
  679. </el-form-item>
  680. <el-form-item label=" ">
  681. <el-button type="primary" style="padding: 3px 12px" @click="searchBusinessInfoList5()">查询</el-button>
  682. </el-form-item>
  683. </el-form>
  684. <el-table
  685. :height="height + 110"
  686. :data="businessDataList5"
  687. stripe
  688. highlight-current-row
  689. border
  690. @row-dblclick="MFGRowDblclick"
  691. style="width: 100%;">
  692. <el-table-column
  693. prop="username"
  694. header-align="center"
  695. align="center"
  696. label="用户账号">
  697. </el-table-column>
  698. <el-table-column
  699. prop="userDisplay"
  700. header-align="center"
  701. align="center"
  702. label="用户名">
  703. </el-table-column>
  704. <el-table-column
  705. prop="active"
  706. header-align="center"
  707. align="center"
  708. label="是否在用">
  709. </el-table-column>
  710. </el-table>
  711. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  712. <el-button @click="MFGlag = false">关闭</el-button>
  713. </el-footer>
  714. </el-dialog>
  715. <!--文档工程师选择弹框-->
  716. <el-dialog title="文档工程师" @close="closeDocEngineerInfoDialog" @open="openDocEngineerInfoDialog" :visible.sync="docEngineerFlag" width="559px" v-drag>
  717. <el-form inline="inline" label-position="top" :model="searchBusinessData7" style="margin-left: 7px;margin-top: -5px;">
  718. <el-form-item label="用户账号">
  719. <el-input v-model="searchBusinessData7.username" clearable style="width: 110px"></el-input>
  720. </el-form-item>
  721. <el-form-item label="用户名">
  722. <el-input v-model="searchBusinessData7.userDisplay" clearable style="width: 110px"></el-input>
  723. </el-form-item>
  724. <el-form-item label="是否在用">
  725. <el-select filterable v-model="searchBusinessData7.active" style="width: 140px">
  726. <el-option label="是" value="Y"></el-option>
  727. <el-option label="否" value="N"></el-option>
  728. </el-select>
  729. </el-form-item>
  730. <el-form-item label=" ">
  731. <el-button type="primary" style="padding: 3px 12px" @click="searchBusinessInfoList7()">查询</el-button>
  732. </el-form-item>
  733. </el-form>
  734. <el-table
  735. :height="height + 110"
  736. :data="businessDataList7"
  737. stripe
  738. highlight-current-row
  739. border
  740. @row-dblclick="docEngineerRowDblclick"
  741. style="width: 100%;">
  742. <el-table-column
  743. prop="username"
  744. header-align="center"
  745. align="center"
  746. label="用户账号">
  747. </el-table-column>
  748. <el-table-column
  749. prop="userDisplay"
  750. header-align="center"
  751. align="center"
  752. label="用户名">
  753. </el-table-column>
  754. <el-table-column
  755. prop="active"
  756. header-align="center"
  757. align="center"
  758. label="是否在用">
  759. </el-table-column>
  760. </el-table>
  761. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  762. <el-button @click="docEngineerFlag = false">关闭</el-button>
  763. </el-footer>
  764. </el-dialog>
  765. <el-tabs style="height:100%; margin-top: 0px; width: 100%;" v-model="activeName" class="customer-tab" type="border-card" @tab-click="tabClick">
  766. <el-tab-pane label="项目物料" name="projectPart">
  767. <el-table
  768. :data="projectPartList"
  769. border
  770. style="width: 100%;margin-top: 5px;"
  771. :height="this.height + 128"
  772. ref="projectPartTable"
  773. :row-style="rowStyle"
  774. v-loading="dataListLoading">
  775. <el-table-column
  776. header-align="center"
  777. align="center"
  778. width="130"
  779. fixed="left"
  780. label="操作">
  781. <template slot-scope="scope">
  782. <a type="text" size="small" v-if="scope.row.testPartNo !== 'P000000'" @click="updatePartModal(scope.row)">编辑</a>
  783. <a type="text" size="small" @click="toMes(scope.row)">详情</a>
  784. <a type="text" size="small" @click="deletePartModal(scope.row)">删除</a>
  785. </template>
  786. </el-table-column>
  787. <el-table-column
  788. v-for="(item,index) in columnPartList" :key="index"
  789. :sortable="item.columnSortable"
  790. :prop="item.columnProp"
  791. :header-align="item.headerAlign"
  792. :show-overflow-tooltip="item.showOverflowTooltip"
  793. :align="item.align"
  794. :fixed="item.fixed==''?false:item.fixed"
  795. :min-width="item.columnWidth"
  796. :label="item.columnLabel">
  797. <template slot-scope="scope">
  798. <div v-if="item.columnProp === 'partType'">
  799. <span :style="{ color: scope.row.partType === 'Active' ? 'green' : 'Gray' , fontSize: '14px'}">
  800. {{ scope.row[item.columnProp] }}
  801. </span>
  802. </div>
  803. <div v-else>
  804. <span v-if="!item.columnHidden"> {{scope.row[item.columnProp]}}</span>
  805. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]"
  806. style="width: 100px; height: 80px"/></span>
  807. </div>
  808. </template>
  809. </el-table-column>
  810. </el-table>
  811. </el-tab-pane>
  812. </el-tabs>
  813. <Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
  814. </div>
  815. </template>
  816. <script>
  817. import {getSiteAndBuByUserName} from "@/api/eam/eam.js"
  818. import {
  819. searchBusinessInfo,
  820. searchBusinessInfo1,
  821. searchBusinessInfo2,
  822. searchBusinessInfo3,
  823. searchBusinessInfo4,
  824. searchBusinessInfo5,
  825. searchBusinessInfo6
  826. } from "@/api/factory/site.js"
  827. import Chooselist from '@/views/modules/common/Chooselist_eam'
  828. import {removeUserFavorite, saveUserFavorite, userFavoriteList} from '@/api/userFavorite.js'
  829. import {getTableDefaultListLanguage, getTableUserListLanguage,} from "@/api/table.js";
  830. import {
  831. eamProjectInfoDelete,
  832. eamProjectInfoEdit,
  833. eamProjectInfoSave,
  834. eamProjectInfoSearch,
  835. } from "@/api/eam/eamProject.js";
  836. import {
  837. eamProjectPartInfoDelete,
  838. eamProjectPartInfoEdit,
  839. eamProjectPartInfoSave,
  840. eamProjectPartSearch, getCustomerNo, queryEamProjectInfo, saveNewCustomer
  841. } from "../../../api/eam/eamProject";
  842. import row from "element-ui/packages/row";
  843. import 'moment/locale/zh-cn';
  844. import {EventBus} from "../../../main";
  845. import {queryCustomerList} from "../../../api/customer/customer";
  846. import {searchBusinessInfo7} from "../../../api/factory/site";
  847. /*打样记录組件*/
  848. export default {
  849. computed: {
  850. row() {
  851. return row
  852. },
  853. projectOwnersList() {
  854. return this.allPersonnelInfoList.filter(item => item.projectOwnerId !== undefined);
  855. },
  856. projectManagersList() {
  857. return this.allPersonnelInfoList.filter(item => item.projectManagerId !== undefined);
  858. },
  859. engineersList() {
  860. return this.allPersonnelInfoList.filter(item => item.engineerId !== undefined);
  861. },
  862. },
  863. components: {
  864. Chooselist,
  865. },
  866. watch: {
  867. searchData: {
  868. deep: true,
  869. handler: function (newV, oldV) {
  870. this.searchData.customerNo = this.searchData.customerNo.toUpperCase()
  871. }
  872. },
  873. },
  874. data () {
  875. return {
  876. // 是否收藏
  877. favorite: false,
  878. // 导出 start
  879. exportData: [],
  880. exportName: "项目信息" + this.dayjs().format('YYYYMMDDHHmmss'),
  881. exportHeader: ["项目信息"],
  882. exportFooter: [],
  883. exportList:[],
  884. // 导出 end
  885. tagNo:'',
  886. fileName:'',
  887. folder: 'projectConfirm',
  888. searchData: {
  889. site: this.$store.state.user.site,
  890. userName: this.$store.state.user.name,
  891. projectId: '',
  892. projectNo: '',
  893. projectDesc: '',
  894. partDesc: '',
  895. customerNo: '',
  896. customerDesc: '',
  897. buDesc: '',
  898. projectCategory: '',
  899. status: '',
  900. projectManager: '',
  901. projectOwner: '',
  902. engineer: '',
  903. startDate:'',
  904. endDate:'',
  905. projectCreationDate: new Date(),
  906. projectCloseDate:'',
  907. needDate:'',
  908. cProjectRegion: '',
  909. // active: 'Y',
  910. page: 1,
  911. limit: 10,
  912. },
  913. height: 200,
  914. pageIndex: 1,
  915. pageSize: 20,
  916. totalPage: 0,
  917. businessDataList: [],
  918. businessDataList1: [],
  919. businessDataList2: [],
  920. businessDataList3: [],
  921. businessDataList4: [],
  922. businessDataList5: [],
  923. businessDataList6: [],
  924. businessDataList7: [],
  925. dataList: [],
  926. selectTypeFlag: [],
  927. projectPartList: [],
  928. allPersonnelInfoList: [],
  929. // ======== 选中的当前行数据 ========
  930. projectPart: {},
  931. fileList: [],
  932. dataListLoading: false,
  933. modalFlag:false,
  934. modalDisableFlag:false,
  935. modalPartDisableFlag:false,
  936. projectManagerFlag:false,
  937. projectOwnerFlag:false,
  938. engineerFlag:false,
  939. engineer6Flag:false,
  940. IPQCFlag:false,
  941. FQC1Flag:false,
  942. MFGlag:false,
  943. docEngineerFlag:false,
  944. newCustomerFlag:false,
  945. modalData:{
  946. flag:'',
  947. bu: '',
  948. buNo: '',
  949. buDesc: '',
  950. site: this.$store.state.user.site,
  951. projectId: '',
  952. projectNo: '',
  953. projectPartId: '',
  954. oriProjectId: '',
  955. projectDesc:'',
  956. projectCloseDate:'',
  957. proofingNo:'',
  958. needDate:'',
  959. customerNo:'',
  960. finalCustomerId:'',
  961. customerDesc:'',
  962. projectCategory:'',
  963. testPartNo:'',
  964. partDesc:'',
  965. priority:'',
  966. projectManager:'',
  967. projectManagerName:'',
  968. projectOwner:'',
  969. projectOwnerName:'',
  970. cProjectRegion:'',
  971. cProjectBuildDate:'',
  972. cQualityEngineer1:'',
  973. cQualityEngineer1Name:'',
  974. cQualityEngineer2:'',
  975. cQualityEngineer2Name:'',
  976. cQualityEngineer3:'',
  977. cQualityEngineer3Name:'',
  978. cQualityEngineer4:'',
  979. cQualityEngineer4Name:'',
  980. cQualityEngineer5:'',
  981. cQualityEngineer5Name:'',
  982. cQualityEngineer6:'',
  983. cQualityEngineer6Name:'',
  984. cManufactureEngineer:'',
  985. cManufactureEngineerName:'',
  986. docEngineer:'',
  987. docEngineerName:'',
  988. engineer:'',
  989. engineerName:'',
  990. //projectCreationDate为当前服务器的时间
  991. projectCreationDate: new Date(),
  992. finalPartNo:'',
  993. finalPartDesc:'',
  994. partType:'',
  995. wantedConfirmDate: new Date(),
  996. // active:'',
  997. createBy: this.$store.state.user.name,
  998. updateBy: this.$store.state.user.name,
  999. },
  1000. searchBusinessData:{
  1001. site: this.$store.state.user.site,
  1002. username: '',
  1003. roleDesc: '',
  1004. userDisplay: '',
  1005. active: '',
  1006. page: 1,
  1007. limit: 10,
  1008. },
  1009. searchBusinessData1:{
  1010. site: this.$store.state.user.site,
  1011. username: '',
  1012. roleDesc: '',
  1013. userDisplay: '',
  1014. active: '',
  1015. page: 1,
  1016. limit: 10,
  1017. },
  1018. searchBusinessData2:{
  1019. site: this.$store.state.user.site,
  1020. username: '',
  1021. roleDesc: '',
  1022. userDisplay: '',
  1023. active: '',
  1024. page: 1,
  1025. limit: 10,
  1026. },
  1027. searchBusinessData3:{
  1028. site: this.$store.state.user.site,
  1029. username: '',
  1030. roleDesc: '',
  1031. userDisplay: '',
  1032. active: '',
  1033. page: 1,
  1034. limit: 10,
  1035. },
  1036. searchBusinessData4:{
  1037. site: this.$store.state.user.site,
  1038. username: '',
  1039. roleDesc: '',
  1040. userDisplay: '',
  1041. active: '',
  1042. page: 1,
  1043. limit: 10,
  1044. },
  1045. searchBusinessData5:{
  1046. site: this.$store.state.user.site,
  1047. username: '',
  1048. roleDesc: '',
  1049. userDisplay: '',
  1050. active: '',
  1051. page: 1,
  1052. limit: 10,
  1053. },
  1054. searchBusinessData6:{
  1055. site: this.$store.state.user.site,
  1056. username: '',
  1057. roleDesc: '',
  1058. userDisplay: '',
  1059. active: '',
  1060. page: 1,
  1061. limit: 10,
  1062. },
  1063. searchBusinessData7:{
  1064. site: this.$store.state.user.site,
  1065. username: '',
  1066. roleDesc: '',
  1067. userDisplay: '',
  1068. active: '',
  1069. page: 1,
  1070. limit: 10,
  1071. },
  1072. activeName: 'projectPart',
  1073. // 展示列集
  1074. columnList: [
  1075. {
  1076. userId: this.$store.state.user.name,
  1077. functionId: 401003,
  1078. serialNumber: '401003Table1BuDesc',
  1079. tableId: "401003Table1",
  1080. tableName: "BU文档清单表",
  1081. columnProp: 'buDesc',
  1082. headerAlign: "center",
  1083. align: "center",
  1084. columnLabel: 'BU',
  1085. columnHidden: false,
  1086. columnImage: false,
  1087. columnSortable: false,
  1088. sortLv: 0,
  1089. status: true,
  1090. fixed: '',
  1091. columnWidth: 100,
  1092. },
  1093. {
  1094. userId: this.$store.state.user.name,
  1095. functionId: 401003,
  1096. serialNumber: '401003Table1ProjectId',
  1097. tableId: "401003Table1",
  1098. tableName: "项目信息表",
  1099. columnProp: 'projectNo',
  1100. headerAlign: "center",
  1101. align: "center",
  1102. columnLabel: '项目编码',
  1103. columnHidden: false,
  1104. columnImage: false,
  1105. columnSortable: false,
  1106. sortLv: 0,
  1107. status: true,
  1108. fixed: '',
  1109. columnWidth: 100,
  1110. },
  1111. {
  1112. userId: this.$store.state.user.name,
  1113. functionId: 401003,
  1114. serialNumber: '401003Table1ProjectDesc',
  1115. tableId: "401003Table1",
  1116. tableName: "项目信息表",
  1117. columnProp: 'projectDesc',
  1118. headerAlign: "center",
  1119. align: "center",
  1120. columnLabel: '项目名称',
  1121. columnHidden: false,
  1122. columnImage: false,
  1123. columnSortable: false,
  1124. sortLv: 0,
  1125. status: true,
  1126. fixed: '',
  1127. columnWidth: 100,
  1128. },
  1129. {
  1130. userId: this.$store.state.user.name,
  1131. functionId: 401003,
  1132. serialNumber: '401003Table1customerNo',
  1133. tableId: "401003Table1",
  1134. tableName: "项目信息表",
  1135. columnProp: "customerNo",
  1136. headerAlign: "center",
  1137. align: "left",
  1138. columnLabel: "客户编码",
  1139. columnHidden: false,
  1140. columnImage: false,
  1141. columnSortable: false,
  1142. sortLv: 0,
  1143. status: true,
  1144. fixed: '',
  1145. columnWidth: 100
  1146. },
  1147. {
  1148. userId: this.$store.state.user.name,
  1149. functionId: 401003,
  1150. serialNumber: '401003Table1customerDesc',
  1151. tableId: "401003Table1",
  1152. tableName: "项目信息表",
  1153. columnProp: "customerDesc",
  1154. headerAlign: "center",
  1155. align: "left",
  1156. columnLabel: "客户名称",
  1157. columnHidden: false,
  1158. columnImage: false,
  1159. columnSortable: false,
  1160. sortLv: 0,
  1161. status: true,
  1162. fixed: '',
  1163. columnWidth: 150
  1164. },
  1165. {
  1166. userId: this.$store.state.user.name,
  1167. functionId: 401003,
  1168. serialNumber: '401003Table1ProjectCreationDate',
  1169. tableId: "401003Table1",
  1170. tableName: "项目信息表",
  1171. columnProp: "projectCreationDate",
  1172. headerAlign: "center",
  1173. align: "center",
  1174. columnLabel: "立项日期",
  1175. columnHidden: false,
  1176. columnImage: false,
  1177. columnSortable: false,
  1178. sortLv: 0,
  1179. status: true,
  1180. fixed: '',
  1181. columnWidth: 120
  1182. },
  1183. {
  1184. userId: this.$store.state.user.name,
  1185. functionId: 401003,
  1186. serialNumber: '401003Table1ProjectCategory',
  1187. tableId: "401003Table1",
  1188. tableName: "项目信息表",
  1189. columnProp: 'projectCategory',
  1190. headerAlign: "center",
  1191. align: "left",
  1192. columnLabel: '项目分类',
  1193. columnHidden: false,
  1194. columnImage: false,
  1195. columnSortable: false,
  1196. sortLv: 0,
  1197. status: true,
  1198. fixed: '',
  1199. columnWidth: 120,
  1200. },
  1201. {
  1202. userId: this.$store.state.user.name,
  1203. functionId: 401003,
  1204. serialNumber: '401003Table1Priority',
  1205. tableId: "401003Table1",
  1206. tableName: "项目信息表",
  1207. columnProp: 'priority',
  1208. headerAlign: "center",
  1209. align: "left",
  1210. columnLabel: '优先级',
  1211. columnHidden: false,
  1212. columnImage: false,
  1213. columnSortable: false,
  1214. sortLv: 0,
  1215. status: true,
  1216. fixed: '',
  1217. columnWidth: 80,
  1218. },
  1219. {
  1220. userId: this.$store.state.user.name,
  1221. functionId: 401003,
  1222. serialNumber: '401003Table1CProjectRegion',
  1223. tableId: "401003Table1",
  1224. tableName: "项目信息表",
  1225. columnProp: 'cProjectRegion',
  1226. headerAlign: "center",
  1227. align: "left",
  1228. columnLabel: '区域',
  1229. columnHidden: false,
  1230. columnImage: false,
  1231. columnSortable: false,
  1232. sortLv: 0,
  1233. status: true,
  1234. fixed: '',
  1235. columnWidth: 120,
  1236. },
  1237. {
  1238. userId: this.$store.state.user.name,
  1239. functionId: 401003,
  1240. serialNumber: '401003Table1ProjectManager',
  1241. tableId: "401003Table1",
  1242. tableName: "项目信息表",
  1243. columnProp: 'projectManagerName',
  1244. headerAlign: "center",
  1245. align: "left",
  1246. columnLabel: 'PM/Sales',
  1247. columnHidden: false,
  1248. columnImage: false,
  1249. columnSortable: false,
  1250. sortLv: 0,
  1251. status: true,
  1252. fixed: '',
  1253. columnWidth: 120,
  1254. },
  1255. {
  1256. userId: this.$store.state.user.name,
  1257. functionId: 401003,
  1258. serialNumber: '401003Table1ProjectOwner',
  1259. tableId: "401003Table1",
  1260. tableName: "项目信息表",
  1261. columnProp: 'projectOwnerName',
  1262. headerAlign: "center",
  1263. align: "left",
  1264. columnLabel: 'PjM',
  1265. columnHidden: false,
  1266. columnImage: false,
  1267. columnSortable: false,
  1268. sortLv: 0,
  1269. status: true,
  1270. fixed: '',
  1271. columnWidth: 120,
  1272. },
  1273. {
  1274. userId: this.$store.state.user.name,
  1275. functionId: 401003,
  1276. serialNumber: '401003Table1Engineer',
  1277. tableId: "401003Table1",
  1278. tableName: "项目信息表",
  1279. columnProp: 'engineerName',
  1280. headerAlign: "center",
  1281. align: "left",
  1282. columnLabel: 'Engineer',
  1283. columnHidden: false,
  1284. columnImage: false,
  1285. columnSortable: false,
  1286. sortLv: 0,
  1287. status: true,
  1288. fixed: '',
  1289. columnWidth: 120,
  1290. },
  1291. {
  1292. userId: this.$store.state.user.name,
  1293. functionId: 401003,
  1294. serialNumber: '401003Table1CQualityEngineer1',
  1295. tableId: "401003Table1",
  1296. tableName: "项目信息表",
  1297. columnProp: 'cQualityEngineer1Name',
  1298. headerAlign: "center",
  1299. align: "left",
  1300. columnLabel: 'IPQC-Lam/Pri/Etch/Slit',
  1301. columnHidden: false,
  1302. columnImage: false,
  1303. columnSortable: false,
  1304. sortLv: 0,
  1305. status: true,
  1306. fixed: '',
  1307. columnWidth: 120,
  1308. },
  1309. {
  1310. userId: this.$store.state.user.name,
  1311. functionId: 401003,
  1312. serialNumber: '401003Table1CQualityEngineer2',
  1313. tableId: "401003Table1",
  1314. tableName: "项目信息表",
  1315. columnProp: 'cQualityEngineer2Name',
  1316. headerAlign: "center",
  1317. align: "left",
  1318. columnLabel: 'IPQC-Converting',
  1319. columnHidden: false,
  1320. columnImage: false,
  1321. columnSortable: false,
  1322. sortLv: 0,
  1323. status: true,
  1324. fixed: '',
  1325. columnWidth: 120,
  1326. },
  1327. {
  1328. userId: this.$store.state.user.name,
  1329. functionId: 401003,
  1330. serialNumber: '401003Table1CQualityEngineer3',
  1331. tableId: "401003Table1",
  1332. tableName: "项目信息表",
  1333. columnProp: 'cQualityEngineer3Name',
  1334. headerAlign: "center",
  1335. align: "left",
  1336. columnLabel: 'FQC1',
  1337. columnHidden: false,
  1338. columnImage: false,
  1339. columnSortable: false,
  1340. sortLv: 0,
  1341. status: true,
  1342. fixed: '',
  1343. columnWidth: 120,
  1344. },
  1345. {
  1346. userId: this.$store.state.user.name,
  1347. functionId: 401003,
  1348. serialNumber: '401003Table1CQualityEngineer5',
  1349. tableId: "401003Table1",
  1350. tableName: "项目信息表",
  1351. columnProp: 'cQualityEngineer5Name',
  1352. headerAlign: "center",
  1353. align: "left",
  1354. columnLabel: 'FQC2',
  1355. columnHidden: false,
  1356. columnImage: false,
  1357. columnSortable: false,
  1358. sortLv: 0,
  1359. status: true,
  1360. fixed: '',
  1361. columnWidth: 120,
  1362. },
  1363. {
  1364. userId: this.$store.state.user.name,
  1365. functionId: 401003,
  1366. serialNumber: '401003Table1CQualityEngineer6',
  1367. tableId: "401003Table1",
  1368. tableName: "项目信息表",
  1369. columnProp: 'cQualityEngineer6Name',
  1370. headerAlign: "center",
  1371. align: "left",
  1372. columnLabel: 'IQC',
  1373. columnHidden: false,
  1374. columnImage: false,
  1375. columnSortable: false,
  1376. sortLv: 0,
  1377. status: true,
  1378. fixed: '',
  1379. columnWidth: 120,
  1380. },
  1381. {
  1382. userId: this.$store.state.user.name,
  1383. functionId: 401003,
  1384. serialNumber: '401003Table1CManufactureEngineer',
  1385. tableId: "401003Table1",
  1386. tableName: "项目信息表",
  1387. columnProp: 'cManufactureEngineerName',
  1388. headerAlign: "center",
  1389. align: "left",
  1390. columnLabel: 'MFG',
  1391. columnHidden: false,
  1392. columnImage: false,
  1393. columnSortable: false,
  1394. sortLv: 0,
  1395. status: true,
  1396. fixed: '',
  1397. columnWidth: 120,
  1398. },
  1399. {
  1400. userId: this.$store.state.user.name,
  1401. functionId: 401003,
  1402. serialNumber: '401003Table1CQualityEngineer4',
  1403. tableId: "401003Table1",
  1404. tableName: "项目信息表",
  1405. columnProp: 'cQualityEngineer4Name',
  1406. headerAlign: "center",
  1407. align: "left",
  1408. columnLabel: 'SQE',
  1409. columnHidden: false,
  1410. columnImage: false,
  1411. columnSortable: false,
  1412. sortLv: 0,
  1413. status: true,
  1414. fixed: '',
  1415. columnWidth: 120,
  1416. },
  1417. {
  1418. userId: this.$store.state.user.name,
  1419. functionId: 401003,
  1420. serialNumber: '401003Table1DocEngineer',
  1421. tableId: "401003Table1",
  1422. tableName: "项目信息表",
  1423. columnProp: 'docEngineerName',
  1424. headerAlign: "center",
  1425. align: "left",
  1426. columnLabel: '文档工程师',
  1427. columnHidden: false,
  1428. columnImage: false,
  1429. columnSortable: false,
  1430. sortLv: 0,
  1431. status: true,
  1432. fixed: '',
  1433. columnWidth: 120,
  1434. },
  1435. {
  1436. userId: this.$store.state.user.name,
  1437. functionId: 401003,
  1438. serialNumber: '401003Table1Status',
  1439. tableId: "401003Table1",
  1440. tableName: "项目信息表",
  1441. columnProp: 'status',
  1442. headerAlign: "center",
  1443. align: "left",
  1444. columnLabel: '项目状态' ,
  1445. columnHidden: false,
  1446. columnImage: false,
  1447. columnSortable: false,
  1448. sortLv: 0,
  1449. status: true,
  1450. fixed: '',
  1451. columnWidth: 100,
  1452. },
  1453. {
  1454. userId: this.$store.state.user.name,
  1455. functionId: 401003,
  1456. serialNumber: '401003Table1NeedDate',
  1457. tableId: "401003Table1",
  1458. tableName: "项目信息表",
  1459. columnProp: 'needDate',
  1460. headerAlign: "center",
  1461. align: "center",
  1462. columnLabel: '预计完成日期',
  1463. columnHidden: false,
  1464. columnImage: false,
  1465. columnSortable: false,
  1466. sortLv: 0,
  1467. status: true,
  1468. fixed: '',
  1469. columnWidth: 120,
  1470. },
  1471. {
  1472. userId: this.$store.state.user.name,
  1473. functionId: 401003,
  1474. serialNumber: '401003Table1ProjectCloseDate',
  1475. tableId: "401003Table1",
  1476. tableName: "项目信息表",
  1477. columnProp: 'projectCloseDate',
  1478. headerAlign: "center",
  1479. align: "left",
  1480. columnLabel: '结案日期',
  1481. columnHidden: false,
  1482. columnImage: false,
  1483. columnSortable: false,
  1484. sortLv: 0,
  1485. status: true,
  1486. fixed: '',
  1487. columnWidth: 120,
  1488. },
  1489. {
  1490. userId: this.$store.state.user.name,
  1491. functionId: 401003,
  1492. serialNumber: '401003Table1CreateDate',
  1493. tableId: "401003Table1",
  1494. tableName: "项目信息表",
  1495. columnProp: 'createDate',
  1496. headerAlign: "center",
  1497. align: "center",
  1498. columnLabel: '创建时间',
  1499. columnHidden: false,
  1500. columnImage: false,
  1501. columnSortable: false,
  1502. sortLv: 0,
  1503. status: true,
  1504. fixed: '',
  1505. columnWidth: 120,
  1506. },
  1507. {
  1508. userId: this.$store.state.user.name,
  1509. functionId: 401003,
  1510. serialNumber: '401003Table1CreateBy',
  1511. tableId: "401003Table1",
  1512. tableName: "项目信息表",
  1513. columnProp: 'createBy',
  1514. headerAlign: "center",
  1515. align: "left",
  1516. columnLabel: '创建人',
  1517. columnHidden: false,
  1518. columnImage: false,
  1519. columnSortable: false,
  1520. sortLv: 0,
  1521. status: true,
  1522. fixed: '',
  1523. columnWidth: 120,
  1524. },
  1525. {
  1526. userId: this.$store.state.user.name,
  1527. functionId: 401003,
  1528. serialNumber: '401003Table1UpdateDate',
  1529. tableId: "401003Table1",
  1530. tableName: "项目信息表",
  1531. columnProp: 'updateDate',
  1532. headerAlign: "center",
  1533. align: "center",
  1534. columnLabel: '更新时间',
  1535. columnHidden: false,
  1536. columnImage: false,
  1537. columnSortable: false,
  1538. sortLv: 0,
  1539. status: true,
  1540. fixed: '',
  1541. columnWidth: 120,
  1542. },
  1543. {
  1544. userId: this.$store.state.user.name,
  1545. functionId: 401003,
  1546. serialNumber: '401003Table1UpdateBy',
  1547. tableId: "401003Table1",
  1548. tableName: "项目信息表",
  1549. columnProp: 'updateBy',
  1550. headerAlign: "center",
  1551. align: "left",
  1552. columnLabel: '更新人',
  1553. columnHidden: false,
  1554. columnImage: false,
  1555. columnSortable: false,
  1556. sortLv: 0,
  1557. status: true,
  1558. fixed: '',
  1559. columnWidth: 120,
  1560. },
  1561. ],
  1562. columnPartList: [
  1563. {
  1564. userId: this.$store.state.user.name,
  1565. functionId: 401003,
  1566. serialNumber: '401003Table2TestPartNo',
  1567. tableId: "401003Table2",
  1568. tableName: "项目信息物料表",
  1569. columnProp: 'testPartNo',
  1570. headerAlign: "center",
  1571. align: "center",
  1572. columnLabel: '项目料号',
  1573. columnHidden: false,
  1574. columnImage: false,
  1575. columnSortable: false,
  1576. sortLv: 0,
  1577. status: true,
  1578. fixed: '',
  1579. columnWidth: 100,
  1580. },
  1581. {
  1582. userId: this.$store.state.user.name,
  1583. functionId: 401003,
  1584. serialNumber: '401003Table2PartDesc',
  1585. tableId: "401003Table2",
  1586. tableName: "项目信息物料表",
  1587. columnProp: 'partDesc',
  1588. headerAlign: "center",
  1589. align: "center",
  1590. columnLabel: '料号描述',
  1591. columnHidden: false,
  1592. columnImage: false,
  1593. columnSortable: false,
  1594. sortLv: 0,
  1595. status: true,
  1596. fixed: '',
  1597. columnWidth: 100,
  1598. },
  1599. {
  1600. userId: this.$store.state.user.name,
  1601. functionId: 401003,
  1602. serialNumber: '401003Table2BuildDate',
  1603. tableId: "401003Table2",
  1604. tableName: "项目信息物料表",
  1605. columnProp: "buildDate",
  1606. headerAlign: "center",
  1607. align: "center",
  1608. columnLabel: "立项日期",
  1609. columnHidden: false,
  1610. columnImage: false,
  1611. columnSortable: false,
  1612. sortLv: 0,
  1613. status: true,
  1614. fixed: '',
  1615. columnWidth: 120
  1616. },
  1617. {
  1618. userId: this.$store.state.user.name,
  1619. functionId: 401003,
  1620. serialNumber: '401003Table2ProjectCategory',
  1621. tableId: "401003Table2",
  1622. tableName: "项目信息物料表",
  1623. columnProp: 'projectCategory',
  1624. headerAlign: "center",
  1625. align: "left",
  1626. columnLabel: '项目分类',
  1627. columnHidden: false,
  1628. columnImage: false,
  1629. columnSortable: false,
  1630. sortLv: 0,
  1631. status: true,
  1632. fixed: '',
  1633. columnWidth: 120,
  1634. },
  1635. {
  1636. userId: this.$store.state.user.name,
  1637. functionId: 401003,
  1638. serialNumber: '401003Table2Priority',
  1639. tableId: "401003Table2",
  1640. tableName: "项目信息物料表",
  1641. columnProp: 'priority',
  1642. headerAlign: "center",
  1643. align: "left",
  1644. columnLabel: '优先级',
  1645. columnHidden: false,
  1646. columnImage: false,
  1647. columnSortable: false,
  1648. sortLv: 0,
  1649. status: true,
  1650. fixed: '',
  1651. columnWidth: 80,
  1652. },
  1653. {
  1654. userId: this.$store.state.user.name,
  1655. functionId: 401003,
  1656. serialNumber: '401003Table2ProjectManager',
  1657. tableId: "401003Table2",
  1658. tableName: "项目信息物料表",
  1659. columnProp: 'projectManagerName',
  1660. headerAlign: "center",
  1661. align: "left",
  1662. columnLabel: 'PM/Sales',
  1663. columnHidden: false,
  1664. columnImage: false,
  1665. columnSortable: false,
  1666. sortLv: 0,
  1667. status: true,
  1668. fixed: '',
  1669. columnWidth: 120,
  1670. },
  1671. {
  1672. userId: this.$store.state.user.name,
  1673. functionId: 401003,
  1674. serialNumber: '401003Table2ProjectOwner',
  1675. tableId: "401003Table2",
  1676. tableName: "项目信息物料表",
  1677. columnProp: 'projectOwnerName',
  1678. headerAlign: "center",
  1679. align: "left",
  1680. columnLabel: 'PjM',
  1681. columnHidden: false,
  1682. columnImage: false,
  1683. columnSortable: false,
  1684. sortLv: 0,
  1685. status: true,
  1686. fixed: '',
  1687. columnWidth: 120,
  1688. },
  1689. {
  1690. userId: this.$store.state.user.name,
  1691. functionId: 401003,
  1692. serialNumber: '401003Table2Engineer',
  1693. tableId: "401003Table2",
  1694. tableName: "项目信息物料表",
  1695. columnProp: 'engineerName',
  1696. headerAlign: "center",
  1697. align: "left",
  1698. columnLabel: 'Engineer',
  1699. columnHidden: false,
  1700. columnImage: false,
  1701. columnSortable: false,
  1702. sortLv: 0,
  1703. status: true,
  1704. fixed: '',
  1705. columnWidth: 120,
  1706. },
  1707. {
  1708. userId: this.$store.state.user.name,
  1709. functionId: 401003,
  1710. serialNumber: '401003Table2CQualityEngineer1',
  1711. tableId: "401003Table2",
  1712. tableName: "项目信息物料表",
  1713. columnProp: 'cQualityEngineer1Name',
  1714. headerAlign: "center",
  1715. align: "left",
  1716. columnLabel: 'IPQC-Lam/Pri/Etch/Slit',
  1717. columnHidden: false,
  1718. columnImage: false,
  1719. columnSortable: false,
  1720. sortLv: 0,
  1721. status: true,
  1722. fixed: '',
  1723. columnWidth: 120,
  1724. },
  1725. {
  1726. userId: this.$store.state.user.name,
  1727. functionId: 401003,
  1728. serialNumber: '401003Table2CQualityEngineer2',
  1729. tableId: "401003Table2",
  1730. tableName: "项目信息物料表",
  1731. columnProp: 'cQualityEngineer2Name',
  1732. headerAlign: "center",
  1733. align: "left",
  1734. columnLabel: 'IPQC-Converting',
  1735. columnHidden: false,
  1736. columnImage: false,
  1737. columnSortable: false,
  1738. sortLv: 0,
  1739. status: true,
  1740. fixed: '',
  1741. columnWidth: 120,
  1742. },
  1743. {
  1744. userId: this.$store.state.user.name,
  1745. functionId: 401003,
  1746. serialNumber: '401003Table2CQualityEngineer3',
  1747. tableId: "401003Table2",
  1748. tableName: "项目信息物料表",
  1749. columnProp: 'cQualityEngineer3Name',
  1750. headerAlign: "center",
  1751. align: "left",
  1752. columnLabel: 'FQC1',
  1753. columnHidden: false,
  1754. columnImage: false,
  1755. columnSortable: false,
  1756. sortLv: 0,
  1757. status: true,
  1758. fixed: '',
  1759. columnWidth: 120,
  1760. },
  1761. {
  1762. userId: this.$store.state.user.name,
  1763. functionId: 401003,
  1764. serialNumber: '401003Table2CQualityEngineer5',
  1765. tableId: "401003Table2",
  1766. tableName: "项目信息物料表",
  1767. columnProp: 'cQualityEngineer5Name',
  1768. headerAlign: "center",
  1769. align: "left",
  1770. columnLabel: 'FQC2',
  1771. columnHidden: false,
  1772. columnImage: false,
  1773. columnSortable: false,
  1774. sortLv: 0,
  1775. status: true,
  1776. fixed: '',
  1777. columnWidth: 120,
  1778. },
  1779. {
  1780. userId: this.$store.state.user.name,
  1781. functionId: 401003,
  1782. serialNumber: '401003Table2CQualityEngineer6',
  1783. tableId: "401003Table2",
  1784. tableName: "项目信息物料表",
  1785. columnProp: 'cQualityEngineer6Name',
  1786. headerAlign: "center",
  1787. align: "left",
  1788. columnLabel: 'IQC',
  1789. columnHidden: false,
  1790. columnImage: false,
  1791. columnSortable: false,
  1792. sortLv: 0,
  1793. status: true,
  1794. fixed: '',
  1795. columnWidth: 120,
  1796. },
  1797. {
  1798. userId: this.$store.state.user.name,
  1799. functionId: 401003,
  1800. serialNumber: '401003Table2CManufactureEngineer',
  1801. tableId: "401003Table2",
  1802. tableName: "项目信息物料表",
  1803. columnProp: 'cManufactureEngineerName',
  1804. headerAlign: "center",
  1805. align: "left",
  1806. columnLabel: 'MFG',
  1807. columnHidden: false,
  1808. columnImage: false,
  1809. columnSortable: false,
  1810. sortLv: 0,
  1811. status: true,
  1812. fixed: '',
  1813. columnWidth: 120,
  1814. },
  1815. {
  1816. userId: this.$store.state.user.name,
  1817. functionId: 401003,
  1818. serialNumber: '401003Table2CQualityEngineer4',
  1819. tableId: "401003Table2",
  1820. tableName: "项目信息物料表",
  1821. columnProp: 'cQualityEngineer4Name',
  1822. headerAlign: "center",
  1823. align: "left",
  1824. columnLabel: 'SQE',
  1825. columnHidden: false,
  1826. columnImage: false,
  1827. columnSortable: false,
  1828. sortLv: 0,
  1829. status: true,
  1830. fixed: '',
  1831. columnWidth: 120,
  1832. },
  1833. {
  1834. userId: this.$store.state.user.name,
  1835. functionId: 401003,
  1836. serialNumber: '401003Table2DocEngineer',
  1837. tableId: "401003Table2",
  1838. tableName: "项目信息物料表",
  1839. columnProp: 'docEngineerName',
  1840. headerAlign: "center",
  1841. align: "left",
  1842. columnLabel: '文档工程师',
  1843. columnHidden: false,
  1844. columnImage: false,
  1845. columnSortable: false,
  1846. sortLv: 0,
  1847. status: true,
  1848. fixed: '',
  1849. columnWidth: 120,
  1850. },
  1851. {
  1852. userId: this.$store.state.user.name,
  1853. functionId: 401003,
  1854. serialNumber: '401003Table2Status',
  1855. tableId: "401003Table2",
  1856. tableName: "项目信息物料表",
  1857. columnProp: 'status',
  1858. headerAlign: "center",
  1859. align: "left",
  1860. columnLabel: '项目状态' ,
  1861. columnHidden: false,
  1862. columnImage: false,
  1863. columnSortable: false,
  1864. sortLv: 0,
  1865. status: true,
  1866. fixed: '',
  1867. columnWidth: 100,
  1868. },
  1869. {
  1870. userId: this.$store.state.user.name,
  1871. functionId: 401003,
  1872. serialNumber: '401003Table2PartType',
  1873. tableId: "401003Table2",
  1874. tableName: "项目信息物料表",
  1875. columnProp: 'partType',
  1876. headerAlign: "center",
  1877. align: "center",
  1878. columnLabel: '料号状态' ,
  1879. columnHidden: false,
  1880. columnImage: false,
  1881. columnSortable: false,
  1882. sortLv: 0,
  1883. status: true,
  1884. fixed: '',
  1885. columnWidth: 100,
  1886. },
  1887. {
  1888. userId: this.$store.state.user.name,
  1889. functionId: 401003,
  1890. serialNumber: '401003Table2NeedDate',
  1891. tableId: "401003Table2",
  1892. tableName: "项目信息物料表",
  1893. columnProp: 'needDate',
  1894. headerAlign: "center",
  1895. align: "center",
  1896. columnLabel: '预计完成日期',
  1897. columnHidden: false,
  1898. columnImage: false,
  1899. columnSortable: false,
  1900. sortLv: 0,
  1901. status: true,
  1902. fixed: '',
  1903. columnWidth: 120,
  1904. },
  1905. {
  1906. userId: this.$store.state.user.name,
  1907. functionId: 401003,
  1908. serialNumber: '401003Table2CloseDate',
  1909. tableId: "401003Table2",
  1910. tableName: "项目信息物料表",
  1911. columnProp: 'closeDate',
  1912. headerAlign: "center",
  1913. align: "left",
  1914. columnLabel: '结案日期',
  1915. columnHidden: false,
  1916. columnImage: false,
  1917. columnSortable: false,
  1918. sortLv: 0,
  1919. status: true,
  1920. fixed: '',
  1921. columnWidth: 120,
  1922. },
  1923. {
  1924. userId: this.$store.state.user.name,
  1925. functionId: 401003,
  1926. serialNumber: '401003Table2FinalPartNo',
  1927. tableId: "401003Table2",
  1928. tableName: "项目信息物料表",
  1929. columnProp: 'finalPartNo',
  1930. headerAlign: "center",
  1931. align: "left",
  1932. columnLabel: 'ERP正式料号',
  1933. columnHidden: false,
  1934. columnImage: false,
  1935. columnSortable: false,
  1936. sortLv: 0,
  1937. status: true,
  1938. fixed: '',
  1939. columnWidth: 120,
  1940. },
  1941. {
  1942. userId: this.$store.state.user.name,
  1943. functionId: 401003,
  1944. serialNumber: '401003Table2CreateDate',
  1945. tableId: "401003Table2",
  1946. tableName: "项目信息物料表",
  1947. columnProp: 'createDate',
  1948. headerAlign: "center",
  1949. align: "center",
  1950. columnLabel: '创建时间',
  1951. columnHidden: false,
  1952. columnImage: false,
  1953. columnSortable: false,
  1954. sortLv: 0,
  1955. status: true,
  1956. fixed: '',
  1957. columnWidth: 120,
  1958. },
  1959. {
  1960. userId: this.$store.state.user.name,
  1961. functionId: 401003,
  1962. serialNumber: '401003Table2CreateBy',
  1963. tableId: "401003Table2",
  1964. tableName: "项目信息物料表",
  1965. columnProp: 'createBy',
  1966. headerAlign: "center",
  1967. align: "left",
  1968. columnLabel: '创建人',
  1969. columnHidden: false,
  1970. columnImage: false,
  1971. columnSortable: false,
  1972. sortLv: 0,
  1973. status: true,
  1974. fixed: '',
  1975. columnWidth: 120,
  1976. },
  1977. {
  1978. userId: this.$store.state.user.name,
  1979. functionId: 401003,
  1980. serialNumber: '401003Table2UpdateDate',
  1981. tableId: "401003Table2",
  1982. tableName: "项目信息物料表",
  1983. columnProp: 'updateDate',
  1984. headerAlign: "center",
  1985. align: "center",
  1986. columnLabel: '更新时间',
  1987. columnHidden: false,
  1988. columnImage: false,
  1989. columnSortable: false,
  1990. sortLv: 0,
  1991. status: true,
  1992. fixed: '',
  1993. columnWidth: 120,
  1994. },
  1995. {
  1996. userId: this.$store.state.user.name,
  1997. functionId: 401003,
  1998. serialNumber: '401003Table2UpdateBy',
  1999. tableId: "401003Table2",
  2000. tableName: "项目信息物料表",
  2001. columnProp: 'updateBy',
  2002. headerAlign: "center",
  2003. align: "left",
  2004. columnLabel: '更新人',
  2005. columnHidden: false,
  2006. columnImage: false,
  2007. columnSortable: false,
  2008. sortLv: 0,
  2009. status: true,
  2010. fixed: '',
  2011. columnWidth: 120,
  2012. },
  2013. ],
  2014. rules:{
  2015. projectNo:[
  2016. {
  2017. required: true,
  2018. message: ' ',
  2019. trigger: ['blur','change']
  2020. }
  2021. ],
  2022. projectDesc:[
  2023. {
  2024. required: true,
  2025. message: ' ',
  2026. trigger: ['blur','change']
  2027. }
  2028. ],
  2029. testPartNo:[
  2030. {
  2031. required: true,
  2032. message: ' ',
  2033. trigger: ['blur','change']
  2034. }
  2035. ],
  2036. partDesc:[
  2037. {
  2038. required: true,
  2039. message: ' ',
  2040. trigger: ['blur','change']
  2041. }
  2042. ],
  2043. partType:[
  2044. {
  2045. required: true,
  2046. message: ' ',
  2047. trigger: ['blur','change']
  2048. }
  2049. ],
  2050. projectManager:[
  2051. {
  2052. required: true,
  2053. message: ' ',
  2054. trigger: ['blur','change']
  2055. }
  2056. ],
  2057. engineer:[
  2058. {
  2059. required: true,
  2060. message: ' ',
  2061. trigger: ['blur','change']
  2062. }
  2063. ],
  2064. projectOwner:[
  2065. {
  2066. required: true,
  2067. message: ' ',
  2068. trigger: ['blur','change']
  2069. }
  2070. ],
  2071. cProjectRegion:[
  2072. {
  2073. required: true,
  2074. message: ' ',
  2075. trigger: ['blur','change']
  2076. }
  2077. ],
  2078. cQualityEngineer1:[
  2079. {
  2080. required: true,
  2081. message: ' ',
  2082. trigger: ['blur','change']
  2083. }
  2084. ],
  2085. cQualityEngineer2:[
  2086. {
  2087. required: true,
  2088. message: ' ',
  2089. trigger: ['blur','change']
  2090. }
  2091. ],
  2092. cQualityEngineer3:[
  2093. {
  2094. required: true,
  2095. message: ' ',
  2096. trigger: ['blur','change']
  2097. }
  2098. ],
  2099. cQualityEngineer4:[
  2100. {
  2101. required: true,
  2102. message: ' ',
  2103. trigger: ['blur','change']
  2104. }
  2105. ],
  2106. cQualityEngineer4Name:[
  2107. {
  2108. required: true,
  2109. message: ' ',
  2110. trigger: ['blur','change']
  2111. }
  2112. ],
  2113. cQualityEngineer5:[
  2114. {
  2115. required: true,
  2116. message: ' ',
  2117. trigger: ['blur','change']
  2118. }
  2119. ],
  2120. cQualityEngineer5Name:[
  2121. {
  2122. required: true,
  2123. message: ' ',
  2124. trigger: ['blur','change']
  2125. }
  2126. ],
  2127. cQualityEngineer6:[
  2128. {
  2129. required: true,
  2130. message: ' ',
  2131. trigger: ['blur','change']
  2132. }
  2133. ],
  2134. cQualityEngineer6Name:[
  2135. {
  2136. required: true,
  2137. message: ' ',
  2138. trigger: ['blur','change']
  2139. }
  2140. ],
  2141. cManufactureEngineer:[
  2142. {
  2143. required: true,
  2144. message: ' ',
  2145. trigger: ['blur','change']
  2146. }
  2147. ],
  2148. docEngineer:[
  2149. {
  2150. required: true,
  2151. message: ' ',
  2152. trigger: ['blur','change']
  2153. }
  2154. ],
  2155. docEngineerName:[
  2156. {
  2157. required: true,
  2158. message: ' ',
  2159. trigger: ['blur','change']
  2160. }
  2161. ],
  2162. projectManagerName:[
  2163. {
  2164. required: true,
  2165. message: ' ',
  2166. trigger: ['blur','change']
  2167. }
  2168. ],
  2169. engineerName:[
  2170. {
  2171. required: true,
  2172. message: ' ',
  2173. trigger: ['blur','change']
  2174. }
  2175. ],
  2176. cQualityEngineer1Name:[
  2177. {
  2178. required: true,
  2179. message: ' ',
  2180. trigger: ['blur','change']
  2181. }
  2182. ],
  2183. cQualityEngineer2Name:[
  2184. {
  2185. required: true,
  2186. message: ' ',
  2187. trigger: ['blur','change']
  2188. }
  2189. ],
  2190. cQualityEngineer3Name:[
  2191. {
  2192. required: true,
  2193. message: ' ',
  2194. trigger: ['blur','change']
  2195. }
  2196. ],
  2197. cManufactureEngineerName:[
  2198. {
  2199. required: true,
  2200. message: ' ',
  2201. trigger: ['blur','change']
  2202. }
  2203. ],
  2204. projectCategoryType:[
  2205. {
  2206. required: true,
  2207. message: ' ',
  2208. trigger: ['blur','change']
  2209. }
  2210. ],
  2211. documentTypeIdType:[
  2212. {
  2213. required: true,
  2214. message: ' ',
  2215. trigger: ['blur','change']
  2216. }
  2217. ],
  2218. documentTypeType:[
  2219. {
  2220. required: true,
  2221. message: ' ',
  2222. trigger: ['blur','change']
  2223. }
  2224. ],
  2225. responsibleDepartmentType:[
  2226. {
  2227. required: true,
  2228. message: ' ',
  2229. trigger: ['blur','change']
  2230. }
  2231. ],
  2232. estimatedCompletionDaysType:[
  2233. {
  2234. required: true,
  2235. message: ' ',
  2236. trigger: ['blur','change']
  2237. }
  2238. ],
  2239. activeType:[
  2240. {
  2241. required: true,
  2242. message: ' ',
  2243. trigger: ['blur','change']
  2244. }
  2245. ],
  2246. bu:[
  2247. {
  2248. required: true,
  2249. message: ' ',
  2250. trigger: ['blur','change']
  2251. }
  2252. ],
  2253. finalPartNo:[
  2254. {
  2255. required: true,
  2256. message: ' ',
  2257. trigger: ['blur','change']
  2258. }
  2259. ],
  2260. finalPartDesc:[
  2261. {
  2262. required: true,
  2263. message: ' ',
  2264. trigger: ['blur','change']
  2265. }
  2266. ],
  2267. needDate:[
  2268. {
  2269. required: true,
  2270. message: ' ',
  2271. trigger: ['blur','change']
  2272. }
  2273. ],
  2274. projectCreationDate:[
  2275. {
  2276. required: true,
  2277. message: ' ',
  2278. trigger: ['blur','change']
  2279. }
  2280. ],
  2281. wantedConfirmDate:[
  2282. {
  2283. required: true,
  2284. message: ' ',
  2285. trigger: ['blur','change']
  2286. }
  2287. ],
  2288. },
  2289. projectCategoryList: [
  2290. {
  2291. projectCategory: 'Low Risk',
  2292. },
  2293. {
  2294. projectCategory: 'High Risk',
  2295. },
  2296. {
  2297. projectCategory: 'Sustaining',
  2298. }
  2299. ],
  2300. cProjectRegionList: [
  2301. {
  2302. cProjectRegion: 'Global',
  2303. },
  2304. {
  2305. cProjectRegion: 'APAC',
  2306. },
  2307. {
  2308. cProjectRegion: 'CHINA',
  2309. },
  2310. {
  2311. cProjectRegion: 'EU',
  2312. },
  2313. {
  2314. cProjectRegion: 'US',
  2315. },
  2316. {
  2317. cProjectRegion: 'Mexico',
  2318. },
  2319. {
  2320. cProjectRegion: 'Other',
  2321. },
  2322. ],
  2323. priorityList: [
  2324. {
  2325. priority: 'Low',
  2326. },
  2327. {
  2328. priority: 'Middle',
  2329. },
  2330. {
  2331. priority: 'High',
  2332. },
  2333. ],
  2334. statusList: [
  2335. {
  2336. status: '草稿',
  2337. },
  2338. {
  2339. status: '进行中',
  2340. },
  2341. {
  2342. status: '已量产',
  2343. }
  2344. ],
  2345. userBuList: [],
  2346. menuId: this.$route.meta.menuId,
  2347. }
  2348. },
  2349. mounted () {
  2350. this.$nextTick(() => {
  2351. this.height = window.innerHeight - 558
  2352. })
  2353. EventBus.$on('updateProjectInfo', () => {
  2354. this.getDataList();
  2355. });
  2356. },
  2357. activated() {
  2358. this.$store.commit("sift/commitSearchFunction",this.queryDataList)
  2359. },
  2360. created () {
  2361. // 按钮控制
  2362. this.getButtonAuthData()
  2363. // 获取用户的 site 和 bu
  2364. this.getSiteAndBuByUserName()
  2365. // 校验用户是否收藏
  2366. this.favoriteIsOk()
  2367. // 动态列
  2368. this.getTableUserColumn(this.$route.meta.menuId+'table1',1)
  2369. this.getTableUserColumn(this.$route.meta.menuId+'table2',2)
  2370. if (!this.authSearch) {
  2371. if (!this.agencyMatters){
  2372. // 获取数据列表
  2373. this.getDataList()
  2374. }
  2375. }
  2376. },
  2377. methods: {
  2378. // 获取用户的bu
  2379. getSiteAndBuByUserName () {
  2380. let tempData = {
  2381. username: this.$store.state.user.name,
  2382. }
  2383. getSiteAndBuByUserName(tempData).then(({data}) => {
  2384. if (data.code === 0) {
  2385. this.userBuList = data.rows
  2386. }
  2387. })
  2388. },
  2389. // 获取基础数据列表S
  2390. getBaseList (val,type) {
  2391. this.tagNo = val
  2392. this.$nextTick(() => {
  2393. let strVal = ''
  2394. let conSql = ''
  2395. if (val === 509 ) {
  2396. strVal = this.modalData.customerNo ? this.modalData.customerNo : ''
  2397. }
  2398. if (val === 2006 ) {
  2399. conSql = " and b.site = '" + this.$store.state.user.site + "'"
  2400. }
  2401. if (val === 2007 ) {
  2402. conSql = " and b.site = '" + this.$store.state.user.site + "'"
  2403. }
  2404. if (val === 2008 ) {
  2405. conSql = " and b.site = '" + this.$store.state.user.site + "'"
  2406. }
  2407. this.$refs.baseList.init(val, strVal,conSql)
  2408. })
  2409. },
  2410. /* 列表方法的回调 */
  2411. getBaseData (val) {
  2412. if (this.tagNo === 509) {
  2413. this.modalData.customerNo = val.customer_no
  2414. this.modalData.customerDesc = val.customer_desc
  2415. }
  2416. if (this.tagNo === 2006) {
  2417. this.modalData.cQualityEngineer4 = val.username + '-' + val.user_display
  2418. this.modalData.cQualityEngineer4Name = this.modalData.cQualityEngineer4.split('-')[1]
  2419. searchBusinessInfo7(this.searchBusinessData7).then(({data}) => {
  2420. if (data && data.code === 0){
  2421. this.businessDataList7 = data.rows;
  2422. }
  2423. })
  2424. }
  2425. if (this.tagNo === 2007) {
  2426. this.modalData.cQualityEngineer5 = val.username + '-' + val.user_display
  2427. this.modalData.cQualityEngineer5Name = this.modalData.cQualityEngineer5.split('-')[1]
  2428. searchBusinessInfo7(this.searchBusinessData7).then(({data}) => {
  2429. if (data && data.code === 0){
  2430. this.businessDataList7 = data.rows;
  2431. }
  2432. })
  2433. }
  2434. if (this.tagNo === 2008) {
  2435. this.modalData.cQualityEngineer6 = val.username + '-' + val.user_display
  2436. this.modalData.cQualityEngineer6Name = this.modalData.cQualityEngineer6.split('-')[1]
  2437. searchBusinessInfo7(this.searchBusinessData7).then(({data}) => {
  2438. if (data && data.code === 0){
  2439. this.businessDataList7 = data.rows;
  2440. }
  2441. })
  2442. }
  2443. },
  2444. newCustomer () {
  2445. this.modalData.customerNo = ''
  2446. this.modalData.customerDesc = ''
  2447. this.newCustomerFlag = true
  2448. },
  2449. customerNoBlur(){
  2450. let params = {
  2451. customerNo: this.modalData.customerNo,
  2452. createBy: this.$store.state.user.name,
  2453. }
  2454. queryCustomerList(params).then(({data}) => {
  2455. if (data && data.code === 0) {
  2456. if (data.rows.length === 1){
  2457. this.modalData.customerDesc = data.rows[0].customerDesc
  2458. }else {
  2459. this.modalData.customerDesc = ''
  2460. }
  2461. }else {
  2462. this.$message.warning(data.message)
  2463. }
  2464. }).catch((error) => {
  2465. this.$message.error(error)
  2466. })
  2467. },
  2468. saveNewCustomer () {
  2469. this.generateNextCustomerNo().then((customerNo) => {
  2470. if (customerNo !== false) {
  2471. this.modalData.customerNo = customerNo
  2472. let tempData = {
  2473. site: this.$store.state.user.site,
  2474. customerNo: customerNo,
  2475. customerDesc: this.modalData.customerDesc,
  2476. createBy: this.$store.state.user.name,
  2477. }
  2478. saveNewCustomer(tempData).then(({data}) => {
  2479. if (data.code === 0) {
  2480. this.modalData.customerNo = ''
  2481. this.modalData.customerDesc = ''
  2482. this.$message.success(data.msg)
  2483. this.newCustomerFlag = false
  2484. }
  2485. })
  2486. }
  2487. else {
  2488. this.$alert('该客户已存在,请重新输入客户名称!', '提示', {
  2489. confirmButtonText: '确定',
  2490. type: 'warning'
  2491. })
  2492. }
  2493. })
  2494. },
  2495. generateNextCustomerNo() {
  2496. return new Promise((resolve, reject) => {
  2497. getCustomerNo(this.modalData).then(({ data }) => {
  2498. if (data.code === 0){
  2499. if (data.data === null || data.data === undefined || data.data === '' || data.data === '0') {
  2500. resolve('C0001');
  2501. } else {
  2502. const stringData = String(data.data.customerNo); // 显式转换为字符串
  2503. const lastCustomerNo = parseInt(stringData.substring(1));
  2504. const nextCustomerNo = lastCustomerNo + 1;
  2505. let customerNo;
  2506. if (nextCustomerNo < 10) {
  2507. customerNo = 'C000' + nextCustomerNo;
  2508. } else if (nextCustomerNo < 100) {
  2509. customerNo = 'C00' + nextCustomerNo;
  2510. } else if (nextCustomerNo < 1000) {
  2511. customerNo = 'C0' + nextCustomerNo;
  2512. } else {
  2513. customerNo = 'C' + nextCustomerNo;
  2514. }
  2515. resolve(customerNo);
  2516. }
  2517. }
  2518. else {
  2519. resolve(false);
  2520. }
  2521. }).catch(error => {
  2522. reject('Failed to fetch customerNo: ' + error);
  2523. });
  2524. });
  2525. },
  2526. closeNewCustomer () {
  2527. this.modalData.customerNo = ''
  2528. this.modalData.customerDesc = ''
  2529. this.newCustomerFlag = false
  2530. },
  2531. // 校验用户是否收藏
  2532. favoriteIsOk () {
  2533. let userFavorite = {
  2534. userId: this.$store.state.user.id,
  2535. languageCode: this.$i18n.locale
  2536. }
  2537. userFavoriteList(userFavorite).then(({data}) => {
  2538. for (let i = 0; i < data.list.length; i++) {
  2539. if (this.$route.meta.menuId === data.list[i].menuId) {
  2540. this.favorite = true
  2541. }
  2542. }
  2543. })
  2544. },
  2545. // 收藏 OR 取消收藏
  2546. favoriteFunction () {
  2547. let userFavorite = {
  2548. userId: this.$store.state.user.id,
  2549. functionId: this.$route.meta.menuId,
  2550. }
  2551. if (this.favorite) {
  2552. removeUserFavorite(userFavorite).then(({data}) => {
  2553. this.$message.success(data.msg)
  2554. this.favorite = false
  2555. })
  2556. } else {
  2557. // 收藏
  2558. saveUserFavorite(userFavorite).then(({data}) => {
  2559. this.$message.success(data.msg)
  2560. this.favorite = true
  2561. })
  2562. }
  2563. },
  2564. //导出excel
  2565. async createExportData () {
  2566. this.searchData.limit = -1
  2567. this.searchData.page = 1
  2568. await eamProjectInfoSearch(this.searchData).then(({data}) => {
  2569. this.exportList = data.page.list
  2570. this.exportList.forEach((item) => {
  2571. item.projectManagerName = item.projectManager.split('-')[1];
  2572. item.projectOwnerName = item.projectOwner.split('-')[1];
  2573. item.engineerName = item.engineer.split('-')[1];
  2574. item.cQualityEngineer1Name = item.cQualityEngineer1.split('-')[1];
  2575. item.cQualityEngineer2Name = item.cQualityEngineer2.split('-')[1];
  2576. item.cQualityEngineer3Name = item.cQualityEngineer3.split('-')[1];
  2577. item.cManufactureEngineerName = item.cManufactureEngineer.split('-')[1];
  2578. if (item.cQualityEngineer4 !== null && item.cQualityEngineer4 !== '') {
  2579. item.cQualityEngineer4Name = item.cQualityEngineer4.split('-')[1];
  2580. }
  2581. if (item.docEngineer !== null && item.docEngineer !== '') {
  2582. item.docEngineerName = item.docEngineer.split('-')[1];
  2583. }
  2584. if (item.cQualityEngineer5 !== null && item.cQualityEngineer5 !== '') {
  2585. item.cQualityEngineer5Name = item.cQualityEngineer5.split('-')[1];
  2586. }
  2587. if (item.cQualityEngineer6 !== null && item.cQualityEngineer6 !== '') {
  2588. item.cQualityEngineer6Name = item.cQualityEngineer6.split('-')[1];
  2589. }
  2590. });
  2591. for (let i = 0; i < this.exportList.length; i++) {
  2592. if (this.exportList[i].responsibleDepartment === 'R001') {
  2593. this.exportList[i].projectLeader = this.exportList[i].projectManager.split("-")[1];
  2594. } else if (this.exportList[i].responsibleDepartment === 'R002') {
  2595. this.exportList[i].projectLeader = this.exportList[i].projectOwner.split("-")[1];
  2596. } else if (this.exportList[i].responsibleDepartment === 'R004') {
  2597. this.exportList[i].projectLeader = this.exportList[i].engineer.split("-")[1];
  2598. } else if (this.exportList[i].responsibleDepartment === 'R005') {
  2599. this.exportList[i].projectLeader = this.exportList[i].cQualityEngineer1.split("-")[1];
  2600. } else if (this.exportList[i].responsibleDepartment === 'R007') {
  2601. this.exportList[i].projectLeader = this.exportList[i].cQualityEngineer2.split("-")[1];
  2602. } else if (this.exportList[i].responsibleDepartment === 'R008') {
  2603. this.exportList[i].projectLeader = this.exportList[i].cQualityEngineer3.split("-")[1];
  2604. } else if (this.exportList[i].responsibleDepartment === 'R009') {
  2605. this.exportList[i].projectLeader = this.exportList[i].cManufactureEngineer.split("-")[1];
  2606. } else if (this.exportList[i].responsibleDepartment === 'R012') {
  2607. if (this.exportList[i].docEngineer !== null && this.exportList[i].docEngineer !== '') {
  2608. this.exportList[i].projectLeader = this.exportList[i].docEngineer.split("-")[1];
  2609. }
  2610. } else if (this.exportList[i].responsibleDepartment === 'R011') {
  2611. if (this.exportList[i].cQualityEngineer4 !== null && this.exportList[i].cQualityEngineer4 !== '') {
  2612. this.exportList[i].projectLeader = this.exportList[i].cQualityEngineer4.split("-")[1];
  2613. }
  2614. } else if (this.exportList[i].responsibleDepartment === 'R013') {
  2615. if (this.exportList[i].cQualityEngineer5 !== null && this.exportList[i].cQualityEngineer5 !== '') {
  2616. this.exportList[i].projectLeader = this.exportList[i].cQualityEngineer5.split("-")[1];
  2617. }
  2618. } else if (this.exportList[i].responsibleDepartment === 'R014') {
  2619. if (this.exportList[i].cQualityEngineer6 !== null && this.exportList[i].cQualityEngineer6 !== '') {
  2620. this.exportList[i].projectLeader = this.exportList[i].cQualityEngineer6.split("-")[1];
  2621. }
  2622. }
  2623. }
  2624. })
  2625. return this.exportList
  2626. },
  2627. startDownload () {},
  2628. finishDownload () {},
  2629. fields () {
  2630. let json = "{"
  2631. this.columnList.forEach((item, index) => {
  2632. if (index == this.columnList.length - 1) {
  2633. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\""
  2634. } else {
  2635. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\"" + ","
  2636. }
  2637. })
  2638. json += "}"
  2639. let s = eval("(" + json + ")")
  2640. return s
  2641. },
  2642. agencyMatter(){
  2643. this.agencyMatters = false
  2644. this.projectPartCurrentRow = null
  2645. this.getDataList()
  2646. },
  2647. // 获取数据列表
  2648. getDataList (params) {
  2649. this.selectTypeFlag = params
  2650. this.searchData.limit = this.pageSize
  2651. this.searchData.page = this.pageIndex
  2652. eamProjectInfoSearch(this.searchData).then(({data}) => {
  2653. if (data.code === 0) {
  2654. this.dataList = data.page.list
  2655. this.allPersonnelInfoList = data.rows
  2656. this.pageIndex = data.page.currPage
  2657. this.pageSize = data.page.pageSize
  2658. this.totalPage = data.page.totalCount
  2659. // 遍历dataList
  2660. this.dataList.forEach((item) => {
  2661. item.projectManagerName = item.projectManager.split('-')[1]
  2662. item.projectOwnerName = item.projectOwner.split('-')[1]
  2663. item.engineerName = item.engineer.split('-')[1]
  2664. item.cQualityEngineer1Name = item.cQualityEngineer1.split('-')[1]
  2665. item.cQualityEngineer2Name = item.cQualityEngineer2.split('-')[1]
  2666. item.cQualityEngineer3Name = item.cQualityEngineer3.split('-')[1]
  2667. if (item.cQualityEngineer4 != null && item.cQualityEngineer4 !== ''){
  2668. item.cQualityEngineer4Name = item.cQualityEngineer4.split('-')[1]
  2669. }
  2670. if (item.cQualityEngineer5 != null && item.cQualityEngineer5 !== ''){
  2671. item.cQualityEngineer5Name = item.cQualityEngineer5.split('-')[1]
  2672. }
  2673. if (item.cQualityEngineer6 != null && item.cQualityEngineer6 !== ''){
  2674. item.cQualityEngineer6Name = item.cQualityEngineer6.split('-')[1]
  2675. }
  2676. item.cManufactureEngineerName = item.cManufactureEngineer.split('-')[1]
  2677. if (item.docEngineer != null && item.docEngineer !== ''){
  2678. item.docEngineerName = item.docEngineer.split('-')[1]
  2679. }
  2680. })
  2681. // 获取全部人员信息用于下拉框
  2682. this.getAllPersonnelList()
  2683. // 判断是否全部存在数据
  2684. if (this.totalPage > 0) {
  2685. if (this.projectPartCurrentRow === null || this.projectPartCurrentRow === undefined) {
  2686. // 设置选中行
  2687. this.$refs.mainTable.setCurrentRow(this.dataList[0])
  2688. // 加载当前的页签的table
  2689. this.refreshCurrentTabTable()
  2690. } else {
  2691. let index = this.dataList.findIndex(item => item.projectId === this.projectPartCurrentRow.projectId)
  2692. // 设置选中行
  2693. this.$refs.mainTable.setCurrentRow(this.dataList[index])
  2694. // 加载当前的页签的table
  2695. this.refreshCurrentTabTable()
  2696. }
  2697. }
  2698. } else {
  2699. this.$alert(data.msg, '提示', {
  2700. confirmButtonText: '确定',
  2701. type: 'warning'
  2702. })
  2703. }
  2704. })
  2705. },
  2706. queryDataList (params) {
  2707. this.selectTypeFlag = params
  2708. this.searchData.limit = this.pageSize
  2709. this.searchData.page = this.pageIndex
  2710. if (params !== null && params !== undefined) {
  2711. params.limit = this.pageSize
  2712. params.page = this.pageIndex
  2713. params.site = this.$store.state.user.site
  2714. params.userName = this.$store.state.user.name
  2715. } else {
  2716. params = this.searchData
  2717. }
  2718. queryEamProjectInfo(params).then(({data}) => {
  2719. if (data.code === 0) {
  2720. this.dataList = data.page.list
  2721. this.allPersonnelInfoList = data.rows
  2722. this.pageIndex = data.page.currPage
  2723. this.pageSize = data.page.pageSize
  2724. this.totalPage = data.page.totalCount
  2725. // 遍历dataList
  2726. this.dataList.forEach((item) => {
  2727. item.projectManagerName = item.projectManager.split('-')[1]
  2728. item.projectOwnerName = item.projectOwner.split('-')[1]
  2729. item.engineerName = item.engineer.split('-')[1]
  2730. item.cQualityEngineer1Name = item.cQualityEngineer1.split('-')[1]
  2731. item.cQualityEngineer2Name = item.cQualityEngineer2.split('-')[1]
  2732. item.cQualityEngineer3Name = item.cQualityEngineer3.split('-')[1]
  2733. if (item.cQualityEngineer4 != null && item.cQualityEngineer4 !== ''){
  2734. item.cQualityEngineer4Name = item.cQualityEngineer4.split('-')[1]
  2735. }
  2736. if (item.cQualityEngineer5 != null && item.cQualityEngineer5 !== ''){
  2737. item.cQualityEngineer5Name = item.cQualityEngineer5.split('-')[1]
  2738. }
  2739. if (item.cQualityEngineer6 != null && item.cQualityEngineer6 !== ''){
  2740. item.cQualityEngineer6Name = item.cQualityEngineer6.split('-')[1]
  2741. }
  2742. item.cManufactureEngineerName = item.cManufactureEngineer.split('-')[1]
  2743. if (item.docEngineer != null && item.docEngineer !== ''){
  2744. item.docEngineerName = item.docEngineer.split('-')[1]
  2745. }
  2746. })
  2747. // 获取全部人员信息用于下拉框
  2748. this.getAllPersonnelList()
  2749. // 判断是否全部存在数据
  2750. if (this.totalPage > 0) {
  2751. // 设置选中行
  2752. this.$refs.mainTable.setCurrentRow(this.dataList[0])
  2753. // 加载当前的页签的table
  2754. this.refreshCurrentTabTable()
  2755. }
  2756. } else {
  2757. this.$alert(data.msg, '提示', {
  2758. confirmButtonText: '确定',
  2759. type: 'warning'
  2760. })
  2761. }
  2762. })
  2763. },
  2764. getAllPersonnelList() {
  2765. let allPersonnelInfoDataList = JSON.parse(JSON.stringify(this.allPersonnelInfoList))
  2766. // 找出所有的同时过滤出唯一的 project owners, managers, and engineers
  2767. const allPersonnelList = [];
  2768. const projectOwnersMap = new Map();
  2769. const projectManagersMap = new Map();
  2770. const engineersMap = new Map();
  2771. allPersonnelInfoDataList.forEach((item) => {
  2772. // Handle project owners
  2773. if (!projectOwnersMap.has(item.projectOwner)) {
  2774. const projectOwnerId = projectOwnersMap.size + 1; // Incrementing by +1
  2775. projectOwnersMap.set(item.projectOwner, {
  2776. projectOwnerId,
  2777. projectOwner: item.projectOwner,
  2778. projectOwnerName: item.projectOwner.split('-')[1]
  2779. });
  2780. allPersonnelList.push(projectOwnersMap.get(item.projectOwner));
  2781. }
  2782. // Handle project managers
  2783. if (!projectManagersMap.has(item.projectManager)) {
  2784. const projectManagerId = projectManagersMap.size + 1;
  2785. projectManagersMap.set(item.projectManager, {
  2786. projectManagerId,
  2787. projectManager: item.projectManager,
  2788. projectManagerName: item.projectManager.split('-')[1]
  2789. });
  2790. allPersonnelList.push(projectManagersMap.get(item.projectManager));
  2791. }
  2792. // Handle engineers
  2793. if (!engineersMap.has(item.engineer)) {
  2794. const engineerId = engineersMap.size + 1;
  2795. engineersMap.set(item.engineer, {
  2796. engineerId,
  2797. engineer: item.engineer,
  2798. engineerName: item.engineer.split('-')[1]
  2799. });
  2800. allPersonnelList.push(engineersMap.get(item.engineer));
  2801. }
  2802. });
  2803. this.allPersonnelInfoList = allPersonnelList;
  2804. },
  2805. // ======== 列表操作方法 ========
  2806. /**
  2807. * 单机选中项目信息
  2808. * @param row
  2809. */
  2810. projectPartClickRow(row){
  2811. this.projectPartCurrentRow=JSON.parse(JSON.stringify(row));
  2812. },
  2813. /**
  2814. * 当前值发生变化的时候修改
  2815. * @param row
  2816. * @param oldRow
  2817. */
  2818. changeCurrentRow (row, oldRow) {
  2819. // 判断是否是获取焦点的事件
  2820. if (row) {
  2821. this.projectPartCurrentRow = JSON.parse(JSON.stringify(row))
  2822. //刷新当前页表
  2823. this.refreshCurrentTabTable()
  2824. }
  2825. },
  2826. // 每页数
  2827. sizeChangeHandle (val) {
  2828. this.pageSize = val
  2829. this.pageIndex = 1
  2830. if (this.selectTypeFlag !== null && this.selectTypeFlag !== undefined) {
  2831. this.queryDataList(this.selectTypeFlag)
  2832. } else {
  2833. this.getDataList()
  2834. }
  2835. },
  2836. // 当前页
  2837. currentChangeHandle (val) {
  2838. this.pageIndex = val
  2839. if (this.selectTypeFlag !== null && this.selectTypeFlag !== undefined) {
  2840. this.queryDataList(this.selectTypeFlag)
  2841. } else {
  2842. this.getDataList()
  2843. }
  2844. },
  2845. addModal () {
  2846. this.modalData = {
  2847. flag: '1',
  2848. bu: this.userBuList[0].buNo,
  2849. site: this.$store.state.user.site,
  2850. customerNo:'',
  2851. customerDesc:'',
  2852. projectCategory:'',
  2853. testPartNo:'',
  2854. partDesc:'',
  2855. projectNo: '',
  2856. projectDesc:'',
  2857. projectCloseDate:'',
  2858. needDate:'',
  2859. cProjectRegion: '',
  2860. projectManager:'',
  2861. projectOwner:'',
  2862. projectOwnerName:'',
  2863. projectManagerName:'',
  2864. engineer: '',
  2865. engineerName: '',
  2866. cQualityEngineer1:'',
  2867. cQualityEngineer1Name:'',
  2868. cQualityEngineer2:'',
  2869. cQualityEngineer2Name:'',
  2870. cQualityEngineer3:'',
  2871. cQualityEngineer3Name:'',
  2872. cQualityEngineer4:'',
  2873. cQualityEngineer4Name:'',
  2874. cQualityEngineer5:'',
  2875. cQualityEngineer5Name:'',
  2876. cQualityEngineer6:'',
  2877. cQualityEngineer6Name:'',
  2878. cManufactureEngineer: '',
  2879. cManufactureEngineerName: '',
  2880. docEngineer: '',
  2881. docEngineerName: '',
  2882. projectCreationDate:new Date(),
  2883. createDate: '',
  2884. // active: 'Y',
  2885. createBy: this.$store.state.user.name,
  2886. updateBy: this.$store.state.user.name,
  2887. }
  2888. this.modalDisableFlag = false
  2889. this.modalPartDisableFlag = false
  2890. this.modalFlag = true
  2891. },
  2892. updateModal (row) {
  2893. this.modalData = {
  2894. flag: '2',
  2895. site: row.site,
  2896. bu: row.site + '_' + row.buNo,
  2897. customerNo: row.customerNo,
  2898. customerDesc: row.customerDesc,
  2899. projectCategory: row.projectCategory,
  2900. testPartNo: row.testPartNo,
  2901. partDesc: row.partDesc,
  2902. projectId: row.projectId,
  2903. projectNo: row.projectNo,
  2904. projectDesc: row.projectDesc,
  2905. priority: row.priority,
  2906. projectCloseDate: row.projectCloseDate,
  2907. needDate: row.needDate,
  2908. cProjectRegion: row.cProjectRegion,
  2909. projectManager: row.projectManager,
  2910. projectManagerName: row.projectManager.split('-')[1], // 截取用户名
  2911. projectOwner: row.projectOwner,
  2912. projectOwnerName: row.projectOwner.split('-')[1], // 截取用户名
  2913. engineer: row.engineer,
  2914. engineerName: row.engineer.split('-')[1], // 截取用户名
  2915. cQualityEngineer1: row.cQualityEngineer1,
  2916. cQualityEngineer1Name: row.cQualityEngineer1.split('-')[1], // 截取用户名
  2917. cQualityEngineer2: row.cQualityEngineer2,
  2918. cQualityEngineer2Name: row.cQualityEngineer2.split('-')[1], // 截取用户名
  2919. cQualityEngineer3: row.cQualityEngineer3,
  2920. cQualityEngineer3Name: row.cQualityEngineer3.split('-')[1], // 截取用户名
  2921. cQualityEngineer4: row.cQualityEngineer4,
  2922. cQualityEngineer5: row.cQualityEngineer5,
  2923. cQualityEngineer6: row.cQualityEngineer6,
  2924. cManufactureEngineer: row.cManufactureEngineer,
  2925. cManufactureEngineerName: row.cManufactureEngineer.split('-')[1], // 截取用户名
  2926. docEngineer: row.docEngineer,
  2927. projectCreationDate: row.projectCreationDate,
  2928. status: row.status,
  2929. // active: row.active,
  2930. createBy: this.$store.state.user.name,
  2931. updateBy: this.$store.state.user.name,
  2932. }
  2933. if (row.cQualityEngineer4 != null && row.cQualityEngineer4 !== ''){
  2934. this.modalData.cQualityEngineer4Name= row.cQualityEngineer4.split('-')[1] // 截取用户名
  2935. }
  2936. if (row.cQualityEngineer5 != null && row.cQualityEngineer5 !== ''){
  2937. this.modalData.cQualityEngineer5Name= row.cQualityEngineer5.split('-')[1] // 截取用户名
  2938. }
  2939. if (row.cQualityEngineer6 != null && row.cQualityEngineer6 !== ''){
  2940. this.modalData.cQualityEngineer6Name= row.cQualityEngineer6.split('-')[1] // 截取用户名
  2941. }
  2942. if (row.docEngineer != null && row.docEngineer !== ''){
  2943. this.modalData.docEngineerName= row.docEngineer.split('-')[1] // 截取用户名
  2944. }
  2945. this.modalDisableFlag = true
  2946. this.modalPartDisableFlag = false
  2947. this.modalFlag = true
  2948. },
  2949. // 删除
  2950. eamProjectInfoDelete (row) {
  2951. this.$confirm(`是否删除这个项目信息?`, '提示', {
  2952. confirmButtonText: '确定',
  2953. cancelButtonText: '取消',
  2954. type: 'warning'
  2955. }).then(() => {
  2956. eamProjectInfoDelete(row).then(({data}) => {
  2957. if (data && data.code === '0') {
  2958. this.getDataList()
  2959. EventBus.$emit('updateProjectPartInfo')
  2960. this.$message({
  2961. message: '操作成功',
  2962. type: 'success',
  2963. duration: 1500,
  2964. onClose: () => {}
  2965. })
  2966. } else {
  2967. this.$alert(data.msg, '错误', {
  2968. confirmButtonText: '确定'
  2969. })
  2970. }
  2971. })
  2972. }).catch(() => {
  2973. })
  2974. },
  2975. saveData () {
  2976. this.modalData.oriProjectId = this.modalData.projectNo
  2977. this.modalData.finalCustomerId = this.modalData.customerNo
  2978. if (this.modalData.projectNo === '' || this.modalData.projectNo == null) {
  2979. this.$message.warning('请输入项目编码!')
  2980. return
  2981. }
  2982. if (this.modalData.projectDesc === '' || this.modalData.projectDesc == null) {
  2983. this.$message.warning('请输入项目名称!')
  2984. return
  2985. }
  2986. if (this.modalData.customerNo === '' || this.modalData.customerNo == null) {
  2987. this.modalData.customerNo = 'C0000'
  2988. this.modalData.customerDesc = '无客户'
  2989. this.modalData.finalCustomerId = this.modalData.customerNo
  2990. }
  2991. if (this.modalData.customerDesc === '' || this.modalData.customerDesc == null) {
  2992. this.$alert('该客户不存在,请重新输入客户编码或点击新客户添加客户!', '提示', {
  2993. confirmButtonText: '确定',
  2994. type: 'warning'
  2995. })
  2996. return;
  2997. }
  2998. //请选择立项日期
  2999. if (this.searchData.projectCreationDate == null) {
  3000. this.$message.warning('请选择立项日期!')
  3001. return
  3002. }
  3003. if (this.modalData.needDate === '' || this.modalData.needDate == null) {
  3004. this.$message.warning('请选择预计完成日期!')
  3005. return
  3006. }
  3007. if (this.modalData.projectCategory === '' || this.modalData.projectCategory == null) {
  3008. this.$message.warning('请选择项目分类!')
  3009. return
  3010. }
  3011. if (this.modalData.bu === '' || this.modalData.bu == null) {
  3012. this.$message.warning('请选择BU!')
  3013. return
  3014. }
  3015. if (this.modalData.projectManager === '' || this.modalData.projectManager == null) {
  3016. this.$message.warning('请输入PM/Sales!')
  3017. return
  3018. }if (this.modalData.projectOwner === '' || this.modalData.projectOwner == null) {
  3019. this.$message.warning('请输入PjM!')
  3020. return
  3021. }
  3022. if (this.modalData.engineer === '' || this.modalData.engineer == null) {
  3023. this.$message.warning('请输入Engineer!')
  3024. return
  3025. }
  3026. if (this.modalData.cQualityEngineer1 === '' || this.modalData.cQualityEngineer1 == null) {
  3027. this.$message.warning('请输入IPQC-Lam/Pri/Etch/Slit!')
  3028. return
  3029. }
  3030. if (this.modalData.cQualityEngineer2 === '' || this.modalData.cQualityEngineer2 == null) {
  3031. this.$message.warning('请输入IPQC-Converting!')
  3032. return
  3033. }
  3034. if (this.modalData.cQualityEngineer3 === '' || this.modalData.cQualityEngineer3 == null) {
  3035. this.$message.warning('请输入FQC1!')
  3036. return
  3037. }
  3038. if (this.modalData.cQualityEngineer5 === '' || this.modalData.cQualityEngineer5 == null) {
  3039. this.$message.warning('请输入FQC2!')
  3040. return
  3041. }
  3042. if (this.modalData.cQualityEngineer6 === '' || this.modalData.cQualityEngineer6 == null) {
  3043. this.$message.warning('请输入IQC!')
  3044. return
  3045. }
  3046. if (this.modalData.cQualityEngineer4 === '' || this.modalData.cQualityEngineer4 == null) {
  3047. this.$message.warning('请输入SQE!')
  3048. return
  3049. }
  3050. if (this.modalData.cManufactureEngineer === '' || this.modalData.cManufactureEngineer == null) {
  3051. this.$message.warning('请输入MFG!')
  3052. return
  3053. }
  3054. if (this.modalData.docEngineer === '' || this.modalData.docEngineer == null) {
  3055. this.$message.warning('请输入文档工程师!')
  3056. return
  3057. }
  3058. // if (this.modalData.active === '' || this.modalData.active == null) {
  3059. // this.$message.warning('选择是否在用!')
  3060. // return
  3061. // }
  3062. if (this.modalData.flag === '1') {
  3063. // 遍历userBuList
  3064. this.userBuList.forEach((item) => {
  3065. if (this.modalData.bu === item.buNo) {
  3066. this.modalData.buDesc = item.buDesc
  3067. }
  3068. })
  3069. this.$confirm('项目 ' + this.modalData.projectNo + '-' + this.modalData.projectDesc + ' 的BU为:' + this.modalData.buDesc + ',是否确认继续保存?', '提示', {
  3070. confirmButtonText: '确定',
  3071. cancelButtonText: '取消',
  3072. type: 'warning'
  3073. }).then(() => {
  3074. if (new Date(this.modalData.needDate).getTime() < new Date().getTime()) {
  3075. this.$confirm('预计完成日期小于当前日期,确定继续保存?', '提示', {
  3076. confirmButtonText: '确定',
  3077. cancelButtonText: '取消',
  3078. type: 'warning'
  3079. }).then(() => {
  3080. this.modalData.status = '草稿'
  3081. let inData = {
  3082. projectId: null,
  3083. projectNo: this.modalData.projectNo,
  3084. projectDesc: this.modalData.projectDesc,
  3085. projectCategory: this.modalData.projectCategory,
  3086. projectCloseDate: this.modalData.projectCloseDate,
  3087. needDate: this.modalData.needDate,
  3088. cProjectRegion: this.modalData.cProjectRegion,
  3089. projectManager: this.modalData.projectManager,
  3090. projectOwner: this.modalData.projectOwner,
  3091. engineer: this.modalData.engineer,
  3092. cQualityEngineer1: this.modalData.cQualityEngineer1,
  3093. cQualityEngineer2: this.modalData.cQualityEngineer2,
  3094. cQualityEngineer3: this.modalData.cQualityEngineer3,
  3095. cQualityEngineer4: this.modalData.cQualityEngineer4,
  3096. cQualityEngineer5: this.modalData.cQualityEngineer5,
  3097. cQualityEngineer6: this.modalData.cQualityEngineer6,
  3098. cManufactureEngineer: this.modalData.cManufactureEngineer,
  3099. docEngineer: this.modalData.docEngineer,
  3100. projectCreationDate: this.modalData.projectCreationDate,
  3101. createDate: this.modalData.createDate,
  3102. createBy: this.modalData.createBy,
  3103. updateBy: this.modalData.updateBy,
  3104. site: this.modalData.site,
  3105. bu: this.modalData.bu,
  3106. customerNo: this.modalData.customerNo,
  3107. customerDesc: this.modalData.customerDesc,
  3108. status: this.modalData.status,
  3109. active: this.modalData.active,
  3110. closeDate: this.modalData.projectCloseDate,
  3111. buildDate: this.modalData.projectCreationDate,
  3112. priority: this.modalData.priority,
  3113. testPartNo: 'P000000',
  3114. partDesc: '无物料',
  3115. partType: 'Active',
  3116. }
  3117. eamProjectInfoSave(this.modalData).then(({data}) => {
  3118. if (data && data.code === '0') {
  3119. eamProjectInfoSearch(this.searchData).then(({data}) => {
  3120. if (data && data.code === 0) {
  3121. inData.projectId = data.page.list[0].projectId
  3122. eamProjectPartInfoSave(inData).then(({data}) => {
  3123. if (data && data.code === 0) {
  3124. this.getDataList()
  3125. this.modalFlag = false
  3126. EventBus.$emit('updateProjectPartInfo')
  3127. this.$message({
  3128. message: '操作成功',
  3129. type: 'success',
  3130. duration: 1500,
  3131. onClose: () => {
  3132. },
  3133. })
  3134. } else {
  3135. this.$alert(data.msg, '错误', {
  3136. confirmButtonText: '确定'
  3137. })
  3138. }
  3139. })
  3140. }
  3141. })
  3142. }
  3143. })
  3144. }).catch(() => {
  3145. // 如果点击取消提示已取消操作
  3146. this.$message({
  3147. type: 'info',
  3148. message: '已取消操作'
  3149. })
  3150. })
  3151. } else {
  3152. this.modalData.status = '草稿'
  3153. let inData = {
  3154. projectId: null,
  3155. projectNo: this.modalData.projectNo,
  3156. projectDesc: this.modalData.projectDesc,
  3157. projectCategory: this.modalData.projectCategory,
  3158. projectCloseDate: this.modalData.projectCloseDate,
  3159. needDate: this.modalData.needDate,
  3160. cProjectRegion: this.modalData.cProjectRegion,
  3161. projectManager: this.modalData.projectManager,
  3162. projectOwner: this.modalData.projectOwner,
  3163. engineer: this.modalData.engineer,
  3164. cQualityEngineer1: this.modalData.cQualityEngineer1,
  3165. cQualityEngineer2: this.modalData.cQualityEngineer2,
  3166. cQualityEngineer3: this.modalData.cQualityEngineer3,
  3167. cQualityEngineer4: this.modalData.cQualityEngineer4,
  3168. cQualityEngineer5: this.modalData.cQualityEngineer5,
  3169. cQualityEngineer6: this.modalData.cQualityEngineer6,
  3170. cManufactureEngineer: this.modalData.cManufactureEngineer,
  3171. docEngineer: this.modalData.docEngineer,
  3172. projectCreationDate: this.modalData.projectCreationDate,
  3173. createDate: this.modalData.createDate,
  3174. createBy: this.modalData.createBy,
  3175. updateBy: this.modalData.updateBy,
  3176. site: this.modalData.site,
  3177. bu: this.modalData.bu,
  3178. customerNo: this.modalData.customerNo,
  3179. customerDesc: this.modalData.customerDesc,
  3180. status: this.modalData.status,
  3181. active: this.modalData.active,
  3182. closeDate: this.modalData.projectCloseDate,
  3183. buildDate: this.modalData.projectCreationDate,
  3184. priority: this.modalData.priority,
  3185. testPartNo: 'P000000',
  3186. partDesc: '无物料',
  3187. partType: 'Active',
  3188. }
  3189. eamProjectInfoSave(this.modalData).then(({data}) => {
  3190. if (data && data.code === '0') {
  3191. eamProjectInfoSearch(this.searchData).then(({data}) => {
  3192. if (data && data.code === 0) {
  3193. inData.projectId = data.page.list[0].projectId
  3194. eamProjectPartInfoSave(inData).then(({data}) => {
  3195. if (data && data.code === 0) {
  3196. this.getDataList()
  3197. this.modalFlag = false
  3198. EventBus.$emit('updateProjectPartInfo')
  3199. this.$message({
  3200. message: '操作成功',
  3201. type: 'success',
  3202. duration: 1500,
  3203. onClose: () => {
  3204. },
  3205. })
  3206. } else {
  3207. this.$alert(data.msg, '错误', {
  3208. confirmButtonText: '确定'
  3209. })
  3210. }
  3211. })
  3212. }
  3213. })
  3214. } else {
  3215. this.$alert(data.msg, '错误', {
  3216. confirmButtonText: '确定'
  3217. })
  3218. }
  3219. })
  3220. }
  3221. }).catch(() => {
  3222. // 如果点击取消提示已取消操作
  3223. this.$message({
  3224. type: 'info',
  3225. message: '已取消操作'
  3226. })
  3227. })
  3228. } else if (this.modalData.flag === '2'){
  3229. let inData = {
  3230. projectId : this.modalData.projectId,
  3231. projectNo: this.modalData.projectNo,
  3232. projectDesc: this.modalData.projectDesc,
  3233. projectCategory: this.modalData.projectCategory,
  3234. projectCloseDate: this.modalData.projectCloseDate,
  3235. needDate: this.modalData.needDate,
  3236. cProjectRegion: this.modalData.cProjectRegion,
  3237. projectManager: this.modalData.projectManager,
  3238. projectOwner: this.modalData.projectOwner,
  3239. engineer: this.modalData.engineer,
  3240. cQualityEngineer1: this.modalData.cQualityEngineer1,
  3241. cQualityEngineer2: this.modalData.cQualityEngineer2,
  3242. cQualityEngineer3: this.modalData.cQualityEngineer3,
  3243. cQualityEngineer4: this.modalData.cQualityEngineer4,
  3244. cQualityEngineer5: this.modalData.cQualityEngineer5,
  3245. cQualityEngineer6: this.modalData.cQualityEngineer6,
  3246. cManufactureEngineer: this.modalData.cManufactureEngineer,
  3247. docEngineer: this.modalData.docEngineer,
  3248. projectCreationDate: this.modalData.projectCreationDate,
  3249. createDate: this.modalData.createDate,
  3250. createBy: this.modalData.createBy,
  3251. updateBy: this.modalData.updateBy,
  3252. site: this.modalData.site,
  3253. bu: this.modalData.bu,
  3254. customerNo: this.modalData.customerNo,
  3255. customerDesc: this.modalData.customerDesc,
  3256. active: this.modalData.active,
  3257. closeDate : this.modalData.projectCloseDate,
  3258. buildDate : this.modalData.projectCreationDate,
  3259. priority: this.modalData.priority,
  3260. testPartNo: 'P000000',
  3261. partDesc: '无物料',
  3262. }
  3263. if (new Date(this.modalData.needDate).getTime() < new Date().getTime()) {
  3264. this.$confirm('预计完成日期小于当前日期,确定继续保存?', '提示', {
  3265. confirmButtonText: '确定',
  3266. cancelButtonText: '取消',
  3267. type: 'warning'
  3268. }).then(() => {
  3269. eamProjectInfoEdit(this.modalData).then(({data}) => {
  3270. if (data && data.code === '0') {
  3271. if (this.projectPartList.length !== 0 && this.projectPartList[0].testPartNo === 'P000000') {
  3272. inData.projectPartId = this.projectPartList[0].projectPartId
  3273. eamProjectPartInfoEdit(inData).then(({data}) => {
  3274. if (data && data.code !== 0) {
  3275. this.$alert(data.msg, '错误', {
  3276. confirmButtonText: '确定'
  3277. })
  3278. }
  3279. })
  3280. }
  3281. this.getDataList()
  3282. this.modalFlag=false
  3283. EventBus.$emit('updateProjectPartInfo')
  3284. this.$message({
  3285. message: '操作成功',
  3286. type: 'success',
  3287. duration: 1500,
  3288. onClose: () => {}
  3289. })
  3290. } else {
  3291. this.$alert(data.msg, '错误', {
  3292. confirmButtonText: '确定'
  3293. })
  3294. }
  3295. })
  3296. }
  3297. ).catch(() => {
  3298. // 如果点击取消提示已取消操作
  3299. this.$message({
  3300. type: 'info',
  3301. message: '已取消操作'
  3302. })
  3303. })
  3304. }
  3305. else {
  3306. eamProjectInfoEdit(this.modalData).then(({data}) => {
  3307. if (data && data.code === '0') {
  3308. if (this.projectPartList.length !== 0 && this.projectPartList[0].testPartNo === 'P000000') {
  3309. inData.projectPartId = this.projectPartList[0].projectPartId
  3310. eamProjectPartInfoEdit(inData).then(({data}) => {
  3311. if (data && data.code !== 0) {
  3312. this.$alert(data.msg, '错误', {
  3313. confirmButtonText: '确定'
  3314. })
  3315. }
  3316. })
  3317. }
  3318. this.getDataList()
  3319. this.modalFlag=false
  3320. EventBus.$emit('updateProjectPartInfo')
  3321. this.$message({
  3322. message: '操作成功',
  3323. type: 'success',
  3324. duration: 1500,
  3325. onClose: () => {}
  3326. })
  3327. } else {
  3328. this.$alert(data.msg, '错误', {
  3329. confirmButtonText: '确定'
  3330. })
  3331. }
  3332. })
  3333. }
  3334. } else if (this.modalData.flag === '3') {
  3335. if (this.modalData.testPartNo === '' || this.modalData.testPartNo == null) {
  3336. this.$message.warning('请输入项目料号!')
  3337. return
  3338. }
  3339. if (this.modalData.partDesc === '' || this.modalData.partDesc == null) {
  3340. this.$message.warning('请输入料号描述!')
  3341. return
  3342. }
  3343. if (this.modalData.partType === '' || this.modalData.partType == null) {
  3344. this.$message.warning('请选择料号状态!')
  3345. return
  3346. }
  3347. this.modalData.closeDate = this.modalData.projectCloseDate
  3348. this.modalData.buildDate = this.modalData.projectCreationDate
  3349. eamProjectPartInfoSave(this.modalData).then(({data}) => {
  3350. if (data && data.code === 0) {
  3351. this.$message({
  3352. message: '操作成功',
  3353. type: 'success',
  3354. duration: 1500,
  3355. onClose: () => {}
  3356. })
  3357. this.refreshCurrentTabTable()
  3358. this.modalFlag=false
  3359. EventBus.$emit('updateProjectPartInfo')
  3360. } else {
  3361. this.$alert(data.msg, '错误', {
  3362. confirmButtonText: '确定'
  3363. })
  3364. }
  3365. })
  3366. } else {
  3367. if (this.modalData.testPartNo === '' || this.modalData.testPartNo == null) {
  3368. this.$message.warning('请输入项目料号!')
  3369. return
  3370. }
  3371. if (this.modalData.partDesc === '' || this.modalData.partDesc == null) {
  3372. this.$message.warning('请输入料号描述!')
  3373. return
  3374. }
  3375. if (this.modalData.partType === '' || this.modalData.partType == null) {
  3376. this.$message.warning('请选择料号状态!')
  3377. return
  3378. }
  3379. this.modalData.closeDate = this.modalData.projectCloseDate
  3380. this.modalData.buildDate = this.modalData.projectCreationDate
  3381. this.modalData.partType = 'Active'
  3382. eamProjectPartInfoEdit(this.modalData).then(({data}) => {
  3383. if (data && data.code === 0) {
  3384. this.refreshCurrentTabTable()
  3385. this.modalFlag=false
  3386. EventBus.$emit('updateProjectPartInfo')
  3387. this.$message({
  3388. message: '操作成功',
  3389. type: 'success',
  3390. duration: 1500,
  3391. onClose: () => {}
  3392. })
  3393. } else {
  3394. this.$alert(data.msg, '错误', {
  3395. confirmButtonText: '确定'
  3396. })
  3397. }
  3398. })
  3399. }
  3400. },
  3401. searchBusinessInfoList1 () {
  3402. searchBusinessInfo1(this.searchBusinessData1).then(({data}) => {
  3403. if (data && data.code === 0){
  3404. this.businessDataList1 = data.rows;
  3405. }
  3406. })
  3407. },
  3408. searchBusinessInfoList () {
  3409. searchBusinessInfo(this.searchBusinessData).then(({data}) => {
  3410. if (data && data.code === 0){
  3411. this.businessDataList = data.rows;
  3412. }
  3413. })
  3414. },
  3415. searchBusinessInfoList2 () {
  3416. searchBusinessInfo2(this.searchBusinessData2).then(({data}) => {
  3417. if (data && data.code === 0){
  3418. this.businessDataList2 = data.rows;
  3419. }
  3420. })
  3421. },
  3422. searchBusinessInfoList3 () {
  3423. searchBusinessInfo3(this.searchBusinessData3).then(({data}) => {
  3424. if (data && data.code === 0){
  3425. this.businessDataList3 = data.rows;
  3426. }
  3427. })
  3428. },
  3429. searchBusinessInfoList4 () {
  3430. searchBusinessInfo4(this.searchBusinessData4).then(({data}) => {
  3431. if (data && data.code === 0){
  3432. this.businessDataList4 = data.rows;
  3433. }
  3434. })
  3435. },
  3436. searchBusinessInfoList5 () {
  3437. searchBusinessInfo5(this.searchBusinessData5).then(({data}) => {
  3438. if (data && data.code === 0){
  3439. this.businessDataList5 = data.rows;
  3440. }
  3441. })
  3442. },
  3443. searchBusinessInfoList6 () {
  3444. searchBusinessInfo6(this.searchBusinessData6).then(({data}) => {
  3445. if (data && data.code === 0){
  3446. this.businessDataList6 = data.rows;
  3447. }
  3448. })
  3449. },
  3450. searchBusinessInfoList7 () {
  3451. searchBusinessInfo7(this.searchBusinessData7).then(({data}) => {
  3452. if (data && data.code === 0){
  3453. this.businessDataList7 = data.rows;
  3454. }
  3455. })
  3456. },
  3457. // 打开项目经理
  3458. openProjectManagerInfoDialog () {
  3459. //请求
  3460. this.searchBusinessInfoList();
  3461. },
  3462. // 打开项目负责人
  3463. openProjectOwnerInfoDialog () {
  3464. //请求
  3465. this.searchBusinessInfoList1();
  3466. },
  3467. // 打开工程师
  3468. openEngineerInfoDialog () {
  3469. //请求
  3470. this.searchBusinessInfoList2();
  3471. },
  3472. // 打开IPQC
  3473. openIPQCInfoDialog () {
  3474. //请求
  3475. this.searchBusinessInfoList3();
  3476. },
  3477. // 打开FQC1
  3478. openFQC1InfoDialog () {
  3479. //请求
  3480. this.searchBusinessInfoList4();
  3481. },
  3482. // 打开MFG
  3483. openMFGInfoDialog () {
  3484. //请求
  3485. this.searchBusinessInfoList5();
  3486. },
  3487. // 打开文档工程师
  3488. openDocEngineerInfoDialog () {
  3489. //请求
  3490. this.searchBusinessInfoList7();
  3491. },
  3492. openEngineer6InfoDialog () {
  3493. //请求
  3494. this.searchBusinessInfoList6();
  3495. },
  3496. // 关闭
  3497. closeProjectManagerInfoDialog () {
  3498. this.businessDataList = []
  3499. this.projectManagerFlag = false
  3500. },
  3501. closeProjectOwnerInfoDialog () {
  3502. this.businessDataList1 = []
  3503. this.projectOwnerFlag = false
  3504. },
  3505. //关闭
  3506. closeEngineerInfoDialog () {
  3507. this.businessDataList2 = []
  3508. this.engineerFlag = false
  3509. },
  3510. closeEngineer6InfoDialog () {
  3511. this.businessDataList6 = []
  3512. this.engineer6Flag = false
  3513. },
  3514. //关闭
  3515. closeIPQCInfoDialog () {
  3516. this.businessDataList3 = []
  3517. this.IPQCFlag = false
  3518. },
  3519. //关闭
  3520. closeFQC1InfoDialog () {
  3521. this.businessDataList4 = []
  3522. this.FQC1Flag = false
  3523. },
  3524. //关闭
  3525. closeMFGInfoDialog () {
  3526. this.businessDataList5 = []
  3527. this.MFGlag = false
  3528. },
  3529. //关闭
  3530. closeDocEngineerInfoDialog () {
  3531. this.businessDataList7 = []
  3532. this.docEngineerFlag = false
  3533. },
  3534. projectManagerRowDblclick(row) {
  3535. if (row && row.username && row.userDisplay) {
  3536. this.modalData.projectManager = row.username + '-' + row.userDisplay;
  3537. if (this.modalData.projectManager) {
  3538. this.modalData.projectManagerName = this.modalData.projectManager.split('-')[1];
  3539. }
  3540. }
  3541. this.projectManagerFlag = false;
  3542. },
  3543. projectOwnerRowDblclick (row) {
  3544. this.modalData.projectOwner = row.username + '-' + row.userDisplay
  3545. this.modalData.projectOwnerName = this.modalData.projectOwner.split('-')[1] // 截取用户名
  3546. this.projectOwnerFlag = false
  3547. },
  3548. engineerRowDblclick (row) {
  3549. this.modalData.cQualityEngineer1 = row.username + '-' + row.userDisplay
  3550. this.modalData.cQualityEngineer1Name = this.modalData.cQualityEngineer1.split('-')[1] // 截取用户名
  3551. this.engineerFlag = false
  3552. },
  3553. engineer6RowDblclick (row) {
  3554. this.modalData.engineer = row.username + '-' + row.userDisplay
  3555. this.modalData.engineerName = this.modalData.engineer.split('-')[1] // 截取用户名
  3556. this.engineer6Flag = false
  3557. },
  3558. IPQCRowDblclick (row) {
  3559. this.modalData.cQualityEngineer2 = row.username + '-' + row.userDisplay
  3560. this.modalData.cQualityEngineer2Name = this.modalData.cQualityEngineer2.split('-')[1] // 截取用户名
  3561. this.IPQCFlag = false
  3562. },
  3563. FQC1RowDblclick (row) {
  3564. this.modalData.cQualityEngineer3 = row.username + '-' + row.userDisplay
  3565. this.modalData.cQualityEngineer3Name = this.modalData.cQualityEngineer3.split('-')[1] // 截取用户名
  3566. this.FQC1Flag = false
  3567. },
  3568. MFGRowDblclick (row) {
  3569. this.modalData.cManufactureEngineer = row.username + '-' + row.userDisplay
  3570. this.modalData.cManufactureEngineerName = this.modalData.cManufactureEngineer.split('-')[1] // 截取用户名
  3571. this.MFGlag = false
  3572. },
  3573. docEngineerRowDblclick (row) {
  3574. this.modalData.docEngineer = row.username + '-' + row.userDisplay
  3575. this.modalData.docEngineerName = this.modalData.docEngineer.split('-')[1] // 截取用户名
  3576. this.docEngineerFlag = false
  3577. },
  3578. closeClear () {
  3579. this.modalData.bu = ''
  3580. this.modalData.projectNo = ''
  3581. this.modalData.projectDesc = ''
  3582. this.modalData.projectCloseDate = ''
  3583. this.modalData.needDate = ''
  3584. this.modalData.customerNo = ''
  3585. this.modalData.customerDesc = ''
  3586. this.modalData.projectCategory = ''
  3587. this.modalData.testPartNo = ''
  3588. this.modalData.partDesc = ''
  3589. this.modalData.projectManager = ''
  3590. this.modalData.projectManagerName = ''
  3591. this.modalData.engineer = ''
  3592. this.modalData.engineerName = ''
  3593. this.modalData.cQualityEngineer1 = ''
  3594. this.modalData.cQualityEngineer1Name = ''
  3595. this.modalData.cQualityEngineer2 = ''
  3596. this.modalData.cQualityEngineer2Name = ''
  3597. this.modalData.cQualityEngineer3 = ''
  3598. this.modalData.cQualityEngineer3Name = ''
  3599. this.modalData.cQualityEngineer4 = ''
  3600. this.modalData.cQualityEngineer4Name = ''
  3601. this.modalData.cQualityEngineer5 = ''
  3602. this.modalData.cQualityEngineer5Name = ''
  3603. this.modalData.cQualityEngineer6 = ''
  3604. this.modalData.cQualityEngineer6Name = ''
  3605. this.modalData.cManufactureEngineer = ''
  3606. this.modalData.cManufactureEngineerName = ''
  3607. this.modalData.docEngineer = ''
  3608. this.modalData.docEngineerName = ''
  3609. this.modalData.projectCreationDate = new Date()
  3610. },
  3611. getProjectPartInfo () {
  3612. let queryProjectPart = {
  3613. projectId: this.projectPartCurrentRow.projectId,
  3614. projectNo: this.projectPartCurrentRow.projectNo,
  3615. site: this.projectPartCurrentRow.site,
  3616. buNo: this.projectPartCurrentRow.buNo,
  3617. userName: this.$store.state.user.name,
  3618. limit: -1,
  3619. page: 1
  3620. }
  3621. eamProjectPartSearch(queryProjectPart).then(({data}) => {
  3622. if (data && data.code === 0) {
  3623. this.projectPartList = data.page.list
  3624. // 遍历dataList
  3625. this.projectPartList.forEach((item) => {
  3626. item.projectManagerName = item.projectManager.split('-')[1]
  3627. item.projectOwnerName = item.projectOwner.split('-')[1]
  3628. item.engineerName = item.engineer.split('-')[1]
  3629. item.cQualityEngineer1Name = item.cQualityEngineer1.split('-')[1]
  3630. item.cQualityEngineer2Name = item.cQualityEngineer2.split('-')[1]
  3631. item.cQualityEngineer3Name = item.cQualityEngineer3.split('-')[1]
  3632. if (item.cQualityEngineer4 != null && item.cQualityEngineer4 !== ''){
  3633. item.cQualityEngineer4Name = item.cQualityEngineer4.split('-')[1]
  3634. }
  3635. if (item.cQualityEngineer5 != null && item.cQualityEngineer5 !== ''){
  3636. item.cQualityEngineer5Name = item.cQualityEngineer5.split('-')[1]
  3637. }
  3638. if (item.cQualityEngineer6 != null && item.cQualityEngineer6 !== ''){
  3639. item.cQualityEngineer6Name = item.cQualityEngineer6.split('-')[1]
  3640. }
  3641. item.cManufactureEngineerName = item.cManufactureEngineer.split('-')[1]
  3642. if (item.docEngineer != null && item.docEngineer !== ''){
  3643. item.docEngineerName = item.docEngineer.split('-')[1]
  3644. }
  3645. })
  3646. }
  3647. })
  3648. },
  3649. addProjectPartModal (row) {
  3650. this.modalData = {
  3651. flag: '3',
  3652. site: row.site,
  3653. bu: row.site + '_' + row.buNo,
  3654. projectPartId: '',
  3655. customerNo: row.customerNo,
  3656. customerDesc: row.customerDesc,
  3657. projectCategory: row.projectCategory,
  3658. testPartNo: '',
  3659. partDesc: '',
  3660. projectId: row.projectId,
  3661. projectNo: row.projectNo,
  3662. projectDesc: row.projectDesc,
  3663. priority: row.priority,
  3664. projectCloseDate: row.projectCloseDate,
  3665. needDate: row.needDate,
  3666. projectManager: row.projectManager,
  3667. projectManagerName: row.projectManager.split('-')[1], // 截取用户名
  3668. projectOwner: row.projectOwner,
  3669. projectOwnerName: row.projectOwner.split('-')[1], // 截取用户名
  3670. engineer: row.engineer,
  3671. engineerName: row.engineer.split('-')[1], // 截取用户名
  3672. cQualityEngineer1: row.cQualityEngineer1,
  3673. cQualityEngineer1Name: row.cQualityEngineer1.split('-')[1], // 截取用户名
  3674. cQualityEngineer2: row.cQualityEngineer2,
  3675. cQualityEngineer2Name: row.cQualityEngineer2.split('-')[1], // 截取用户名
  3676. cQualityEngineer3: row.cQualityEngineer3,
  3677. cQualityEngineer3Name: row.cQualityEngineer3.split('-')[1], // 截取用户名
  3678. cQualityEngineer4: row.cQualityEngineer4,
  3679. cQualityEngineer5: row.cQualityEngineer5,
  3680. cQualityEngineer6: row.cQualityEngineer6,
  3681. cManufactureEngineer: row.cManufactureEngineer,
  3682. cManufactureEngineerName: row.cManufactureEngineer.split('-')[1], // 截取用户名
  3683. docEngineer: row.docEngineer,
  3684. projectCreationDate: row.projectCreationDate,
  3685. status: '草稿',
  3686. partType: 'Active',
  3687. // active: row.active,
  3688. createBy: this.$store.state.user.name,
  3689. updateBy: this.$store.state.user.name,
  3690. }
  3691. if (row.cQualityEngineer4 != null && row.cQualityEngineer4 !== ''){
  3692. this.modalData.cQualityEngineer4Name= row.cQualityEngineer4.split('-')[1] // 截取用户名
  3693. } else {
  3694. this.modalData.cQualityEngineer4 = ''
  3695. }
  3696. if (row.cQualityEngineer5 != null && row.cQualityEngineer5 !== ''){
  3697. this.modalData.cQualityEngineer5Name= row.cQualityEngineer5.split('-')[1] // 截取用户名
  3698. } else {
  3699. this.modalData.cQualityEngineer5 = ''
  3700. }
  3701. if (row.cQualityEngineer6 != null && row.cQualityEngineer6 !== ''){
  3702. this.modalData.cQualityEngineer6Name= row.cQualityEngineer6.split('-')[1] // 截取用户名
  3703. } else {
  3704. this.modalData.cQualityEngineer6 = ''
  3705. }
  3706. if (row.docEngineer != null && row.docEngineer !== ''){
  3707. this.modalData.docEngineerName= row.docEngineer.split('-')[1] // 截取用户名
  3708. } else {
  3709. this.modalData.docEngineer = ''
  3710. }
  3711. this.modalDisableFlag = true
  3712. this.modalPartDisableFlag = true
  3713. this.modalFlag = true
  3714. },
  3715. updatePartModal (row) {
  3716. this.modalData = {
  3717. flag: '4',
  3718. site: row.site,
  3719. bu: this.projectPartCurrentRow.site + '_' + this.projectPartCurrentRow.buNo,
  3720. customerNo: row.customerNo,
  3721. customerDesc: row.customerDesc,
  3722. projectCategory: row.projectCategory,
  3723. testPartNo: row.testPartNo,
  3724. partDesc: row.partDesc,
  3725. projectId: row.projectId,
  3726. projectNo: row.projectNo,
  3727. projectDesc: row.projectDesc,
  3728. projectPartId: row.projectPartId,
  3729. priority: row.priority,
  3730. projectCloseDate: row.closeDate,
  3731. needDate: row.needDate,
  3732. projectManager: row.projectManager,
  3733. projectManagerName: row.projectManager.split('-')[1], // 截取用户名
  3734. projectOwner: row.projectOwner,
  3735. projectOwnerName: row.projectOwner.split('-')[1], // 截取用户名
  3736. engineer: row.engineer,
  3737. engineerName: row.engineer.split('-')[1], // 截取用户名
  3738. cQualityEngineer1: row.cQualityEngineer1,
  3739. cQualityEngineer1Name: row.cQualityEngineer1.split('-')[1], // 截取用户名
  3740. cQualityEngineer2: row.cQualityEngineer2,
  3741. cQualityEngineer2Name: row.cQualityEngineer2.split('-')[1], // 截取用户名
  3742. cQualityEngineer3: row.cQualityEngineer3,
  3743. cQualityEngineer3Name: row.cQualityEngineer3.split('-')[1], // 截取用户名
  3744. cQualityEngineer4: row.cQualityEngineer4,
  3745. cQualityEngineer5: row.cQualityEngineer5,
  3746. cQualityEngineer6: row.cQualityEngineer6,
  3747. cManufactureEngineer: row.cManufactureEngineer,
  3748. cManufactureEngineerName: row.cManufactureEngineer.split('-')[1], // 截取用户名
  3749. docEngineer: row.docEngineer,
  3750. projectCreationDate: row.buildDate,
  3751. status: row.status,
  3752. partType: row.partType,
  3753. // active: row.active,
  3754. createBy: this.$store.state.user.name,
  3755. updateBy: this.$store.state.user.name,
  3756. }
  3757. if (row.cQualityEngineer4 != null && row.cQualityEngineer4 !== ''){
  3758. this.modalData.cQualityEngineer4Name= row.cQualityEngineer4.split('-')[1] // 截取用户名
  3759. }
  3760. if (row.cQualityEngineer5 != null && row.cQualityEngineer5 !== ''){
  3761. this.modalData.cQualityEngineer5Name= row.cQualityEngineer5.split('-')[1] // 截取用户名
  3762. }
  3763. if (row.cQualityEngineer6 != null && row.cQualityEngineer6 !== ''){
  3764. this.modalData.cQualityEngineer6Name= row.cQualityEngineer6.split('-')[1] // 截取用户名
  3765. }
  3766. if (row.docEngineer != null && row.docEngineer !== ''){
  3767. this.modalData.docEngineerName= row.docEngineer.split('-')[1] // 截取用户名
  3768. }
  3769. this.modalDisableFlag = true
  3770. this.modalPartDisableFlag = true
  3771. this.modalFlag = true
  3772. },
  3773. toMes (row) {
  3774. this.$router.push({ path: 'eam-eamProjectPartInfo', query: { projectNo:row.projectNo,testPartNo: row.testPartNo }})
  3775. },
  3776. deletePartModal (row) {
  3777. this.$confirm(`是否删除这个项目料号信息?`, '提示', {
  3778. confirmButtonText: '确定',
  3779. cancelButtonText: '取消',
  3780. type: 'warning'
  3781. }).then(() => {
  3782. eamProjectPartInfoDelete(row).then(({data}) => {
  3783. if (data && data.code === 0) {
  3784. this.getDataList()
  3785. EventBus.$emit('updateProjectPartInfo')
  3786. this.$message({
  3787. message: '操作成功',
  3788. type: 'success',
  3789. duration: 1500,
  3790. onClose: () => {}
  3791. })
  3792. } else {
  3793. this.$alert(data.msg, '错误', {
  3794. confirmButtonText: '确定'
  3795. })
  3796. }
  3797. })
  3798. }).catch(() => {
  3799. })
  3800. },
  3801. // 动态列开始 获取 用户保存的 格式列
  3802. async getTableUserColumn(tableId, columnId) {
  3803. let queryTableUser = {
  3804. userId: this.$store.state.user.name,
  3805. functionId: this.$route.meta.menuId,
  3806. tableId: tableId,
  3807. status: true,
  3808. languageCode: this.$i18n.locale
  3809. }
  3810. await getTableUserListLanguage(queryTableUser).then(({data}) => {
  3811. if (data.rows.length > 0) {
  3812. //this.columnList1 = []
  3813. switch (columnId) {
  3814. case 1:
  3815. this.columnList = data.rows
  3816. break;
  3817. case 2:
  3818. this.columnPartList = data.rows
  3819. break;
  3820. // case 3:
  3821. // this.columnList2 = data.rows
  3822. // break;
  3823. // case 4:
  3824. // this.columnList3 = data.rows
  3825. // break;
  3826. }
  3827. } else {
  3828. this.getColumnList(tableId, columnId)
  3829. }
  3830. })
  3831. },
  3832. formatDate(row, column) {
  3833. // row 是当前行的数据对象
  3834. // column 是当前列的属性信息对象
  3835. const date = row[column.property];
  3836. if (date) {
  3837. const s = new Date(date).toLocaleDateString('zh-CN', { year: 'numeric', month: '2-digit', day: '2-digit' });
  3838. return s.replace(/\//g, '-')
  3839. } else {
  3840. return '';
  3841. }
  3842. },
  3843. // 获取 tableDefault 列
  3844. async getColumnList (tableId, columnId) {
  3845. let queryTable= {
  3846. functionId: this.$route.meta.menuId,
  3847. tableId: tableId,
  3848. languageCode: this.$i18n.locale
  3849. }
  3850. await getTableDefaultListLanguage(queryTable).then(({data}) => {
  3851. if (!data.rows.length == 0) {
  3852. switch (columnId) {
  3853. case 1:
  3854. this.columnList = data.rows
  3855. break;
  3856. case 2:
  3857. this.columnPartList = data.rows
  3858. break;
  3859. // case 3:
  3860. // this.columnList2 = data.rows
  3861. // break;
  3862. // case 4:
  3863. // this.columnList3 = data.rows
  3864. // break;
  3865. }
  3866. } else {
  3867. // this.showDefault = true.
  3868. }
  3869. })
  3870. },
  3871. // 列表表格选择替换
  3872. tabClick (tab, event) {
  3873. // 刷新列表数据
  3874. this.refreshCurrentTabTable()
  3875. },
  3876. refreshCurrentTabTable () {
  3877. if (this.activeName == 'projectPart') {
  3878. this.getProjectPartInfo();
  3879. }
  3880. },
  3881. //获取按钮的权限数据
  3882. getButtonAuthData () {
  3883. let searchFlag = this.isAuth(this.menuId+":search")
  3884. let saveFlag = this.isAuth(this.menuId+":save")
  3885. let updateFlag = this.isAuth(this.menuId+":update")
  3886. let deleteFlag = this.isAuth(this.menuId+":delete")
  3887. //处理页面的权限数据
  3888. this.authSearch = !searchFlag
  3889. this.authSave = !saveFlag
  3890. this.authUpdate = !updateFlag
  3891. this.authDelete = !deleteFlag
  3892. },
  3893. rowStyle ({row}) {
  3894. if (this.projectPartCurrentRow.testPartNo === row.testPartNo) {
  3895. return { 'background-color': '#E8F7F6', cursor: 'pointer' };
  3896. }
  3897. },
  3898. }
  3899. }
  3900. </script>
  3901. <style scoped lang="scss">
  3902. .el-tabs__nav {
  3903. margin-left: 0 !important;
  3904. }
  3905. .red-text /deep/ .el-input__inner {
  3906. color: red;
  3907. }
  3908. /deep/ .left-section {
  3909. flex: 1; /* 左边部分占据剩余空间 */
  3910. margin-right: 10px; /* 右边与左边之间的间隔 */
  3911. margin-left: -10px; /* 左边与父元素之间的间隔 */
  3912. }
  3913. /deep/ .right-section {
  3914. width: 66%; /* 右边部分宽度占满剩余空间 */
  3915. margin-right: 5px;
  3916. }
  3917. /deep/ .custom-upload .el-upload-dragger {
  3918. width: 150px;
  3919. height: 150px;
  3920. text-align: center;
  3921. position: relative;
  3922. overflow: hidden;
  3923. /* 添加其他样式 */
  3924. }
  3925. /deep/ .table-container {
  3926. border: 1px solid #e0e0e0;
  3927. border-radius: 4px;
  3928. padding: 10px;
  3929. margin-bottom: 10px;
  3930. }
  3931. </style>