plm前端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1884 lines
68 KiB

3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
1 year ago
2 years ago
3 years ago
1 year ago
3 years ago
2 years ago
1 year ago
1 year ago
1 year ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
1 year ago
1 year ago
1 year ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
1 year ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
3 years ago
1 year ago
3 years ago
  1. <template>
  2. <div class="mod-config" v-highlight-container>
  3. <el-form :inline="true" label-position="top" style="margin-top: 1px; margin-left: 0px;" >
  4. <el-row :gutter="20">
  5. <el-col :span="18">
  6. <el-form-item label="工艺/Process">
  7. <dict-data-select
  8. v-if="searchData.site"
  9. :site="searchData.site"
  10. v-model="sheetData.process"
  11. :use-default-value="false"
  12. dict-type="bm_process"
  13. style="width: 120px"
  14. :disabled="ifDisableFlag || plmTechnicalSpecificationSheetFlag('process') === 'N'">
  15. </dict-data-select>
  16. </el-form-item>
  17. <el-form-item>
  18. <span slot="label" v-if="ifDisableFlag || plmTechnicalSpecificationSheetFlag('overPrintOperator') === 'N'">热转移打印人员/Technician</span>
  19. <span slot="label" v-else @click="getBaseList(1)"><a herf="#">热转移打印人员/Technician</a></span>
  20. <el-input v-model="sheetData.overPrintOperatorName" ref="overPrintOperatorName" placeholder="请选择人员" readonly style="width: 160px"></el-input>
  21. </el-form-item>
  22. <el-form-item>
  23. <span slot="label" v-if="ifDisableFlag || plmTechnicalSpecificationSheetFlag('printOperator') === 'N'">印刷人员/Technician</span>
  24. <span slot="label" v-else @click="getBaseList(2)"><a herf="#">印刷人员/Technician</a></span>
  25. <el-input v-model="sheetData.printOperatorName" ref="printOperatorName" placeholder="请选择人员" readonly style="width: 160px"></el-input>
  26. </el-form-item>
  27. <el-form-item label=" ">
  28. <el-button type="primary" @click="searchTable(true)">刷新</el-button>
  29. <el-button type="primary" @click="changeRouteRev()" v-if="((!ifDisableFlag && spForm.sp.includes(searchData.username) && baseForm.status === 'spz') || baseForm.status === 'cg' || superAdmin)">变更</el-button>
  30. <el-button type="primary" @click="jumpRoute()">跳转至Routing</el-button>
  31. </el-form-item>
  32. <el-form-item label=" ">
  33. <el-button type="primary" @click="updateBMProcess()" v-if="(!ifDisableFlag && isAuth('103002:bmSave') && spForm.sp.includes(searchData.username) && baseForm.status === 'spz') || baseForm.status === 'cg' || superAdmin">保存数据</el-button>
  34. <el-button v-if="baseForm.status === 'spz' && ((!ifDisableFlag && spForm.sp.includes(searchData.username)) || (superAdmin))" type="primary" :loading="submitLoading" @click="agreeSubmit">同意</el-button>
  35. <el-button v-if="baseForm.status === 'spz' && ((baseForm.isReject === 'Y' && !ifDisableFlag && spForm.sp.includes(searchData.username)) || (superAdmin))" type="primary" @click="submitDataModal">驳回</el-button>
  36. </el-form-item>
  37. </el-col>
  38. <el-col :span="3">
  39. <div class="grid-content bg-purple">
  40. <el-form-item label="当前节点/Status" style="width: 100%">
  41. <el-input v-model="spForm.nodeName" disabled></el-input>
  42. </el-form-item>
  43. </div>
  44. </el-col>
  45. <el-col :span="3">
  46. <div class="grid-content bg-purple">
  47. <el-form-item label="当前节点审批人/Authorizer" style="width: 100%">
  48. <el-input v-model="spForm.sp" disabled></el-input>
  49. </el-form-item>
  50. </div>
  51. </el-col>
  52. </el-row>
  53. </el-form>
  54. <el-form label-position="top" style="margin-top: 1px" v-if="searchData.buNo === 'RDC'">
  55. <el-row :gutter="20" >
  56. <el-col :span="24">
  57. <div class="grid-content bg-purple">
  58. <el-form-item :label="'过程及过程控制/Process and Production Control'">
  59. <el-input
  60. type="textarea"
  61. v-model="dataForm.processDetail"
  62. :rows="3"
  63. resize='none'
  64. maxlength="255"
  65. show-word-limit
  66. :disabled="ifDisableFlag"
  67. style="height: 60px" >
  68. </el-input>
  69. </el-form-item>
  70. </div>
  71. </el-col>
  72. </el-row>
  73. <el-row :gutter="20" style="margin-top: 60px">
  74. <el-col :span="6">
  75. <div class="grid-content bg-purple">
  76. <el-form-item :label="'是否提供胶条/Supply Adhesive Tape'">
  77. <el-select clearable v-model="dataForm.supplyAdhesiveTape" :disabled="ifDisableFlag">
  78. <el-option label="Yes" value="Y"></el-option>
  79. <el-option label="No" value="N"></el-option>
  80. </el-select>
  81. </el-form-item>
  82. </div>
  83. </el-col>
  84. <el-col :span="18">
  85. <div class="grid-content bg-purple">
  86. <el-form-item :label="'图稿/Drawing'">
  87. <el-input v-model="dataForm.routingDrawing" :disabled="ifDisableFlag"></el-input>
  88. </el-form-item>
  89. </div>
  90. </el-col>
  91. </el-row>
  92. <el-row :gutter="20" >
  93. <el-col :span="6">
  94. <div class="grid-content bg-purple">
  95. <el-form-item :label="'图稿版本/Drawing Revison'">
  96. <el-input v-model="dataForm.drawingRevison" :disabled="ifDisableFlag"></el-input>
  97. </el-form-item>
  98. </div>
  99. </el-col>
  100. <el-col :span="6">
  101. <div class="grid-content bg-purple">
  102. <el-form-item :label="'图稿日期/Drawing Date'">
  103. <el-date-picker
  104. v-model="searchData.drawingDate"
  105. type="date"
  106. value-format="yyyy-MM-dd"
  107. :disabled="ifDisableFlag"
  108. placeholder="选择日期">
  109. </el-date-picker>
  110. </el-form-item>
  111. </div>
  112. </el-col>
  113. </el-row>
  114. <el-row :gutter="20">
  115. <el-col :span="24">
  116. <div class="grid-content bg-purple">
  117. <el-form-item :label="'作业说明/WI'">
  118. <el-input
  119. type="textarea"
  120. v-model="dataForm.workInfo"
  121. :rows="3"
  122. resize='none'
  123. maxlength="255"
  124. show-word-limit
  125. :disabled="ifDisableFlag"
  126. style="height: 60px" >
  127. </el-input>
  128. </el-form-item>
  129. </div>
  130. </el-col>
  131. </el-row>
  132. <el-row :gutter="20" style="margin-top: 60px">
  133. <el-col :span="6">
  134. <div class="grid-content bg-purple">
  135. <el-form-item :label="'作业说明版本/WI Revision'">
  136. <el-input v-model="dataForm.wiRevison" :disabled="ifDisableFlag"></el-input>
  137. </el-form-item>
  138. </div>
  139. </el-col>
  140. <el-col :span="6">
  141. <div class="grid-content bg-purple">
  142. <el-form-item :label="'作业说明日期/WI Date'">
  143. <el-date-picker
  144. v-model="searchData.wiDate"
  145. type="date"
  146. value-format="yyyy-MM-dd"
  147. :disabled="ifDisableFlag"
  148. placeholder="选择日期">
  149. </el-date-picker>
  150. </el-form-item>
  151. </div>
  152. </el-col>
  153. </el-row>
  154. <el-row :gutter="20">
  155. <el-col :span="6">
  156. <div class="grid-content bg-purple">
  157. <el-form-item>
  158. <span slot="label" @click="reviewEngineerChooseModal()"><a herf="#">选择审查工程师/Select ME Review Engineer</a></span>
  159. <el-input v-model="dataForm.reviewEngineer" readonly @focus="reviewEngineerChooseModal()"></el-input>
  160. </el-form-item>
  161. </div>
  162. </el-col>
  163. <el-col :span="6">
  164. <div class="grid-content bg-purple">
  165. <el-form-item >
  166. <span slot="label" @click="peEngineerChooseModal()"><a herf="#">选择PE工程师/Select PE Engineer</a></span>
  167. <el-input v-model="dataForm.peEngineer" readonly @focus="peEngineerChooseModal()"></el-input>
  168. </el-form-item>
  169. </div>
  170. </el-col>
  171. <el-col :span="6">
  172. <div class="grid-content bg-purple">
  173. <el-form-item >
  174. <span slot="label" @click="cqeModal()"><a herf="#">选择CQE/Select CQE</a></span>
  175. <el-input v-model="dataForm.cqe" readonly @focus="cqeModal()"></el-input>
  176. </el-form-item>
  177. </div>
  178. </el-col>
  179. </el-row>
  180. <el-row :gutter="20">
  181. <el-col :span="24">
  182. <div class="grid-content bg-purple">
  183. <el-form-item :label="'备注/Remark'">
  184. <el-input
  185. type="textarea"
  186. v-model="dataForm.routingRemark"
  187. :rows="3"
  188. resize='none'
  189. maxlength="255"
  190. show-word-limit
  191. :disabled="ifDisableFlag"
  192. style="height: 60px" >
  193. </el-input>
  194. </el-form-item>
  195. </div>
  196. </el-col>
  197. </el-row>
  198. <el-row :gutter="20" style="margin-top: 60px">
  199. <el-col :span="24">
  200. <div class="grid-content bg-purple">
  201. <el-form-item :label="'措施/Action'">
  202. <el-input
  203. type="textarea"
  204. v-model="dataForm.routingAction"
  205. :rows="3"
  206. resize='none'
  207. maxlength="255"
  208. show-word-limit
  209. :disabled="ifDisableFlag"
  210. style="height: 60px" >
  211. </el-input>
  212. </el-form-item>
  213. </div>
  214. </el-col>
  215. </el-row>
  216. <el-form-item style="margin-top: 60px;text-align:center">
  217. <el-button type="primary" @click="saveData()" v-if="!ifDisableFlag">保存</el-button>
  218. </el-form-item>
  219. </el-form>
  220. <el-form label-position="top" style="margin-top: 1px" v-else>
  221. <el-form :inline="true" label-position="top" style="margin-top: 1px; margin-left: 0px;">
  222. <el-form-item label="物料信息/Material">
  223. <el-input v-model="routeData.partNo" disabled style="width: 120px"></el-input>
  224. </el-form-item>
  225. <el-form-item label="工艺路线类型/Routing Type">
  226. <el-input v-model="routeData.routingType" disabled style="width: 160px"></el-input>
  227. </el-form-item>
  228. <el-form-item label="工艺路线版本/Routing Rev.">
  229. <el-input v-model="routeData.routingRevision" disabled style="width: 160px"></el-input>
  230. </el-form-item>
  231. <el-form-item label="替代编码/Alternative No.">
  232. <el-input v-model="routeData.alternativeNo" disabled style="width: 140px"></el-input>
  233. </el-form-item>
  234. </el-form>
  235. <el-form :inline="true" label-position="top" style="margin-top: 1px; margin-left: 0px;" >
  236. <el-row :gutter="20">
  237. <el-col :span="18">
  238. <el-form-item label="单双面印刷/Simplex/Duplex">
  239. <dict-data-select
  240. :site="searchData.site"
  241. v-if="searchData.site"
  242. clearable
  243. v-model="sheetData.simplexDuplex"
  244. :use-default-value="false"
  245. dict-type="bm_simplex_duplex"
  246. style="width: 160px"
  247. :disabled="ifDisableFlag || plmTechnicalSpecificationSheetFlag('simplexDuplex') === 'N'">
  248. </dict-data-select>
  249. </el-form-item>
  250. <el-form-item label="周长/Repeat">
  251. <dict-data-select
  252. :site="searchData.site"
  253. v-if="searchData.site"
  254. clearable
  255. v-model="sheetData.repeat"
  256. dict-type="bm_repeat"
  257. style="width: 120px"
  258. :disabled="ifDisableFlag || plmTechnicalSpecificationSheetFlag('repeat') === 'N'">
  259. </dict-data-select>
  260. </el-form-item>
  261. <!-- <el-form-item label="标签尺寸/Label Size">-->
  262. <!-- <el-input v-model="sheetData.labelSize" style="width: 120px" ></el-input>-->
  263. <!-- </el-form-item>-->
  264. <el-form-item label="标签长度/Label Length">
  265. <el-input v-model="sheetData.labelLength" :disabled="ifDisableFlag || plmTechnicalSpecificationSheetFlag('labelLength') === 'N'" style="width: 120px"></el-input>
  266. </el-form-item>
  267. <el-form-item label="标签宽度/Label Width">
  268. <el-input v-model="sheetData.labelWidth" :disabled="ifDisableFlag || plmTechnicalSpecificationSheetFlag('labelWidth') === 'N'" style="width: 120px"></el-input>
  269. </el-form-item>
  270. <el-form-item label="横向跳距/HP">
  271. <el-input v-model="sheetData.hp" :disabled="ifDisableFlag || plmTechnicalSpecificationSheetFlag('hp') === 'N'" style="width: 120px"></el-input>
  272. </el-form-item>
  273. <el-form-item label="竖向跳距/VP">
  274. <el-input v-model="sheetData.vp" :disabled="ifDisableFlag || plmTechnicalSpecificationSheetFlag('vp') === 'N'" style="width: 120px"></el-input>
  275. </el-form-item>
  276. <el-form-item label="横排数/Across">
  277. <el-input v-model="sheetData.across" :disabled="ifDisableFlag || plmTechnicalSpecificationSheetFlag('across') === 'N'" style="width: 120px"></el-input>
  278. </el-form-item>
  279. </el-col>
  280. </el-row>
  281. </el-form>
  282. <div style="width: 100%;">
  283. <el-form :inline="true" label-position="top" style="margin-top: 1px; margin-left: 0px;">
  284. <el-row :gutter="20">
  285. <el-col :span="24">
  286. <el-form-item label="竖排数/Down">
  287. <el-input v-model="sheetData.down" :disabled="ifDisableFlag || plmTechnicalSpecificationSheetFlag('down') === 'N'" style="width: 120px" ></el-input>
  288. </el-form-item>
  289. <!-- <el-form-item label="实际数目/Actual Number">-->
  290. <!-- <el-input v-model="sheetData.actualNumber" style="width: 160px"></el-input>-->
  291. <!-- </el-form-item>-->
  292. <el-form-item label="印刷出纸方向/Feeding Direction">
  293. <dict-data-select
  294. :site="searchData.site"
  295. v-if="searchData.site"
  296. clearable
  297. v-model="sheetData.printCopyPosition"
  298. dict-type="bm_print_copy_position"
  299. style="width: 170px"
  300. :disabled="ifDisableFlag || plmTechnicalSpecificationSheetFlag('printCopyPosition') === 'N'">
  301. </dict-data-select>
  302. </el-form-item>
  303. <el-form-item label="成品卷边宽度/FG Roll Width">
  304. <el-input v-model="sheetData.goodsRollWidth" :disabled="ifDisableFlag || plmTechnicalSpecificationSheetFlag('goodsRollWidth') === 'N'" style="width: 160px"></el-input>
  305. </el-form-item>
  306. <el-form-item label="新刀具(是/否)/New Cutter(Y/N)">
  307. <dict-data-select
  308. :site="searchData.site"
  309. v-if="searchData.site"
  310. clearable
  311. v-model="sheetData.newCutter"
  312. dict-type="bm_new_cutter"
  313. style="width: 170px"
  314. :disabled="ifDisableFlag || plmTechnicalSpecificationSheetFlag('newCutter') === 'N'">
  315. </dict-data-select>
  316. </el-form-item>
  317. <el-form-item label="印刷刀模公差/P2C Tolerance">
  318. <el-input v-model="sheetData.p2cTolerance" :disabled="ifDisableFlag || plmTechnicalSpecificationSheetFlag('p2cTolerance') === 'N'" style="width: 160px"></el-input>
  319. </el-form-item>
  320. <el-form-item label="尺寸公差/Dimension Tolerance">
  321. <el-input v-model="sheetData.dimensionTolerance" :disabled="ifDisableFlag || plmTechnicalSpecificationSheetFlag('dimensionTolerance') === 'N'" style="width: 170px"></el-input>
  322. </el-form-item>
  323. <el-form-item label="修边公差(+/-)/Slitting Tolerance">
  324. <el-input v-model="sheetData.slittingTolerance" :disabled="ifDisableFlag || plmTechnicalSpecificationSheetFlag('slittingTolerance') === 'N'" style="width: 170px"></el-input>
  325. </el-form-item>
  326. </el-col>
  327. </el-row>
  328. </el-form>
  329. </div>
  330. <el-table
  331. :height="'250'"
  332. :data="tableData"
  333. highlight-current-row
  334. border
  335. @row-click="chooseRoute"
  336. style="width: 100%">
  337. <el-table-column
  338. fixed="left"
  339. header-align="center"
  340. align="center"
  341. width="60"
  342. label="操作">
  343. <template slot-scope="scope">
  344. <a type="text" size="small" @click="bmModel(scope.row)" v-if="!ifDisableFlag && isAuth('103002:bmRoute')">填写</a>
  345. </template>
  346. </el-table-column>
  347. <!-- <el-table-column-->
  348. <!-- v-for="(item,index) in columnList1" :key="index"-->
  349. <!-- :sortable="item.columnSortable"-->
  350. <!-- :prop="item.columnProp"-->
  351. <!-- :header-align="item.headerAlign"-->
  352. <!-- :show-overflow-tooltip="item.showOverflowTooltip"-->
  353. <!-- :align="item.align"-->
  354. <!-- :fixed="item.fixed == ''?false:item.fixed"-->
  355. <!-- :min-width="item.columnWidth"-->
  356. <!-- :label="item.columnLabel">-->
  357. <!-- <template slot-scope="scope">-->
  358. <!-- <span v-if="!item.columnHidden">{{scope.row[item.columnProp]}}</span>-->
  359. <!-- <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>-->
  360. <!-- </template>-->
  361. <!-- </el-table-column>-->
  362. <el-table-column label="工序号" header-align="center">
  363. <el-table-column
  364. prop="operationNo"
  365. header-align="center"
  366. align="center"
  367. min-width="80"
  368. label="Operation No.">
  369. </el-table-column>
  370. </el-table-column>
  371. <el-table-column label="工序名称" header-align="center">
  372. <el-table-column
  373. prop="operationName"
  374. header-align="center"
  375. align="center"
  376. min-width="120"
  377. label="Operation Desc">
  378. </el-table-column>
  379. </el-table-column>
  380. <el-table-column label="效率" header-align="center">
  381. <el-table-column
  382. prop="efficiencyFactor"
  383. header-align="center"
  384. align="right"
  385. min-width="80"
  386. label="Efficiency">
  387. </el-table-column>
  388. </el-table-column>
  389. <el-table-column label="机器单位产出" header-align="center">
  390. <el-table-column
  391. prop="machRunFactor"
  392. header-align="center"
  393. align="right"
  394. min-width="80"
  395. label="Mach Run Factor">
  396. </el-table-column>
  397. </el-table-column>
  398. <el-table-column label="机器调机时间" header-align="center">
  399. <el-table-column
  400. prop="machSetupTime"
  401. header-align="center"
  402. align="right"
  403. min-width="80"
  404. label="Mach Setup Time">
  405. </el-table-column>
  406. </el-table-column>
  407. <el-table-column label="产出单位" header-align="center">
  408. <el-table-column
  409. prop="runTimeCode"
  410. header-align="center"
  411. align="center"
  412. min-width="60"
  413. label="Factor Unit">
  414. </el-table-column>
  415. </el-table-column>
  416. <el-table-column label="人工单位产出" header-align="center">
  417. <el-table-column
  418. prop="laborRunFactor"
  419. header-align="center"
  420. align="right"
  421. min-width="80"
  422. label="Labour Run Factor">
  423. </el-table-column>
  424. </el-table-column>
  425. <el-table-column label="人工调机时间" header-align="center">
  426. <el-table-column
  427. prop="laborSetupTime"
  428. header-align="center"
  429. align="right"
  430. min-width="80"
  431. label="Labour Setup Time">
  432. </el-table-column>
  433. </el-table-column>
  434. </el-table>
  435. <component style="margin-top: 5px" :is="selectedComponent" ref="routeRef" :key="componentKey"></component>
  436. </el-form>
  437. <!-- <el-dialog append-to-body title="工艺路线" :close-on-click-modal="false" v-drag :visible.sync="routeFlag" width="470px">-->
  438. <!-- <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">-->
  439. <!-- <el-form-item :label="'工序编码'">-->
  440. <!-- <el-input v-model="routingData.itemNo" type="number" onkeyup="value=value.replace(/^(0+)|[^\d]+/g,'')" ></el-input>-->
  441. <!-- </el-form-item>-->
  442. <!-- <el-form-item :label="'工序名称'">-->
  443. <!-- <el-input v-model="routingData.operationDesc" style="width: 440px" ></el-input>-->
  444. <!-- </el-form-item>-->
  445. <!-- </el-form>-->
  446. <!-- <el-footer style="height:40px;margin-top: 10px;text-align:center">-->
  447. <!-- <el-button type="primary" @click="routeSave()">保存</el-button>-->
  448. <!-- <el-button type="primary" @click="routeFlag = false">取消</el-button>-->
  449. <!-- </el-footer>-->
  450. <!-- </el-dialog>-->
  451. <el-dialog width="530px" title="审查工程师" :close-on-click-modal="false" :visible.sync="reviewEngineerFlag">
  452. <el-transfer
  453. v-model="reviewEngineerList" class="rq" filterable
  454. :props="{key: 'operatorId',label: 'operatorName'}"
  455. :data="operatorList" :titles="['未选择', '已选择']">
  456. </el-transfer>
  457. <span slot="footer" class="dialog-footer">
  458. <div style="margin-top: 5px">
  459. <el-button type="primary" @click="savereviewEngineerList()">确定</el-button>
  460. <el-button @click="reviewEngineerFlag = false" type="primary">取消</el-button>
  461. </div>
  462. </span>
  463. </el-dialog>
  464. <el-dialog width="530px" title="PE工程师" :close-on-click-modal="false" :visible.sync="peEngineerFlag">
  465. <el-transfer
  466. v-model="peEngineerList" class="rq" filterable
  467. :props="{key: 'operatorId',label: 'operatorName'}"
  468. :data="operatorList" :titles="['未选择', '已选择']">
  469. </el-transfer>
  470. <span slot="footer" class="dialog-footer">
  471. <div style="margin-top: 5px">
  472. <el-button type="primary" @click="savepeEngineerList()">确定</el-button>
  473. <el-button @click="peEngineerFlag = false" type="primary">取消</el-button>
  474. </div>
  475. </span>
  476. </el-dialog>
  477. <el-dialog width="530px" title="选择CQE" :close-on-click-modal="false" :visible.sync="cqeFlag">
  478. <el-transfer
  479. v-model="cqeList" class="rq" filterable
  480. :props="{key: 'operatorId',label: 'operatorName'}"
  481. :data="operatorList" :titles="['未选择', '已选择']">
  482. </el-transfer>
  483. <span slot="footer" class="dialog-footer">
  484. <div style="margin-top: 5px">
  485. <el-button type="primary" @click="savecqeList()">确定</el-button>
  486. <el-button @click="cqeFlag = false" type="primary">取消</el-button>
  487. </div>
  488. </span>
  489. </el-dialog>
  490. <el-dialog append-to-body width="900px" title="工序记录" top="10vh" @close="closeItemModel" :close-on-click-modal="false" :visible.sync="routeModelFlag">
  491. <el-form label-position="top" style="margin-top: -5px; margin-left: 0px;" >
  492. <el-row :gutter="20">
  493. <el-col :span="6"><div class="grid-content bg-purple">
  494. <el-form-item :label="'工序编码/Operation No.'">
  495. <el-input v-model="currentRow.operationNo" disabled></el-input>
  496. </el-form-item>
  497. </div></el-col>
  498. <el-col :span="6"><div class="grid-content bg-purple">
  499. <el-form-item :label="'工序名称/Operation Desc.'">
  500. <el-input v-model="currentRow.operationName" disabled></el-input>
  501. </el-form-item>
  502. </div></el-col>
  503. </el-row>
  504. </el-form>
  505. <div v-if="currentRow.itemType === 'prepress'">
  506. <prepress ref="prepress" @closeModel="closeModel"></prepress>
  507. </div>
  508. <div v-else-if="currentRow.itemType === 'printing'">
  509. <printing ref="printing" @closeModel="closeModel"></printing>
  510. </div>
  511. <div v-else-if="currentRow.itemType === 'printOther'">
  512. <printOther ref="printOther" @closeModel="closeModel"></printOther>
  513. </div>
  514. <div v-else-if="currentRow.itemType === 'overprinting'">
  515. <overprinting ref="overprinting" @closeModel="closeModel"></overprinting>
  516. </div>
  517. <div v-else-if="currentRow.itemType === 'slitting'">
  518. <slitting ref="slitting" @closeModel="closeModel"></slitting>
  519. </div>
  520. <div v-else-if="currentRow.itemType === 'lamTemperature'">
  521. <lamTemperature ref="lamTemperature" @closeModel="closeModel"></lamTemperature>
  522. </div>
  523. <div v-else-if="currentRow.itemType === 'cutting'">
  524. <cutting ref="cutting" @closeModel="closeModel"></cutting>
  525. </div>
  526. <div v-else-if="currentRow.itemType === 'InkMixing'">
  527. <InkMixing ref="InkMixing" @closeModel="closeModel"></InkMixing>
  528. </div>
  529. <div v-else-if="currentRow.itemType === 'InkFormulation'">
  530. <InkFormulation ref="InkFormulation" @closeModel="closeModel"></InkFormulation>
  531. </div>
  532. <div v-else-if="currentRow.itemType === 'lamination'">
  533. <lamination ref="lamination" @closeModel="closeModel"></lamination>
  534. </div>
  535. <div v-else-if="currentRow.itemType === 'CNC'">
  536. <CNC ref="CNC" @closeModel="closeModel"></CNC>
  537. </div>
  538. <div v-else-if="currentRow.itemType === 'Cut'">
  539. <Cut ref="Cut" @closeModel="closeModel"></Cut>
  540. </div>
  541. <div v-else-if="currentRow.itemType === 'packagePage'">
  542. <packagePage ref="packagePage" @closeModel="closeModel"></packagePage>
  543. </div>
  544. <div v-else-if="currentRow.itemType === 'fqc'">
  545. <fqc ref="fqc" @closeModel="closeModel"></fqc>
  546. </div>
  547. <div v-else-if="currentRow.itemType === 'cqc'">
  548. <cqc ref="cqc" @closeModel="closeModel"></cqc>
  549. </div>
  550. <div v-else-if="currentRow.itemType === 'printFlexo'">
  551. <printFlexo ref="printFlexo" @closeModel="closeModel"></printFlexo>
  552. </div>
  553. <div v-else-if="currentRow.itemType === 'printIndigo'">
  554. <printIndigo ref="printIndigo" @closeModel="closeModel"></printIndigo>
  555. </div>
  556. </el-dialog>
  557. <el-dialog title="变更工艺路线" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="750px">
  558. <el-table
  559. :data="routeDetailList"
  560. height="300"
  561. border
  562. highlight-current-row
  563. onclick=""
  564. @row-click="getRow"
  565. ref="componentTable"
  566. style="width:100%">
  567. <el-table-column
  568. prop="partNo"
  569. header-align="left"
  570. align="left"
  571. min-width="80"
  572. label="物料编码">
  573. </el-table-column>
  574. <el-table-column
  575. prop="routingType"
  576. header-align="left"
  577. align="left"
  578. min-width="80"
  579. label="Routing类型">
  580. </el-table-column>
  581. <el-table-column
  582. prop="routingRevision"
  583. header-align="left"
  584. align="left"
  585. min-width="80"
  586. label="Routing版本">
  587. </el-table-column>
  588. <el-table-column
  589. prop="alternativeNo"
  590. header-align="left"
  591. align="left"
  592. min-width="80"
  593. label="替代编码">
  594. </el-table-column>
  595. <el-table-column
  596. prop="alternativeDescription"
  597. header-align="left"
  598. align="left"
  599. min-width="80"
  600. label="替代名称">
  601. </el-table-column>
  602. <el-table-column
  603. prop="status"
  604. header-align="left"
  605. align="left"
  606. min-width="60"
  607. label="状态">
  608. </el-table-column>
  609. <el-table-column
  610. prop="phaseInDate"
  611. header-align="left"
  612. align="left"
  613. min-width="80"
  614. label="生效日期">
  615. </el-table-column>
  616. <el-table-column
  617. prop="phaseOutDate"
  618. header-align="left"
  619. align="left"
  620. min-width="80"
  621. label="失效日期">
  622. </el-table-column>
  623. </el-table>
  624. <el-footer style="height:30px;margin-top:20px;text-align:center">
  625. <el-button type="primary" @click="updateBMRouteRev()">确定</el-button>
  626. <el-button type="primary" @click="modalFlag=false">取消</el-button>
  627. </el-footer>
  628. </el-dialog>
  629. <ChooseUser ref="baseList" @getBaseData="getBaseData"></ChooseUser>
  630. <!-- 提交 -->
  631. <el-dialog title="驳回" top="30vh" :close-on-click-modal="false" v-drag :visible.sync="submitModalFlag" width="500px">
  632. <el-form :inline="true" label-position="top">
  633. <el-form-item :label="'驳回意见'">
  634. <el-input type="textarea" v-model="rejectOpinion" :rows="3" resize='none' show-word-limit style="width: 479px;height: 30px"></el-input>
  635. </el-form-item>
  636. </el-form>
  637. <el-footer style="height:30px;margin-top: 50px;text-align:center">
  638. <el-button type="primary" :loading="submitLoading" @click="rejectSubmit">确定</el-button>
  639. <el-button type="primary" @click="submitModalFlag = false">取消</el-button>
  640. </el-footer>
  641. </el-dialog>
  642. </div>
  643. </template>
  644. <script>
  645. import {
  646. searchBMRoutingDetail,
  647. searchTechnicalSpecificationTeamStr,
  648. updateBMRoutingDetail,
  649. searchBMRoute,
  650. searchRouteDetail,
  651. updateBMRouteRev,
  652. tsdBasicInformationSearch,
  653. updateBMProcess,
  654. submitChange,getBMStatusDesc, // 提交
  655. getOADetailForBM,
  656. } from "@/api/sampleManagement/technicalSpecificationList.js"
  657. import {
  658. getNodeAuthority, // 获取节点权限
  659. } from '@/api/changeManagement/changeManagement.js'
  660. import ChooseUser from '@/views/modules/common/ChooseUser'
  661. import {
  662. searchOperatorWithSite,
  663. } from "@/api/project/project.js"
  664. import prepress from "./com_bm_prepress";/*组件*/
  665. import printing from "./com_bm_printing";/*组件*/
  666. import printOther from "./com_bm_printOther";/*组件*/
  667. import overprinting from "./com_bm_demoSlot";/*组件*/
  668. import slitting from "./com_bm_demoSlot";/*组件*/
  669. import lamTemperature from "./com_bm_demoSlot";/*组件*/
  670. import cutting from "./com_bm_demoSlot";/*组件*/
  671. import InkMixing from "./com_bm_inkMixing";/*组件*/
  672. import InkFormulation from "./com_bm_inkFormulation";/*组件*/
  673. import lamination from "./com_bm_lamination";/*组件*/
  674. import CNC from "./com_bm_cnc";
  675. import Cut from "./com_bm_cut";
  676. import packagePage from "./com_bm_demoSlot";/*组件*/
  677. import fqc from "./com_bm_demoSlot";/*组件*/
  678. import cqc from "./com_bm_demoSlot";/*组件*/
  679. import printFlexo from "./com_bm_printingFlexo";/*组件*/
  680. import printIndigo from "./com_bm_printingIndigo";
  681. import DictDataSelect from "../../sys/dict-data-select-highlight";
  682. import {updateBMProcessInfo} from "../../../../api/sampleManagement/technicalSpecificationList";
  683. /*组件*/
  684. export default {
  685. components: {
  686. DictDataSelect,
  687. ChooseUser,
  688. prepress,
  689. printing,
  690. printOther,
  691. overprinting,
  692. slitting,
  693. lamTemperature,
  694. cutting,
  695. InkMixing,
  696. InkFormulation,
  697. lamination,
  698. CNC,
  699. Cut,
  700. packagePage,
  701. fqc,
  702. cqc,
  703. printFlexo,
  704. printIndigo,
  705. },
  706. computed: {
  707. plmTechnicalSpecificationSheetFlag () {
  708. return (value) => {
  709. if (!this.plmTechnicalSpecificationSheetArr) {
  710. return 'N'
  711. }
  712. let arr = this.plmTechnicalSpecificationSheetArr.filter(a => a.fieldId === value)
  713. if (arr.length > 0) {
  714. return arr[0].updateFlag
  715. }
  716. return 'N'
  717. }
  718. },
  719. },
  720. data() {
  721. return {
  722. spForm: {
  723. sp: '',
  724. nodeName: '',
  725. },
  726. nowRoute: {},
  727. //动态组件
  728. selectedComponent: null,
  729. routeData: {
  730. site: '',
  731. partNo: '',
  732. alternativeNo: '',
  733. routingType: '',
  734. routingRevision: '',
  735. },
  736. componentKey: 0,
  737. routeFlag: false,
  738. routeModelFlag: false,
  739. height: 200,
  740. searchData: {
  741. site: '',
  742. username: this.$store.state.user.name,
  743. codeNo: '',
  744. buNo:'',
  745. fieldId:''
  746. },
  747. baseForm:{
  748. status:'',
  749. isReject:'',
  750. },
  751. tableData:'',
  752. partList:[],
  753. superAdmin:false,
  754. ifDisableFlag:false,
  755. sheetData:{
  756. site: '',
  757. codeNo: '',
  758. process:'',
  759. overPrintOperator:'',
  760. overPrintOperatorName:'',
  761. printOperator:'',
  762. printOperatorName:'',
  763. simplexDuplex: '',
  764. repeat: '',
  765. hp: '',
  766. across: null,
  767. printCopyPosition: '',
  768. labelSize: '',
  769. labelLength: '',
  770. labelWidth: '',
  771. vp: '',
  772. down: null,
  773. actualNumber: null,
  774. goodsRollWidth: '',
  775. newCutter: '',
  776. dimensionTolerance: '',
  777. p2cTolerance: '',
  778. slittingTolerance: ''
  779. },
  780. dataForm:{
  781. site: '',
  782. codeNo:'',
  783. processDetail:'',
  784. supplyAdhesiveTape: '',
  785. routingDrawing:'',
  786. drawingRevison:'',
  787. drawingDate:'',
  788. workInfo:'',
  789. wiRevison:'',
  790. wiDate:'',
  791. reviewEngineer: '',
  792. routingRemark:'',
  793. routingAction:'',
  794. username:this.$store.state.user.name,
  795. peEngineer:'',
  796. cqe:'',
  797. reviewEngineerList:[],
  798. peEngineerList:[],
  799. cqeList:[],
  800. },
  801. reviewEngineerFlag:false,
  802. peEngineerFlag:false,
  803. cqeFlag:false,
  804. operatorList:[],
  805. reviewEngineerList:[],
  806. peEngineerList:[],
  807. cqeList:[],
  808. //工艺路线部分
  809. routingData:{
  810. id:0,
  811. site:'',
  812. codeNo:'',
  813. itemNo:'',
  814. operationDesc:'',
  815. remark:'',
  816. username:'',
  817. },
  818. columnList1: [
  819. {
  820. userId: this.$store.state.user.name,
  821. functionId: 104003,
  822. serialNumber: '104003Table2OperationNo',
  823. tableId: '104003Table2',
  824. tableName: 'Routing工序表',
  825. columnProp: 'operationNo',
  826. headerAlign: 'center',
  827. align: 'center',
  828. columnLabel: '工序号/Operation No.',
  829. columnHidden: false,
  830. columnImage: false,
  831. columnSortable: false,
  832. sortLv: 0,
  833. status: true,
  834. fixed: '',
  835. columnWidth: 80
  836. },
  837. {
  838. userId: this.$store.state.user.name,
  839. functionId: 104003,
  840. serialNumber: '104003Table2OperationName',
  841. tableId: '104003Table2',
  842. tableName: 'Routing工序表',
  843. columnProp: 'operationName',
  844. headerAlign: 'center',
  845. align: 'left',
  846. columnLabel: '工序名称/Operation Desc',
  847. columnHidden: false,
  848. columnImage: false,
  849. columnSortable: false,
  850. sortLv: 0,
  851. status: true,
  852. fixed: '',
  853. columnWidth: 120
  854. },
  855. {
  856. userId: this.$store.state.user.name,
  857. functionId: 104003,
  858. serialNumber: '104003Table2EfficiencyFactor',
  859. tableId: '104003Table2',
  860. tableName: 'Routing工序表',
  861. columnProp: 'efficiencyFactor',
  862. headerAlign: 'center',
  863. align: 'right',
  864. columnLabel: '效率/Efficiency',
  865. columnHidden: false,
  866. columnImage: false,
  867. columnSortable: false,
  868. sortLv: 0,
  869. status: true,
  870. fixed: '',
  871. columnWidth: 80
  872. },
  873. {
  874. userId: this.$store.state.user.name,
  875. functionId: 104003,
  876. serialNumber: '104003Table2MachRunFactor',
  877. tableId: '104003Table2',
  878. tableName: 'Routing工序表',
  879. columnProp: 'machRunFactor',
  880. headerAlign: 'center',
  881. align: 'right',
  882. columnLabel: '机器单位产出/Mach Run Factor',
  883. columnHidden: false,
  884. columnImage: false,
  885. columnSortable: false,
  886. sortLv: 0,
  887. status: true,
  888. fixed: '',
  889. columnWidth: 80
  890. },
  891. {
  892. userId: this.$store.state.user.name,
  893. functionId: 104003,
  894. serialNumber: '104003Table2MachSetupTime',
  895. tableId: '104003Table2',
  896. tableName: 'Routing工序表',
  897. columnProp: 'machSetupTime',
  898. headerAlign: 'center',
  899. align: 'right',
  900. columnLabel: '机器调机时间/Mach Setup Time',
  901. columnHidden: false,
  902. columnImage: false,
  903. columnSortable: false,
  904. sortLv: 0,
  905. status: true,
  906. fixed: '',
  907. columnWidth: 80
  908. },
  909. {
  910. userId: this.$store.state.user.name,
  911. functionId: 104003,
  912. serialNumber: '104003Table2RunTimeCode',
  913. tableId: '104003Table2',
  914. tableName: 'Routing工序表',
  915. columnProp: 'runTimeCode',
  916. headerAlign: 'center',
  917. align: 'center',
  918. columnLabel: '产出单位/Factor Unit',
  919. columnHidden: false,
  920. columnImage: false,
  921. columnSortable: false,
  922. sortLv: 0,
  923. status: true,
  924. fixed: '',
  925. columnWidth: 60
  926. },
  927. {
  928. userId: this.$store.state.user.name,
  929. functionId: 104003,
  930. serialNumber: '104003Table2LaborRunFactor',
  931. tableId: '104003Table2',
  932. tableName: 'Routing工序表',
  933. columnProp: 'laborRunFactor',
  934. headerAlign: 'center',
  935. align: 'right',
  936. columnLabel: '人工单位产出/Labour Run Factor',
  937. columnHidden: false,
  938. columnImage: false,
  939. columnSortable: false,
  940. sortLv: 0,
  941. status: true,
  942. fixed: '',
  943. columnWidth: 80
  944. },
  945. {
  946. userId: this.$store.state.user.name,
  947. functionId: 104003,
  948. serialNumber: '104003Table2LaborSetupTime',
  949. tableId: '104003Table2',
  950. tableName: 'Routing工序表',
  951. columnProp: 'laborSetupTime',
  952. headerAlign: 'center',
  953. align: 'right',
  954. columnLabel: '人工调机时间/Labour Setup Time',
  955. columnHidden: false,
  956. columnImage: false,
  957. columnSortable: false,
  958. sortLv: 0,
  959. status: true,
  960. fixed: '',
  961. columnWidth: 80
  962. },
  963. {
  964. userId: this.$store.state.user.name,
  965. functionId: 104003,
  966. serialNumber: '104003Table2CrewSize',
  967. tableId: '104003Table2',
  968. tableName: 'Routing工序表',
  969. columnProp: 'crewSize',
  970. headerAlign: 'center',
  971. align: 'right',
  972. columnLabel: '生产参与人数/Crew Size',
  973. columnHidden: false,
  974. columnImage: false,
  975. columnSortable: false,
  976. sortLv: 0,
  977. status: true,
  978. fixed: '',
  979. columnWidth: 80
  980. },
  981. {
  982. userId: this.$store.state.user.name,
  983. functionId: 104003,
  984. serialNumber: '104003Table2SetupCrewSize',
  985. tableId: '104003Table2',
  986. tableName: 'Routing工序表',
  987. columnProp: 'setupCrewSize',
  988. headerAlign: 'center',
  989. align: 'right',
  990. columnLabel: '调机人数/Setup Crew Size',
  991. columnHidden: false,
  992. columnImage: false,
  993. columnSortable: false,
  994. sortLv: 0,
  995. status: true,
  996. fixed: '',
  997. columnWidth: 80
  998. },
  999. {
  1000. userId: this.$store.state.user.name,
  1001. functionId: 104003,
  1002. serialNumber: '104003Table2OutsideOpItem',
  1003. tableId: '104003Table2',
  1004. tableName: 'Routing工序表',
  1005. columnProp: 'outsideOpItem',
  1006. headerAlign: 'center',
  1007. align: 'center',
  1008. columnLabel: '外协采购料号/Outside OP Item',
  1009. columnHidden: false,
  1010. columnImage: false,
  1011. columnSortable: false,
  1012. sortLv: 0,
  1013. status: true,
  1014. fixed: '',
  1015. columnWidth: 120
  1016. },
  1017. {
  1018. userId: this.$store.state.user.name,
  1019. functionId: 104003,
  1020. serialNumber: '104003Table2MachineNo',
  1021. tableId: '104003Table2',
  1022. tableName: 'Routing工序表',
  1023. columnProp: 'machineNo',
  1024. headerAlign: 'center',
  1025. align: 'center',
  1026. columnLabel: '机台/Machine No.',
  1027. columnHidden: false,
  1028. columnImage: false,
  1029. columnSortable: false,
  1030. sortLv: 0,
  1031. status: true,
  1032. fixed: '',
  1033. columnWidth: 80
  1034. },
  1035. {
  1036. userId: this.$store.state.user.name,
  1037. functionId: 104003,
  1038. serialNumber: '104003Table2WorkCenterNo',
  1039. tableId: '104003Table2',
  1040. tableName: 'Routing工序表',
  1041. columnProp: 'workCenterNo',
  1042. headerAlign: 'center',
  1043. align: 'center',
  1044. columnLabel: '加工中心编码/Work Center No.',
  1045. columnHidden: false,
  1046. columnImage: false,
  1047. columnSortable: false,
  1048. sortLv: 0,
  1049. status: true,
  1050. fixed: '',
  1051. columnWidth: 85
  1052. },
  1053. {
  1054. userId: this.$store.state.user.name,
  1055. functionId: 104003,
  1056. serialNumber: '104003Table2WorkCenterDesc',
  1057. tableId: '104003Table2',
  1058. tableName: 'Routing工序表',
  1059. columnProp: 'workCenterDesc',
  1060. headerAlign: 'center',
  1061. align: 'center',
  1062. columnLabel: '加工中心描述/Work Center Desc.',
  1063. columnHidden: false,
  1064. columnImage: false,
  1065. columnSortable: false,
  1066. sortLv: 0,
  1067. status: true,
  1068. fixed: '',
  1069. columnWidth: 100
  1070. },
  1071. {
  1072. userId: this.$store.state.user.name,
  1073. functionId: 104003,
  1074. serialNumber: '104003Table2LaborClassNo',
  1075. tableId: '104003Table2',
  1076. tableName: 'Routing工序表',
  1077. columnProp: 'laborClassDesc',
  1078. headerAlign: 'center',
  1079. align: 'center',
  1080. columnLabel: '雇员分类/Labour Class',
  1081. columnHidden: false,
  1082. columnImage: false,
  1083. columnSortable: false,
  1084. sortLv: 0,
  1085. status: true,
  1086. fixed: '',
  1087. columnWidth: 80
  1088. },
  1089. {
  1090. userId: this.$store.state.user.name,
  1091. functionId: 104003,
  1092. serialNumber: '104003Table2SetupLaborClassDesc',
  1093. tableId: '104003Table2',
  1094. tableName: 'Routing工序表',
  1095. columnProp: 'setupLaborClassDesc',
  1096. headerAlign: 'center',
  1097. align: 'center',
  1098. columnLabel: '调机雇员分类/Setup Labour Class',
  1099. columnHidden: false,
  1100. columnImage: false,
  1101. columnSortable: false,
  1102. sortLv: 0,
  1103. status: true,
  1104. fixed: '',
  1105. columnWidth: 80
  1106. },
  1107. {
  1108. userId: this.$store.state.user.name,
  1109. functionId: 104003,
  1110. serialNumber: '104003Table2NoteText',
  1111. tableId: '104003Table2',
  1112. tableName: 'Routing工序表',
  1113. columnProp: 'noteText',
  1114. headerAlign: 'center',
  1115. align: 'left',
  1116. columnLabel: '备注/Comments',
  1117. columnHidden: false,
  1118. columnImage: false,
  1119. columnSortable: false,
  1120. sortLv: 0,
  1121. status: true,
  1122. fixed: '',
  1123. columnWidth: 150
  1124. },
  1125. ],
  1126. currentRow:{},
  1127. //变更工艺路线
  1128. modalFlag:false,
  1129. routeDetailList:[],
  1130. currentRoute:null,
  1131. tagNo:'',
  1132. tagNo1:'',
  1133. rejectOpinion: '',
  1134. submitModalFlag: false,
  1135. submitLoading: false,
  1136. plmTechnicalSpecificationSheetArr: []
  1137. }
  1138. },
  1139. mounted () {
  1140. this.$nextTick(() => {
  1141. this.height = window.innerHeight - 100
  1142. })
  1143. },
  1144. methods: {
  1145. // 获取基础数据列表S
  1146. getBaseList (type) {
  1147. this.tagNo1 = type
  1148. this.$nextTick(() => {
  1149. let strVal = ''
  1150. let roleId = ''
  1151. if (type === 1) {
  1152. strVal = this.sheetData.overPrintOperator
  1153. roleId = 'R018'
  1154. }
  1155. if (type===2) {
  1156. strVal = this.sheetData.printOperator
  1157. roleId = 'R019'
  1158. }
  1159. this.$refs.baseList.init(this.searchData.site,this.searchData.buNo, strVal,roleId)
  1160. })
  1161. },
  1162. /* 列表方法的回调 */
  1163. getBaseData (val) {
  1164. if (this.tagNo1 === 1) {
  1165. this.sheetData.overPrintOperator = val.username
  1166. this.sheetData.overPrintOperatorName = val.userDisplay
  1167. this.$nextTick(() => {
  1168. this.$triggerInputEvent(this.$refs.overPrintOperatorName)
  1169. })
  1170. }
  1171. if (this.tagNo1 === 2) {
  1172. this.sheetData.printOperator = val.username
  1173. this.sheetData.printOperatorName = val.userDisplay
  1174. this.$nextTick(() => {
  1175. this.$triggerInputEvent(this.$refs.printOperatorName)
  1176. })
  1177. }
  1178. },
  1179. //初始化组件的参数
  1180. init (inData) {
  1181. // if (this.dataForm.codeNo != null && this.dataForm.codeNo !== '') {
  1182. // return false;
  1183. // }
  1184. //初始化参数
  1185. this.searchData = JSON.parse(JSON.stringify(inData))
  1186. //刷新表格
  1187. this.searchTable()
  1188. },
  1189. searchTable (type) {
  1190. tsdBasicInformationSearch(this.searchData).then(({data}) => {
  1191. if (data&& data.code === 0) {
  1192. this.sheetData = data.row
  1193. this.baseForm = data.row
  1194. this.routeData.site = data.row.site
  1195. this.routeData.partNo = data.row.finalPartNo
  1196. this.getNodeAuthority(data.row)
  1197. if (type) {
  1198. this.$message.success( '操作成功')
  1199. }
  1200. } else {
  1201. this.$message.error(data.msg)
  1202. }
  1203. })
  1204. getOADetailForBM(this.searchData).then(({data}) => {
  1205. this.spForm.nodeName = data.row.nodeName
  1206. this.spForm.sp = data.row.sp == null ? '' : data.row.sp
  1207. })
  1208. if (this.searchData.buNo === 'RDC') {
  1209. searchBMRoutingDetail(this.searchData).then(({data}) => {
  1210. if (data&& data.code === 0) {
  1211. if (data.rows.length > 0) {
  1212. this.dataForm = data.rows[0]
  1213. } else {
  1214. this.dataForm.site = this.searchData.site
  1215. this.dataForm.codeNo = this.searchData.codeNo
  1216. }
  1217. } else {
  1218. this.$message.error(data.msg)
  1219. }
  1220. })
  1221. let inData = {
  1222. site: this.searchData.site,
  1223. codeNo: this.searchData.codeNo,
  1224. type: 'reviewEngineer',
  1225. }
  1226. searchTechnicalSpecificationTeamStr(inData).then(({data}) => {
  1227. this.dataForm.reviewEngineerList = data.rows
  1228. })
  1229. let inData2 = {
  1230. site: this.searchData.site,
  1231. codeNo: this.searchData.codeNo,
  1232. type: 'cqe',
  1233. }
  1234. searchTechnicalSpecificationTeamStr(inData2).then(({data}) => {
  1235. this.dataForm.cqeList = data.rows
  1236. })
  1237. let inData3 = {
  1238. site: this.searchData.site,
  1239. codeNo: this.searchData.codeNo,
  1240. type: 'peEngineer',
  1241. }
  1242. searchTechnicalSpecificationTeamStr(inData3).then(({data}) => {
  1243. this.dataForm.peEngineerList = data.rows
  1244. })
  1245. } else {
  1246. searchBMRoute(this.searchData).then(({data}) => {
  1247. if (data&& data.code === 0) {
  1248. this.tableData = data.rows
  1249. this.routeData = data.row
  1250. } else {
  1251. this.$message.error(data.msg)
  1252. }
  1253. })
  1254. }
  1255. },
  1256. closeModel () {
  1257. this.routeModelFlag = false
  1258. },
  1259. // 根据itemType
  1260. bmModel (row) {
  1261. this.currentRow = row
  1262. this.routeModelFlag = true
  1263. setTimeout(() => {
  1264. switch (this.currentRow.itemType) {
  1265. case 'prepress':
  1266. this.getPrepress();
  1267. break
  1268. case 'printing':
  1269. this.getPrinting();
  1270. break
  1271. case 'printOther':
  1272. this.getPrintOther();
  1273. break
  1274. case 'overprinting':
  1275. this.getOverprinting();
  1276. break
  1277. case 'slitting':
  1278. this.getSlitting();
  1279. break
  1280. case 'lamTemperature':
  1281. this.getLamTemperature();
  1282. break
  1283. case 'cutting':
  1284. this.getCutting();
  1285. break
  1286. case 'InkMixing':
  1287. this.getInkMixing();
  1288. break
  1289. case 'InkFormulation':
  1290. this.getInkFormulation();
  1291. break
  1292. case 'lamination':
  1293. this.getLamination();
  1294. break
  1295. case 'CNC':
  1296. this.getCNC();
  1297. break
  1298. case 'Cut':
  1299. this.getCut();
  1300. break
  1301. case 'packagePage':
  1302. this.getPackagePage();
  1303. break
  1304. case 'fqc':
  1305. this.getFqc();
  1306. break
  1307. case 'cqc':
  1308. this.getCqc();
  1309. break
  1310. case 'printFlexo':
  1311. this.getPrintFlexo();
  1312. break
  1313. case 'printIndigo':
  1314. this.getPrintIndigo();
  1315. break
  1316. }
  1317. }, 500);
  1318. },
  1319. getPrepress(){
  1320. let inData=JSON.parse(JSON.stringify(this.searchData))
  1321. inData.type='prepress'
  1322. this.$refs.prepress.init(inData)
  1323. },
  1324. getPrinting () {
  1325. let inData = JSON.parse(JSON.stringify(this.searchData))
  1326. inData.type = 'printing'
  1327. this.$refs.printing.init(inData)
  1328. },
  1329. getPrintOther(){
  1330. let inData=JSON.parse(JSON.stringify(this.searchData))
  1331. inData.type='printOther'
  1332. this.$refs.printOther.init(inData)
  1333. },
  1334. getOverprinting(){
  1335. let inData=JSON.parse(JSON.stringify(this.searchData))
  1336. inData.type='overprinting'
  1337. this.$refs.overprinting.init(inData)
  1338. },
  1339. getSlitting(){
  1340. let inData=JSON.parse(JSON.stringify(this.searchData))
  1341. inData.type='slitting'
  1342. this.$refs.slitting.init(inData)
  1343. },
  1344. getLamTemperature(){
  1345. let inData=JSON.parse(JSON.stringify(this.searchData))
  1346. inData.type='lamTemperature'
  1347. this.$refs.lamTemperature.init(inData)
  1348. },
  1349. getCutting(){
  1350. let inData=JSON.parse(JSON.stringify(this.searchData))
  1351. inData.type='cutting'
  1352. this.$refs.cutting.init(inData)
  1353. },
  1354. getInkMixing(){
  1355. let inData=JSON.parse(JSON.stringify(this.searchData))
  1356. inData.type='InkMixing'
  1357. this.$refs.InkMixing.init(inData)
  1358. },
  1359. getInkFormulation(){
  1360. let inData=JSON.parse(JSON.stringify(this.searchData))
  1361. inData.type='InkFormulation'
  1362. this.$refs.InkFormulation.init(inData)
  1363. },
  1364. getLamination(){
  1365. let inData=JSON.parse(JSON.stringify(this.searchData))
  1366. inData.type='lamination'
  1367. this.$refs.lamination.init(inData)
  1368. },
  1369. getCNC(){
  1370. let inData=JSON.parse(JSON.stringify(this.searchData))
  1371. inData.type='CNC'
  1372. this.$refs.CNC.init(inData)
  1373. },
  1374. getCut(){
  1375. let inData=JSON.parse(JSON.stringify(this.searchData))
  1376. inData.type='Cut'
  1377. this.$refs.Cut.init(inData)
  1378. },
  1379. getPackagePage(){
  1380. let inData=JSON.parse(JSON.stringify(this.searchData))
  1381. inData.type='packagePage'
  1382. this.$refs.packagePage.init(inData)
  1383. },
  1384. getFqc(){
  1385. let inData=JSON.parse(JSON.stringify(this.searchData))
  1386. inData.type='fqc'
  1387. this.$refs.fqc.init(inData)
  1388. },
  1389. getCqc(){
  1390. let inData=JSON.parse(JSON.stringify(this.searchData))
  1391. inData.type='cqc'
  1392. this.$refs.cqc.init(inData)
  1393. },
  1394. getPrintFlexo () {
  1395. let inData = JSON.parse(JSON.stringify(this.searchData))
  1396. inData.type = 'printFlexo'
  1397. this.$refs.printFlexo.init(inData)
  1398. },
  1399. getPrintIndigo () {
  1400. let inData = JSON.parse(JSON.stringify(this.searchData))
  1401. inData.type = 'printIndigo'
  1402. this.$refs.printIndigo.init(inData)
  1403. },
  1404. reviewEngineerChooseModal(){
  1405. if(this.ifDisableFlag){
  1406. return false
  1407. }
  1408. let inData={
  1409. site:this.searchData.site,
  1410. }
  1411. searchOperatorWithSite(inData).then(({data}) => {
  1412. this.operatorList=data.rows
  1413. })
  1414. this.reviewEngineerList = JSON.parse(JSON.stringify(this.dataForm.reviewEngineerList));
  1415. this.reviewEngineerFlag=true
  1416. },
  1417. savereviewEngineerList(){
  1418. let reviewEngineerName='';
  1419. for (let i = 0; i < this.reviewEngineerList.length; i++) {
  1420. let select= this.operatorList.filter(item => item.operatorId === this.reviewEngineerList[i])
  1421. if(select.length>0){
  1422. reviewEngineerName+=select[0].operatorName+';'
  1423. }
  1424. }
  1425. this.dataForm.reviewEngineer=reviewEngineerName
  1426. this.dataForm.reviewEngineerList=JSON.parse(JSON.stringify(this.reviewEngineerList));
  1427. this.reviewEngineerFlag=false
  1428. },
  1429. peEngineerChooseModal(){
  1430. if(this.ifDisableFlag){
  1431. return false
  1432. }
  1433. let inData={
  1434. site:this.searchData.site,
  1435. }
  1436. searchOperatorWithSite(inData).then(({data}) => {
  1437. this.operatorList=data.rows
  1438. })
  1439. this.peEngineerList = JSON.parse(JSON.stringify(this.dataForm.peEngineerList));
  1440. this.peEngineerFlag=true
  1441. },
  1442. savepeEngineerList(){
  1443. let peEngineerName='';
  1444. for (let i = 0; i < this.peEngineerList.length; i++) {
  1445. let select= this.operatorList.filter(item => item.operatorId === this.peEngineerList[i])
  1446. if(select.length>0){
  1447. peEngineerName+=select[0].operatorName+';'
  1448. }
  1449. }
  1450. this.dataForm.peEngineer=peEngineerName
  1451. this.dataForm.peEngineerList=JSON.parse(JSON.stringify(this.peEngineerList));
  1452. this.peEngineerFlag=false
  1453. },
  1454. cqeModal(){
  1455. if(this.ifDisableFlag){
  1456. return false
  1457. }
  1458. let inData={
  1459. site:this.searchData.site,
  1460. }
  1461. searchOperatorWithSite(inData).then(({data}) => {
  1462. this.operatorList=data.rows
  1463. })
  1464. this.cqeList = JSON.parse(JSON.stringify(this.dataForm.cqeList));
  1465. this.cqeFlag=true
  1466. },
  1467. savecqeList(){
  1468. let cqeName='';
  1469. for (let i = 0; i < this.cqeList.length; i++) {
  1470. let select= this.operatorList.filter(item => item.operatorId === this.cqeList[i])
  1471. if(select.length>0){
  1472. cqeName+=select[0].operatorName+';'
  1473. }
  1474. }
  1475. this.dataForm.cqe=cqeName
  1476. this.dataForm.cqeList=JSON.parse(JSON.stringify(this.cqeList));
  1477. this.cqeFlag=false
  1478. },
  1479. saveData(){
  1480. this.$confirm("是否保存基本信息?", '保存提示', {
  1481. confirmButtonText: '确定',
  1482. cancelButtonText: '取消',
  1483. }).then(() => {
  1484. updateBMRoutingDetail(this.dataForm).then(({data}) => {
  1485. if (data && data.code === 0) {
  1486. this.$message.success( '操作成功')
  1487. } else {
  1488. this.$message.error(data.msg)
  1489. }
  1490. })
  1491. }).catch(() => {
  1492. return
  1493. })
  1494. },
  1495. chooseRoute(row){
  1496. this.nowRoute=JSON.parse(JSON.stringify(row));
  1497. switch (row.itemType) {
  1498. case 'prepress':
  1499. this.selectedComponent='prepress';
  1500. let prepressData=JSON.parse(JSON.stringify(this.searchData))
  1501. prepressData.type='prepress'
  1502. prepressData.ifDisableFlag=true
  1503. this.$nextTick (()=>{this.$refs.routeRef.init(prepressData)});
  1504. break;
  1505. case 'printing':
  1506. this.selectedComponent='printing';
  1507. let printing=JSON.parse(JSON.stringify(this.searchData))
  1508. printing.type='printing'
  1509. printing.ifDisableFlag=true
  1510. this.$nextTick (()=>{this.$refs.routeRef.init(printing)});
  1511. break;
  1512. case 'printOther':
  1513. this.selectedComponent='printOther';
  1514. let printOther=JSON.parse(JSON.stringify(this.searchData))
  1515. printOther.type='printOther'
  1516. printOther.ifDisableFlag=true
  1517. this.$nextTick (()=>{this.$refs.routeRef.init(printOther)});
  1518. break;
  1519. case 'overprinting':
  1520. this.selectedComponent='overprinting';
  1521. let overprinting=JSON.parse(JSON.stringify(this.searchData))
  1522. overprinting.type='overprinting'
  1523. overprinting.ifDisableFlag=true
  1524. this.$nextTick (()=>{this.$refs.routeRef.init(overprinting)});
  1525. break;
  1526. case 'slitting':
  1527. this.selectedComponent='slitting';
  1528. let slitting=JSON.parse(JSON.stringify(this.searchData))
  1529. slitting.type='slitting'
  1530. slitting.ifDisableFlag=true
  1531. this.$nextTick (()=>{this.$refs.routeRef.init(slitting)});
  1532. break;
  1533. case 'lamTemperature':
  1534. this.selectedComponent='lamTemperature';
  1535. let lamTemperature=JSON.parse(JSON.stringify(this.searchData))
  1536. lamTemperature.type='lamTemperature'
  1537. lamTemperature.ifDisableFlag=true
  1538. this.$nextTick (()=>{this.$refs.routeRef.init(lamTemperature)});
  1539. break;
  1540. case 'cutting':
  1541. this.selectedComponent='cutting';
  1542. let cutting=JSON.parse(JSON.stringify(this.searchData))
  1543. cutting.type='cutting'
  1544. cutting.ifDisableFlag=true
  1545. this.$nextTick (()=>{this.$refs.routeRef.init(cutting)});
  1546. break;
  1547. case 'InkMixing':
  1548. this.selectedComponent='InkMixing';
  1549. let InkMixing=JSON.parse(JSON.stringify(this.searchData))
  1550. InkMixing.type='InkMixing'
  1551. InkMixing.ifDisableFlag=true
  1552. this.$nextTick (()=>{this.$refs.routeRef.init(InkMixing)});
  1553. break;
  1554. case 'InkFormulation':
  1555. this.selectedComponent='InkFormulation';
  1556. let InkFormulation=JSON.parse(JSON.stringify(this.searchData))
  1557. InkFormulation.type='InkFormulation'
  1558. InkFormulation.ifDisableFlag=true
  1559. this.$nextTick (()=>{this.$refs.routeRef.init(InkFormulation)});
  1560. break;
  1561. case 'lamination':
  1562. this.selectedComponent='lamination';
  1563. let lamination=JSON.parse(JSON.stringify(this.searchData))
  1564. lamination.type='lamination'
  1565. lamination.ifDisableFlag=true
  1566. this.$nextTick (()=>{this.$refs.routeRef.init(lamination)});
  1567. break;
  1568. case 'CNC':
  1569. this.selectedComponent='CNC';
  1570. let CNC=JSON.parse(JSON.stringify(this.searchData))
  1571. CNC.type='CNC'
  1572. CNC.ifDisableFlag=true
  1573. this.$nextTick (()=>{this.$refs.routeRef.init(CNC)});
  1574. break;
  1575. case 'Cut':
  1576. this.selectedComponent='Cut';
  1577. let inData=JSON.parse(JSON.stringify(this.searchData))
  1578. inData.type='Cut'
  1579. inData.ifDisableFlag=true
  1580. this.$nextTick (()=>{this.$refs.routeRef.init(inData)});
  1581. break;
  1582. case 'packagePage':
  1583. this.selectedComponent='packagePage';
  1584. let packagePage=JSON.parse(JSON.stringify(this.searchData))
  1585. packagePage.type='packagePage'
  1586. packagePage.ifDisableFlag=true
  1587. this.$nextTick (()=>{this.$refs.routeRef.init(packagePage)});
  1588. break;
  1589. case 'fqc':
  1590. this.selectedComponent='fqc';
  1591. let fqc=JSON.parse(JSON.stringify(this.searchData))
  1592. fqc.type='fqc'
  1593. fqc.ifDisableFlag=true
  1594. this.$nextTick (()=>{this.$refs.routeRef.init(fqc)});
  1595. break;
  1596. case 'cqc':
  1597. this.selectedComponent='cqc';
  1598. let cqc=JSON.parse(JSON.stringify(this.searchData))
  1599. cqc.type='cqc'
  1600. cqc.ifDisableFlag=true
  1601. this.$nextTick (()=>{this.$refs.routeRef.init(cqc)});
  1602. break;
  1603. case 'printFlexo':
  1604. this.selectedComponent='printFlexo';
  1605. let printFlexo=JSON.parse(JSON.stringify(this.searchData))
  1606. printFlexo.type='printFlexo'
  1607. printFlexo.ifDisableFlag=true
  1608. this.$nextTick (()=>{this.$refs.routeRef.init(printFlexo)});
  1609. break;
  1610. case 'printIndigo':
  1611. this.selectedComponent='printIndigo';
  1612. let printIndigo=JSON.parse(JSON.stringify(this.searchData))
  1613. printIndigo.type='printIndigo'
  1614. printIndigo.ifDisableFlag=true
  1615. this.$nextTick (()=>{this.$refs.routeRef.init(printIndigo)});
  1616. break;
  1617. default :
  1618. this.selectedComponent=null;
  1619. break;
  1620. }
  1621. },
  1622. searchDetailTable(){
  1623. searchRouteDetail(this.routeData).then(({data}) => {
  1624. this.routeDetailList=data.rows;
  1625. });
  1626. },
  1627. changeRouteRev(){
  1628. this.searchDetailTable()
  1629. this.currentRoute=null
  1630. this.modalFlag=true;
  1631. },
  1632. getRow(row){
  1633. this.currentRoute=row
  1634. },
  1635. updateBMProcess () {
  1636. updateBMProcess(this.sheetData).then(({data}) => {
  1637. if (data && data.code === 0) {
  1638. this.$clearHighLight()
  1639. tsdBasicInformationSearch(this.searchData).then(({data}) => {
  1640. if (data.row) {
  1641. this.sheetData = data.row
  1642. }
  1643. })
  1644. this.$message.success('操作成功')
  1645. } else {
  1646. this.$message.error(data.msg)
  1647. }
  1648. })
  1649. },
  1650. updateBMRouteRev () {
  1651. if (this.currentRoute == null) {
  1652. this.$alert('请点击选择Route版本!', '错误', {
  1653. confirmButtonText: '确定'
  1654. })
  1655. return false;
  1656. }
  1657. if (this.currentRoute.status!=='Buildable') {
  1658. this.$alert('只有Buildable状态的可以保存!', '错误', {
  1659. confirmButtonText: '确定'
  1660. })
  1661. return false;
  1662. }
  1663. let inData = {
  1664. site: this.routeData.site,
  1665. codeNo: this.searchData.codeNo,
  1666. routingType: this.currentRoute.routingType,
  1667. routingRevision: this.currentRoute.routingRevision,
  1668. routingAlternativeNo: this.currentRoute.alternativeNo
  1669. }
  1670. this.$confirm("更改工艺路线后,之前填写的工艺信息都将覆盖,是否继续?", '保存提示', {
  1671. confirmButtonText: '确定',
  1672. cancelButtonText: '取消',
  1673. }).then(() => {
  1674. updateBMRouteRev(inData).then(({data}) => {
  1675. if (data && data.code === 0) {
  1676. this.searchTable()
  1677. this.modalFlag = false
  1678. this.$message.success('操作成功')
  1679. } else {
  1680. this.$message.error(data.msg)
  1681. }
  1682. })
  1683. })
  1684. },
  1685. jumpRoute () {
  1686. if (this.routeData.routingRevision != null || this.routeData.routingRevision !== '') {
  1687. this.$message.error("route明细不存在")
  1688. }
  1689. let inData = {
  1690. site: this.searchData.site,
  1691. partNo: this.routeData.partNo,
  1692. routingType: this.routeData.routingType,
  1693. routingRevision: this.routeData.routingRevision,
  1694. }
  1695. localStorage.setItem('routeData', JSON.stringify(inData))
  1696. window.open('#/part-routingManagement');
  1697. },
  1698. // 获取流程的配置权限
  1699. getNodeAuthority (row) {
  1700. getBMStatusDesc(this.searchData).then(({data}) => {
  1701. this.superAdmin = data.superAdmin
  1702. if (data.superAdmin) {
  1703. this.ifDisableFlag = false
  1704. return false
  1705. }
  1706. if (data.status === '已完成' || data.status === '已升版' || data.status === 'Dead') {
  1707. this.ifDisableFlag = true
  1708. return false
  1709. }
  1710. if(data.status === '审批中') {
  1711. let tempData = {
  1712. site: row.site,
  1713. stepId: row.stepId,
  1714. menuId: '103002'
  1715. }
  1716. getNodeAuthority(tempData).then(({data}) => {
  1717. if (data && data.code === 0) {
  1718. // this.ifDisableFlag = true
  1719. // let plmStepRoleBaseBm = data.rows.plm_stepRole_base_bm
  1720. // let arr = plmStepRoleBaseBm.filter(a => a.fieldId === this.searchData.fieldId)
  1721. // if (arr.length > 0) {
  1722. // if (arr[0].updateFlag === 'N') {
  1723. // this.ifDisableFlag = true
  1724. // } else {
  1725. // this.ifDisableFlag = false
  1726. // }
  1727. // } else {
  1728. // this.ifDisableFlag = true
  1729. // }
  1730. this.plmTechnicalSpecificationSheetArr = data.rows.plm_technical_specification_sheet
  1731. }
  1732. })
  1733. }
  1734. })
  1735. },
  1736. // 打开提交模态框
  1737. submitDataModal () {
  1738. this.rejectOpinion = ''
  1739. this.submitModalFlag = true
  1740. },
  1741. // 同意提交
  1742. agreeSubmit () {
  1743. this.$confirm(`是否确认提交?`, '提示', {
  1744. confirmButtonText: '确定',
  1745. cancelButtonText: '取消',
  1746. type: 'warning'
  1747. }).then(() => {
  1748. let tempData = {
  1749. site: this.searchData.site,
  1750. userName: this.$store.state.user.name,
  1751. codeNo: this.searchData.codeNo,
  1752. menuId: '103002',
  1753. nodeConclusion: 'Y'
  1754. }
  1755. this.submitData(tempData)
  1756. })
  1757. },
  1758. // 驳回提交
  1759. rejectSubmit () {
  1760. this.$confirm(`是否确认驳回?`, '提示', {
  1761. confirmButtonText: '确定',
  1762. cancelButtonText: '取消',
  1763. type: 'warning'
  1764. }).then(() => {
  1765. let tempData = {
  1766. site: this.searchData.site,
  1767. userName: this.$store.state.user.name,
  1768. codeNo: this.searchData.codeNo,
  1769. menuId: '103002',
  1770. nodeConclusion: 'N',
  1771. rejectOpinion : this.rejectOpinion
  1772. }
  1773. this.submitData(tempData)
  1774. })
  1775. },
  1776. async submitData (tempData) {
  1777. if (this.plmTechnicalSpecificationSheetArr) {
  1778. for (let i = 0; i < this.plmTechnicalSpecificationSheetArr.length; i++) {
  1779. if (!this.dataForm[this.plmTechnicalSpecificationSheetArr[i].fieldId] && this.plmTechnicalSpecificationSheetArr[i].required === 'Y') {
  1780. this.$message.warning(this.plmTechnicalSpecificationSheetArr[i].fieldName + '不能为空!')
  1781. return
  1782. }
  1783. }
  1784. }
  1785. await updateBMProcess(this.sheetData).then(({data}) => {
  1786. if (data && data.code === 0) {
  1787. tsdBasicInformationSearch(this.searchData).then(({data}) => {
  1788. if (data.row) {
  1789. this.sheetData = data.row
  1790. }
  1791. })
  1792. } else {
  1793. this.$message.error(data.msg)
  1794. return false
  1795. }
  1796. })
  1797. await updateBMRoutingDetail(this.dataForm).then(({data}) => {
  1798. if (data && data.code === 0) {
  1799. } else {
  1800. this.$message.error(data.msg)
  1801. return false
  1802. }
  1803. })
  1804. this.submitLoading = true
  1805. await submitChange(tempData).then(({data}) => {
  1806. if (data && data.code === 0) {
  1807. this.searchTable()
  1808. // 2025-05-31 操作成功才刷新界面,如果报错了则不刷新界面
  1809. //window.location.reload();
  1810. this.submitModalFlag = false
  1811. this.submitLoading = false
  1812. this.$message({message: '操作成功', type: 'success'})
  1813. } else {
  1814. this.submitLoading = false
  1815. this.$alert(data.msg, '错误', {
  1816. confirmButtonText: '确定'
  1817. })
  1818. }
  1819. }).catch(() => {
  1820. this.submitLoading = false
  1821. })
  1822. },
  1823. // 关闭模态框后刷新下方预览 重新加载组件
  1824. closeItemModel () {
  1825. this.componentKey = Number( this.componentKey) + 1
  1826. this.chooseRoute(this.nowRoute)
  1827. },
  1828. },
  1829. }
  1830. </script>
  1831. <style scoped>
  1832. input[readonly] {
  1833. cursor: text;
  1834. }
  1835. </style>