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.

1904 lines
69 KiB

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