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.

2080 lines
86 KiB

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