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.

1817 lines
65 KiB

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