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.

1264 lines
44 KiB

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
2 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
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
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
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
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. <template>
  2. <div class="mod-config">
  3. <el-form label-position="top" style="margin-top: 1px; margin-left: 0px;" v-if="searchData.buNo=='RDC'">
  4. <el-row :gutter="20" >
  5. <el-col :span="24"><div class="grid-content bg-purple">
  6. <el-form-item :label="'过程及过程控制/Process and Production Control'">
  7. <el-input
  8. type="textarea"
  9. v-model="dataForm.processDetail "
  10. :rows="3"
  11. resize='none'
  12. maxlength="255"
  13. show-word-limit
  14. :disabled="ifDisableFlag"
  15. style="height: 60px" >
  16. </el-input>
  17. </el-form-item>
  18. </div></el-col>
  19. </el-row>
  20. <el-row :gutter="20" style="margin-top: 60px">
  21. <el-col :span="6"><div class="grid-content bg-purple">
  22. <el-form-item :label="'是否提供胶条/Supply Adhesive Tape'">
  23. <el-select clearable v-model="dataForm.supplyAdhesiveTape" :disabled="ifDisableFlag">
  24. <el-option label="Yes" value="Y"></el-option>
  25. <el-option label="No" value="N"></el-option>
  26. </el-select>
  27. </el-form-item>
  28. </div></el-col>
  29. <el-col :span="18"><div class="grid-content bg-purple">
  30. <el-form-item :label="'图稿/Drawing'">
  31. <el-input v-model="dataForm.routingDrawing" :disabled="ifDisableFlag" ></el-input>
  32. </el-form-item>
  33. </div></el-col>
  34. </el-row>
  35. <el-row :gutter="20" >
  36. <el-col :span="6"><div class="grid-content bg-purple">
  37. <el-form-item :label="'图稿版本/Drawing Revison'">
  38. <el-input v-model="dataForm.drawingRevison" :disabled="ifDisableFlag" ></el-input>
  39. </el-form-item>
  40. </div></el-col>
  41. <el-col :span="6"><div class="grid-content bg-purple">
  42. <el-form-item :label="'图稿日期/Drawing Date'">
  43. <el-date-picker
  44. v-model="searchData.drawingDate"
  45. type="date"
  46. value-format="yyyy-MM-dd"
  47. :disabled="ifDisableFlag"
  48. placeholder="选择日期">
  49. </el-date-picker>
  50. </el-form-item>
  51. </div></el-col>
  52. </el-row>
  53. <el-row :gutter="20" >
  54. <el-col :span="24"><div class="grid-content bg-purple">
  55. <el-form-item :label="'作业说明/WI'">
  56. <el-input
  57. type="textarea"
  58. v-model="dataForm.workInfo"
  59. :rows="3"
  60. resize='none'
  61. maxlength="255"
  62. show-word-limit
  63. :disabled="ifDisableFlag"
  64. style="height: 60px" >
  65. </el-input>
  66. </el-form-item>
  67. </div></el-col>
  68. </el-row>
  69. <el-row :gutter="20" style="margin-top: 60px">
  70. <el-col :span="6"><div class="grid-content bg-purple">
  71. <el-form-item :label="'作业说明版本/WI Revison'">
  72. <el-input v-model="dataForm.wiRevison" :disabled="ifDisableFlag" ></el-input>
  73. </el-form-item>
  74. </div></el-col>
  75. <el-col :span="6"><div class="grid-content bg-purple">
  76. <el-form-item :label="'作业说明日期/WI Date'">
  77. <el-date-picker
  78. v-model="searchData.wiDate"
  79. type="date"
  80. value-format="yyyy-MM-dd"
  81. :disabled="ifDisableFlag"
  82. placeholder="选择日期">
  83. </el-date-picker>
  84. </el-form-item>
  85. </div></el-col>
  86. </el-row>
  87. <el-row :gutter="20" >
  88. <el-col :span="6"><div class="grid-content bg-purple">
  89. <el-form-item>
  90. <span slot="label" style="" @click="reviewEngineerChooseModal()"><a herf="#">选择审查工程师/Select ME Review Engineer</a></span>
  91. <el-input v-model="dataForm.reviewEngineer" readonly style="" @focus="reviewEngineerChooseModal()" ></el-input>
  92. </el-form-item>
  93. </div></el-col>
  94. <el-col :span="6"><div class="grid-content bg-purple">
  95. <el-form-item >
  96. <span slot="label" style="" @click="peEngineerChooseModal()"><a herf="#">选择PE工程师/Select PE Engineer</a></span>
  97. <el-input v-model="dataForm.peEngineer" readonly style="" @focus="peEngineerChooseModal()" ></el-input>
  98. </el-form-item>
  99. </div></el-col>
  100. <el-col :span="6"><div class="grid-content bg-purple">
  101. <el-form-item >
  102. <span slot="label" style="" @click="cqeModal()"><a herf="#">选择CQE/Select CQE</a></span>
  103. <el-input v-model="dataForm.cqe" readonly style="" @focus="cqeModal()" ></el-input>
  104. </el-form-item>
  105. </div></el-col>
  106. </el-row>
  107. <el-row :gutter="20" >
  108. <el-col :span="24"><div class="grid-content bg-purple">
  109. <el-form-item :label="'备注/Remark'">
  110. <el-input
  111. type="textarea"
  112. v-model="dataForm.routingRemark"
  113. :rows="3"
  114. resize='none'
  115. maxlength="255"
  116. show-word-limit
  117. :disabled="ifDisableFlag"
  118. style="height: 60px" >
  119. </el-input>
  120. </el-form-item>
  121. </div></el-col>
  122. </el-row>
  123. <el-row :gutter="20" style="margin-top: 60px">
  124. <el-col :span="24"><div class="grid-content bg-purple">
  125. <el-form-item :label="'Action'">
  126. <el-input
  127. type="textarea"
  128. v-model="dataForm.routingAction"
  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></el-col>
  138. </el-row>
  139. <el-form-item style="margin-top: 60px;text-align:center">
  140. <el-button type="primary" @click="saveData()" v-if="!ifDisableFlag">保存</el-button>
  141. </el-form-item>
  142. </el-form>
  143. <el-form label-position="top" style="margin-top: 1px; margin-left: 0px;" v-if="searchData.buNo!='RDC'">
  144. <el-form :inline="true" label-position="top" style="margin-top: 1px; margin-left: 0px;" >
  145. <el-form-item label="物料">
  146. <el-input v-model="routeData.partNo" readonly style="width: 120px"></el-input>
  147. </el-form-item>
  148. <el-form-item label="工艺路线类型">
  149. <el-input v-model="routeData.routingType" readonly style="width: 120px"></el-input>
  150. </el-form-item>
  151. <el-form-item label="工艺路线版本">
  152. <el-input v-model="routeData.routingRevision" readonly style="width: 120px"></el-input>
  153. </el-form-item>
  154. <el-form-item label="替代编码">
  155. <el-input v-model="routeData.alternativeNo" readonly style="width: 120px"></el-input>
  156. </el-form-item>
  157. <el-form-item label=" ">
  158. <el-button type="primary" @click="searchTable()" >刷新</el-button>
  159. <el-button type="primary" @click="changeRouteRev()" >变更</el-button>
  160. </el-form-item>
  161. </el-form>
  162. <el-table
  163. :height="'250'"
  164. :data="tableData"
  165. highlight-current-row
  166. border
  167. @row-click="chooseRoute"
  168. style="width: 100%">
  169. <el-table-column
  170. fixed="left"
  171. header-align="center"
  172. align="center"
  173. width="60"
  174. label="操作">
  175. <template slot-scope="scope">
  176. <a type="text" size="small" @click="bmModel(scope.row)">填写</a>
  177. </template>
  178. </el-table-column>
  179. <el-table-column
  180. v-for="(item,index) in columnList1" :key="index"
  181. :sortable="item.columnSortable"
  182. :prop="item.columnProp"
  183. :header-align="item.headerAlign"
  184. :show-overflow-tooltip="item.showOverflowTooltip"
  185. :align="item.align"
  186. :fixed="item.fixed == ''?false:item.fixed"
  187. :min-width="item.columnWidth"
  188. :label="item.columnLabel">
  189. <template slot-scope="scope">
  190. <span v-if="!item.columnHidden">{{scope.row[item.columnProp]}}</span>
  191. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  192. </template>
  193. </el-table-column>
  194. </el-table>
  195. <component style="margin-top: 5px" :is="selectedComponent" ref="routeRef"></component>
  196. </el-form>
  197. <!-- <el-dialog append-to-body title="工艺路线" :close-on-click-modal="false" v-drag :visible.sync="routeFlag" width="470px">-->
  198. <!-- <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">-->
  199. <!-- <el-form-item :label="'工序编码'">-->
  200. <!-- <el-input v-model="routingData.itemNo" type="number" onkeyup="value=value.replace(/^(0+)|[^\d]+/g,'')" ></el-input>-->
  201. <!-- </el-form-item>-->
  202. <!-- <el-form-item :label="'工序名称'">-->
  203. <!-- <el-input v-model="routingData.operationDesc" style="width: 440px" ></el-input>-->
  204. <!-- </el-form-item>-->
  205. <!-- </el-form>-->
  206. <!-- <el-footer style="height:40px;margin-top: 10px;text-align:center">-->
  207. <!-- <el-button type="primary" @click="routeSave()">保存</el-button>-->
  208. <!-- <el-button type="primary" @click="routeFlag = false">取消</el-button>-->
  209. <!-- </el-footer>-->
  210. <!-- </el-dialog>-->
  211. <el-dialog
  212. width="530px"
  213. title="审查工程师"
  214. :close-on-click-modal="false"
  215. :visible.sync="reviewEngineerFlag">
  216. <el-transfer v-model="reviewEngineerList" class="rq" filterable :props="{
  217. key: 'operatorId',
  218. label: 'operatorName'
  219. }" :data="operatorList" :titles="['未选择', '已选择']"></el-transfer>
  220. <span slot="footer" class="dialog-footer">
  221. <div style="margin-top: 5px">
  222. <el-button type="primary" @click="savereviewEngineerList()">确定</el-button>
  223. <el-button @click="reviewEngineerFlag = false" type="primary">取消</el-button>
  224. </div>
  225. </span>
  226. </el-dialog>
  227. <el-dialog
  228. width="530px"
  229. title="PE工程师"
  230. :close-on-click-modal="false"
  231. :visible.sync="peEngineerFlag">
  232. <el-transfer v-model="peEngineerList" class="rq" filterable :props="{
  233. key: 'operatorId',
  234. label: 'operatorName'
  235. }" :data="operatorList" :titles="['未选择', '已选择']"></el-transfer>
  236. <span slot="footer" class="dialog-footer">
  237. <div style="margin-top: 5px">
  238. <el-button type="primary" @click="savepeEngineerList()">确定</el-button>
  239. <el-button @click="peEngineerFlag = false" type="primary">取消</el-button>
  240. </div>
  241. </span>
  242. </el-dialog>
  243. <el-dialog
  244. width="530px"
  245. title="选择CQE"
  246. :close-on-click-modal="false"
  247. :visible.sync="cqeFlag">
  248. <el-transfer v-model="cqeList" class="rq" filterable :props="{
  249. key: 'operatorId',
  250. label: 'operatorName'
  251. }" :data="operatorList" :titles="['未选择', '已选择']"></el-transfer>
  252. <span slot="footer" class="dialog-footer">
  253. <div style="margin-top: 5px">
  254. <el-button type="primary" @click="savecqeList()">确定</el-button>
  255. <el-button @click="cqeFlag = false" type="primary">取消</el-button>
  256. </div>
  257. </span>
  258. </el-dialog>
  259. <el-dialog
  260. append-to-body
  261. width="900px"
  262. title="工序记录"
  263. top="10vh"
  264. :close-on-click-modal="false"
  265. :visible.sync="routeModelFlag">
  266. <el-form label-position="top" style="margin-top: -5px; margin-left: 0px;" >
  267. <el-row :gutter="20">
  268. <el-col :span="6"><div class="grid-content bg-purple">
  269. <el-form-item :label="'工序编码'">
  270. <el-input v-model="currentRow.operationNo" disabled ></el-input>
  271. </el-form-item>
  272. </div></el-col>
  273. <el-col :span="6"><div class="grid-content bg-purple">
  274. <el-form-item :label="'工序名称'">
  275. <el-input v-model="currentRow.operationName" disabled ></el-input>
  276. </el-form-item>
  277. </div></el-col>
  278. </el-row>
  279. </el-form>
  280. <div v-if="currentRow.itemType === 'prepress'">
  281. <prepress ref="prepress" @closeModel="closeModel"></prepress>
  282. </div>
  283. <div v-else-if="currentRow.itemType === 'printing'">
  284. <printing ref="printing" @closeModel="closeModel"></printing>
  285. </div>
  286. <div v-else-if="currentRow.itemType === 'printOther'">
  287. <printOther ref="printOther" @closeModel="closeModel"></printOther>
  288. </div>
  289. <div v-else-if="currentRow.itemType === 'overprinting'">
  290. <overprinting ref="overprinting" @closeModel="closeModel"></overprinting>
  291. </div>
  292. <div v-else-if="currentRow.itemType === 'slitting'">
  293. <slitting ref="slitting" @closeModel="closeModel"></slitting>
  294. </div>
  295. <div v-else-if="currentRow.itemType === 'lamTemperature'">
  296. <lamTemperature ref="lamTemperature" @closeModel="closeModel"></lamTemperature>
  297. </div>
  298. <div v-else-if="currentRow.itemType === 'cutting'">
  299. <cutting ref="cutting" @closeModel="closeModel"></cutting>
  300. </div>
  301. <div v-else-if="currentRow.itemType === 'InkMixing'">
  302. <InkMixing ref="InkMixing" @closeModel="closeModel"></InkMixing>
  303. </div>
  304. <div v-else-if="currentRow.itemType === 'InkFormulation'">
  305. <InkFormulation ref="InkFormulation" @closeModel="closeModel"></InkFormulation>
  306. </div>
  307. <div v-else-if="currentRow.itemType === 'lamination'">
  308. <lamination ref="lamination" @closeModel="closeModel"></lamination>
  309. </div>
  310. <div v-else-if="currentRow.itemType === 'CNC'">
  311. <CNC ref="CNC" @closeModel="closeModel"></CNC>
  312. </div>
  313. <div v-else-if="currentRow.itemType === 'Cut'">
  314. <Cut ref="Cut" @closeModel="closeModel"></Cut>
  315. </div>
  316. <div v-else-if="currentRow.itemType === 'packagePage'">
  317. <packagePage ref="packagePage" @closeModel="closeModel"></packagePage>
  318. </div>
  319. <div v-else-if="currentRow.itemType === 'fqc'">
  320. <fqc ref="fqc" @closeModel="closeModel"></fqc>
  321. </div>
  322. <div v-else-if="currentRow.itemType === 'cqc'">
  323. <cqc ref="cqc" @closeModel="closeModel"></cqc>
  324. </div>
  325. </el-dialog>
  326. <el-dialog title="变更工艺路线" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="700px">
  327. <el-table
  328. :data="routeDetailList"
  329. height="300"
  330. border
  331. highlight-current-row
  332. onclick=""
  333. @row-click="getRow"
  334. ref="componentTable"
  335. style="width:100%">
  336. <el-table-column
  337. prop="partNo"
  338. header-align="left"
  339. align="left"
  340. min-width="80"
  341. label="物料编码">
  342. </el-table-column>
  343. <el-table-column
  344. prop="routingType"
  345. header-align="left"
  346. align="left"
  347. min-width="80"
  348. label="Routing类型">
  349. </el-table-column>
  350. <el-table-column
  351. prop="routingRevision"
  352. header-align="left"
  353. align="left"
  354. min-width="80"
  355. label="Routing版本">
  356. </el-table-column>
  357. <el-table-column
  358. prop="alternativeNo"
  359. header-align="left"
  360. align="left"
  361. min-width="80"
  362. label="替代编码">
  363. </el-table-column>
  364. <el-table-column
  365. prop="alternativeDescription"
  366. header-align="left"
  367. align="left"
  368. min-width="80"
  369. label="替代名称">
  370. </el-table-column>
  371. <el-table-column
  372. prop="status"
  373. header-align="left"
  374. align="left"
  375. min-width="60"
  376. label="状态">
  377. </el-table-column>
  378. </el-table>
  379. <el-footer style="height:30px;margin-top:20px;text-align:center">
  380. <el-button type="primary" @click="updateBMRouteRev()">确定</el-button>
  381. <el-button type="primary" @click="modalFlag=false">取消</el-button>
  382. </el-footer>
  383. </el-dialog>
  384. <Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
  385. </div>
  386. </template>
  387. <script>
  388. import {
  389. searchBMRoutingDetail,
  390. searchTechnicalSpecificationTeamStr,
  391. updateBMRoutingDetail,
  392. searchBMRoute,
  393. searchRouteDetail,
  394. updateBMRouteRev,
  395. } from "@/api/sampleManagement/technicalSpecificationList.js"
  396. import Chooselist from '@/views/modules/common/Chooselist'
  397. import {
  398. searchOperatorWithSite,
  399. } from "@/api/project/project.js"
  400. import prepress from "./com_bm_prepress";/*组件*/
  401. import printing from "./com_bm_printing";/*组件*/
  402. import printOther from "./com_bm_printOther";/*组件*/
  403. import overprinting from "./com_bm_demoSlot";/*组件*/
  404. import slitting from "./com_bm_demoSlot";/*组件*/
  405. import lamTemperature from "./com_bm_demoSlot";/*组件*/
  406. import cutting from "./com_bm_demoSlot";/*组件*/
  407. import InkMixing from "./com_bm_inkMixing";/*组件*/
  408. import InkFormulation from "./com_bm_inkFormulation";/*组件*/
  409. import lamination from "./com_bm_lamination";/*组件*/
  410. import CNC from "./com_bm_cnc";
  411. import Cut from "./com_bm_cut";
  412. import packagePage from "./com_bm_demoSlot";/*组件*/
  413. import fqc from "./com_bm_demoSlot";/*组件*/
  414. import cqc from "./com_bm_demoSlot";/*组件*/
  415. export default {
  416. components: {
  417. Chooselist,
  418. prepress,
  419. printing,
  420. printOther,
  421. overprinting,
  422. slitting,
  423. lamTemperature,
  424. cutting,
  425. InkMixing,
  426. InkFormulation,
  427. lamination,
  428. CNC,
  429. Cut,
  430. packagePage,
  431. fqc,
  432. cqc,
  433. },
  434. data() {
  435. return {
  436. //动态组件
  437. selectedComponent: null,
  438. routeData:{
  439. site: '',
  440. partNo:'',
  441. alternativeNo:'',
  442. routingType:'',
  443. routingRevision:'',
  444. },
  445. routeFlag:false,
  446. routeModelFlag:false,
  447. height:200,
  448. searchData: {
  449. site: '',
  450. username: this.$store.state.user.name,
  451. codeNo: '',
  452. buNo:'',
  453. },
  454. tableData:'',
  455. partList:[],
  456. ifDisableFlag:false,
  457. dataForm:{
  458. site: '',
  459. codeNo:'',
  460. processDetail:'',
  461. supplyAdhesiveTape: '',
  462. routingDrawing:'',
  463. drawingRevison:'',
  464. drawingDate:'',
  465. workInfo:'',
  466. wiRevison:'',
  467. wiDate:'',
  468. reviewEngineer: '',
  469. routingRemark:'',
  470. routingAction:'',
  471. username:this.$store.state.user.name,
  472. peEngineer:'',
  473. cqe:'',
  474. reviewEngineerList:[],
  475. peEngineerList:[],
  476. cqeList:[],
  477. },
  478. reviewEngineerFlag:false,
  479. peEngineerFlag:false,
  480. cqeFlag:false,
  481. operatorList:[],
  482. reviewEngineerList:[],
  483. peEngineerList:[],
  484. cqeList:[],
  485. //工艺路线部分
  486. routingData:{
  487. id:0,
  488. site:'',
  489. codeNo:'',
  490. itemNo:'',
  491. operationDesc:'',
  492. remark:'',
  493. username:'',
  494. },
  495. columnList1: [
  496. {
  497. userId: this.$store.state.user.name,
  498. functionId: 104003,
  499. serialNumber: '104003Table2OperationNo',
  500. tableId: '104003Table2',
  501. tableName: 'Routing工序表',
  502. columnProp: 'operationNo',
  503. headerAlign: 'center',
  504. align: 'center',
  505. columnLabel: '工序编码',
  506. columnHidden: false,
  507. columnImage: false,
  508. columnSortable: false,
  509. sortLv: 0,
  510. status: true,
  511. fixed: '',
  512. columnWidth: 80
  513. },
  514. {
  515. userId: this.$store.state.user.name,
  516. functionId: 104003,
  517. serialNumber: '104003Table2OperationName',
  518. tableId: '104003Table2',
  519. tableName: 'Routing工序表',
  520. columnProp: 'operationName',
  521. headerAlign: 'center',
  522. align: 'left',
  523. columnLabel: '工序名称',
  524. columnHidden: false,
  525. columnImage: false,
  526. columnSortable: false,
  527. sortLv: 0,
  528. status: true,
  529. fixed: '',
  530. columnWidth: 120
  531. },
  532. {
  533. userId: this.$store.state.user.name,
  534. functionId: 104003,
  535. serialNumber: '104003Table2EfficiencyFactor',
  536. tableId: '104003Table2',
  537. tableName: 'Routing工序表',
  538. columnProp: 'efficiencyFactor',
  539. headerAlign: 'center',
  540. align: 'right',
  541. columnLabel: '效率',
  542. columnHidden: false,
  543. columnImage: false,
  544. columnSortable: false,
  545. sortLv: 0,
  546. status: true,
  547. fixed: '',
  548. columnWidth: 80
  549. },
  550. {
  551. userId: this.$store.state.user.name,
  552. functionId: 104003,
  553. serialNumber: '104003Table2MachRunFactor',
  554. tableId: '104003Table2',
  555. tableName: 'Routing工序表',
  556. columnProp: 'machRunFactor',
  557. headerAlign: 'center',
  558. align: 'right',
  559. columnLabel: '机器运行速度',
  560. columnHidden: false,
  561. columnImage: false,
  562. columnSortable: false,
  563. sortLv: 0,
  564. status: true,
  565. fixed: '',
  566. columnWidth: 80
  567. },
  568. {
  569. userId: this.$store.state.user.name,
  570. functionId: 104003,
  571. serialNumber: '104003Table2MachSetupTime',
  572. tableId: '104003Table2',
  573. tableName: 'Routing工序表',
  574. columnProp: 'machSetupTime',
  575. headerAlign: 'center',
  576. align: 'right',
  577. columnLabel: '机器调机时长',
  578. columnHidden: false,
  579. columnImage: false,
  580. columnSortable: false,
  581. sortLv: 0,
  582. status: true,
  583. fixed: '',
  584. columnWidth: 80
  585. },
  586. {
  587. userId: this.$store.state.user.name,
  588. functionId: 104003,
  589. serialNumber: '104003Table2RunTimeCode',
  590. tableId: '104003Table2',
  591. tableName: 'Routing工序表',
  592. columnProp: 'runTimeCode',
  593. headerAlign: 'center',
  594. align: 'center',
  595. columnLabel: '时长单位',
  596. columnHidden: false,
  597. columnImage: false,
  598. columnSortable: false,
  599. sortLv: 0,
  600. status: true,
  601. fixed: '',
  602. columnWidth: 60
  603. },
  604. {
  605. userId: this.$store.state.user.name,
  606. functionId: 104003,
  607. serialNumber: '104003Table2LaborRunFactor',
  608. tableId: '104003Table2',
  609. tableName: 'Routing工序表',
  610. columnProp: 'laborRunFactor',
  611. headerAlign: 'center',
  612. align: 'right',
  613. columnLabel: '人工生产速度',
  614. columnHidden: false,
  615. columnImage: false,
  616. columnSortable: false,
  617. sortLv: 0,
  618. status: true,
  619. fixed: '',
  620. columnWidth: 80
  621. },
  622. {
  623. userId: this.$store.state.user.name,
  624. functionId: 104003,
  625. serialNumber: '104003Table2LaborSetupTime',
  626. tableId: '104003Table2',
  627. tableName: 'Routing工序表',
  628. columnProp: 'laborSetupTime',
  629. headerAlign: 'center',
  630. align: 'right',
  631. columnLabel: '人工调机时长',
  632. columnHidden: false,
  633. columnImage: false,
  634. columnSortable: false,
  635. sortLv: 0,
  636. status: true,
  637. fixed: '',
  638. columnWidth: 80
  639. },
  640. {
  641. userId: this.$store.state.user.name,
  642. functionId: 104003,
  643. serialNumber: '104003Table2CrewSize',
  644. tableId: '104003Table2',
  645. tableName: 'Routing工序表',
  646. columnProp: 'crewSize',
  647. headerAlign: 'center',
  648. align: 'right',
  649. columnLabel: '生产过程中人数',
  650. columnHidden: false,
  651. columnImage: false,
  652. columnSortable: false,
  653. sortLv: 0,
  654. status: true,
  655. fixed: '',
  656. columnWidth: 80
  657. },
  658. {
  659. userId: this.$store.state.user.name,
  660. functionId: 104003,
  661. serialNumber: '104003Table2SetupCrewSize',
  662. tableId: '104003Table2',
  663. tableName: 'Routing工序表',
  664. columnProp: 'setupCrewSize',
  665. headerAlign: 'center',
  666. align: 'right',
  667. columnLabel: '调机过程中人数',
  668. columnHidden: false,
  669. columnImage: false,
  670. columnSortable: false,
  671. sortLv: 0,
  672. status: true,
  673. fixed: '',
  674. columnWidth: 80
  675. },
  676. {
  677. userId: this.$store.state.user.name,
  678. functionId: 104003,
  679. serialNumber: '104003Table2OutsideOpItem',
  680. tableId: '104003Table2',
  681. tableName: 'Routing工序表',
  682. columnProp: 'outsideOpItem',
  683. headerAlign: 'center',
  684. align: 'center',
  685. columnLabel: '外协采购料号',
  686. columnHidden: false,
  687. columnImage: false,
  688. columnSortable: false,
  689. sortLv: 0,
  690. status: true,
  691. fixed: '',
  692. columnWidth: 120
  693. },
  694. {
  695. userId: this.$store.state.user.name,
  696. functionId: 104003,
  697. serialNumber: '104003Table2MachineNo',
  698. tableId: '104003Table2',
  699. tableName: 'Routing工序表',
  700. columnProp: 'machineNo',
  701. headerAlign: 'center',
  702. align: 'center',
  703. columnLabel: '机台',
  704. columnHidden: false,
  705. columnImage: false,
  706. columnSortable: false,
  707. sortLv: 0,
  708. status: true,
  709. fixed: '',
  710. columnWidth: 80
  711. },
  712. {
  713. userId: this.$store.state.user.name,
  714. functionId: 104003,
  715. serialNumber: '104003Table2WorkCenterDesc',
  716. tableId: '104003Table2',
  717. tableName: 'Routing工序表',
  718. columnProp: 'workCenterDesc',
  719. headerAlign: 'center',
  720. align: 'center',
  721. columnLabel: '加工中心',
  722. columnHidden: false,
  723. columnImage: false,
  724. columnSortable: false,
  725. sortLv: 0,
  726. status: true,
  727. fixed: '',
  728. columnWidth: 120
  729. },
  730. {
  731. userId: this.$store.state.user.name,
  732. functionId: 104003,
  733. serialNumber: '104003Table2LaborClassNo',
  734. tableId: '104003Table2',
  735. tableName: 'Routing工序表',
  736. columnProp: 'laborClassDesc',
  737. headerAlign: 'center',
  738. align: 'center',
  739. columnLabel: '人员等级',
  740. columnHidden: false,
  741. columnImage: false,
  742. columnSortable: false,
  743. sortLv: 0,
  744. status: true,
  745. fixed: '',
  746. columnWidth: 80
  747. },
  748. {
  749. userId: this.$store.state.user.name,
  750. functionId: 104003,
  751. serialNumber: '104003Table2SetupLaborClassDesc',
  752. tableId: '104003Table2',
  753. tableName: 'Routing工序表',
  754. columnProp: 'setupLaborClassDesc',
  755. headerAlign: 'center',
  756. align: 'center',
  757. columnLabel: '调机时人员等级',
  758. columnHidden: false,
  759. columnImage: false,
  760. columnSortable: false,
  761. sortLv: 0,
  762. status: true,
  763. fixed: '',
  764. columnWidth: 80
  765. },
  766. {
  767. userId: this.$store.state.user.name,
  768. functionId: 104003,
  769. serialNumber: '104003Table2NoteText',
  770. tableId: '104003Table2',
  771. tableName: 'Routing工序表',
  772. columnProp: 'noteText',
  773. headerAlign: 'center',
  774. align: 'left',
  775. columnLabel: '备注',
  776. columnHidden: false,
  777. columnImage: false,
  778. columnSortable: false,
  779. sortLv: 0,
  780. status: true,
  781. fixed: '',
  782. columnWidth: 150
  783. },
  784. ],
  785. currentRow:{},
  786. //变更工艺路线
  787. modalFlag:false,
  788. routeDetailList:[],
  789. currentRoute:null
  790. }
  791. },
  792. mounted () {
  793. this.$nextTick(() => {
  794. this.height = window.innerHeight - 100
  795. })
  796. },
  797. methods: {
  798. // 获取基础数据列表S
  799. getBaseList (val, type) {
  800. this.tagNo = val
  801. this.tagNo1 = type
  802. this.$nextTick(() => {
  803. let strVal = ''
  804. if (val === 1013) {
  805. if(type==1) {
  806. strVal = this.dataForm.partType
  807. }
  808. }
  809. this.$refs.baseList.init(val, strVal)
  810. })
  811. },
  812. /* 列表方法的回调 */
  813. getBaseData (val) {
  814. if (this.tagNo === 1013) {
  815. if(this.tagNo1==1) {
  816. this.dataForm.partType = val.Base_id
  817. this.dataForm.partTypeDesc = val.Base_desc
  818. }
  819. }
  820. },
  821. //初始化组件的参数
  822. init(inData) {
  823. if(this.dataForm.codeNo!=null&&this.dataForm.codeNo!=''){
  824. return false;
  825. }
  826. //初始化参数
  827. this.searchData = JSON.parse(JSON.stringify(inData));
  828. //刷新表格
  829. this.searchTable();
  830. },
  831. searchTable(){
  832. if(this.searchData.buNo==='RDC'){
  833. searchBMRoutingDetail(this.searchData).then(({data}) => {
  834. if(data.rows.length>0){
  835. this.dataForm=data.rows[0]
  836. }else {
  837. this.dataForm.site=this.searchData.site
  838. this.dataForm.codeNo=this.searchData.codeNo
  839. }
  840. });
  841. let inData = {
  842. site: this.searchData.site,
  843. codeNo: this.searchData.codeNo,
  844. type: 'reviewEngineer',
  845. }
  846. searchTechnicalSpecificationTeamStr(inData).then(({data}) => {
  847. this.dataForm.reviewEngineerList = data.rows
  848. })
  849. let inData2 = {
  850. site: this.searchData.site,
  851. codeNo: this.searchData.codeNo,
  852. type: 'cqe',
  853. }
  854. searchTechnicalSpecificationTeamStr(inData2).then(({data}) => {
  855. this.dataForm.cqeList = data.rows
  856. })
  857. let inData3 = {
  858. site: this.searchData.site,
  859. codeNo: this.searchData.codeNo,
  860. type: 'peEngineer',
  861. }
  862. searchTechnicalSpecificationTeamStr(inData3).then(({data}) => {
  863. this.dataForm.peEngineerList = data.rows
  864. })
  865. }else {
  866. searchBMRoute(this.searchData).then(({data}) => {
  867. this.tableData = data.rows;
  868. this.routeData = data.row;
  869. });
  870. }
  871. },
  872. closeModel(){
  873. console.log('666')
  874. this.routeModelFlag=false;
  875. },
  876. //根据itemType
  877. bmModel(row){
  878. this.currentRow=row;
  879. this.routeModelFlag=true
  880. setTimeout(() => {
  881. switch (this.currentRow.itemType) {
  882. case 'prepress':
  883. this.getPrepress();
  884. case 'printing':
  885. this.getPrinting();
  886. case 'printOther':
  887. this.getPrintOther();
  888. case 'overprinting':
  889. this.getOverprinting();
  890. case 'slitting':
  891. this.getSlitting();
  892. case 'lamTemperature':
  893. this.getLamTemperature();
  894. case 'cutting':
  895. this.getCutting();
  896. case 'InkMixing':
  897. this.getInkMixing();
  898. case 'InkFormulation':
  899. this.getInkFormulation();
  900. case 'lamination':
  901. this.getLamination();
  902. case 'CNC':
  903. this.getCNC();
  904. case 'Cut':
  905. this.getCut();
  906. case 'packagePage':
  907. this.getPackagePage();
  908. case 'fqc':
  909. this.getFqc();
  910. case 'cqc':
  911. this.getCqc();
  912. }
  913. }, 500);
  914. },
  915. getPrepress(){
  916. let inData=JSON.parse(JSON.stringify(this.searchData))
  917. inData.type='prepress'
  918. this.$refs.prepress.init(inData)
  919. },
  920. getPrinting(){
  921. let inData=JSON.parse(JSON.stringify(this.searchData))
  922. inData.type='printing'
  923. this.$refs.printing.init(inData)
  924. },
  925. getPrintOther(){
  926. let inData=JSON.parse(JSON.stringify(this.searchData))
  927. inData.type='printOther'
  928. this.$refs.printOther.init(inData)
  929. },
  930. getOverprinting(){
  931. let inData=JSON.parse(JSON.stringify(this.searchData))
  932. inData.type='overprinting'
  933. this.$refs.overprinting.init(inData)
  934. },
  935. getSlitting(){
  936. let inData=JSON.parse(JSON.stringify(this.searchData))
  937. inData.type='slitting'
  938. this.$refs.slitting.init(inData)
  939. },
  940. getLamTemperature(){
  941. let inData=JSON.parse(JSON.stringify(this.searchData))
  942. inData.type='lamTemperature'
  943. this.$refs.lamTemperature.init(inData)
  944. },
  945. getCutting(){
  946. let inData=JSON.parse(JSON.stringify(this.searchData))
  947. inData.type='cutting'
  948. this.$refs.cutting.init(inData)
  949. },
  950. getInkMixing(){
  951. let inData=JSON.parse(JSON.stringify(this.searchData))
  952. inData.type='InkMixing'
  953. this.$refs.InkMixing.init(inData)
  954. },
  955. getInkFormulation(){
  956. let inData=JSON.parse(JSON.stringify(this.searchData))
  957. inData.type='InkFormulation'
  958. this.$refs.InkFormulation.init(inData)
  959. },
  960. getLamination(){
  961. let inData=JSON.parse(JSON.stringify(this.searchData))
  962. inData.type='lamination'
  963. this.$refs.lamination.init(inData)
  964. },
  965. getCNC(){
  966. let inData=JSON.parse(JSON.stringify(this.searchData))
  967. inData.type='CNC'
  968. this.$refs.CNC.init(inData)
  969. },
  970. getCut(){
  971. let inData=JSON.parse(JSON.stringify(this.searchData))
  972. inData.type='Cut'
  973. this.$refs.Cut.init(inData)
  974. },
  975. getPackagePage(){
  976. let inData=JSON.parse(JSON.stringify(this.searchData))
  977. inData.type='packagePage'
  978. this.$refs.packagePage.init(inData)
  979. },
  980. getFqc(){
  981. let inData=JSON.parse(JSON.stringify(this.searchData))
  982. inData.type='fqc'
  983. this.$refs.fqc.init(inData)
  984. },
  985. getCqc(){
  986. let inData=JSON.parse(JSON.stringify(this.searchData))
  987. inData.type='cqc'
  988. this.$refs.cqc.init(inData)
  989. },
  990. reviewEngineerChooseModal(){
  991. if(this.ifDisableFlag){
  992. return false
  993. }
  994. let inData={
  995. site:this.searchData.site,
  996. }
  997. searchOperatorWithSite(inData).then(({data}) => {
  998. this.operatorList=data.rows
  999. })
  1000. this.reviewEngineerList = JSON.parse(JSON.stringify(this.dataForm.reviewEngineerList));
  1001. this.reviewEngineerFlag=true
  1002. },
  1003. savereviewEngineerList(){
  1004. let reviewEngineerName='';
  1005. for (let i = 0; i < this.reviewEngineerList.length; i++) {
  1006. let select= this.operatorList.filter(item => item.operatorId === this.reviewEngineerList[i])
  1007. if(select.length>0){
  1008. reviewEngineerName+=select[0].operatorName+';'
  1009. }
  1010. }
  1011. this.dataForm.reviewEngineer=reviewEngineerName
  1012. this.dataForm.reviewEngineerList=JSON.parse(JSON.stringify(this.reviewEngineerList));
  1013. this.reviewEngineerFlag=false
  1014. },
  1015. peEngineerChooseModal(){
  1016. if(this.ifDisableFlag){
  1017. return false
  1018. }
  1019. let inData={
  1020. site:this.searchData.site,
  1021. }
  1022. searchOperatorWithSite(inData).then(({data}) => {
  1023. this.operatorList=data.rows
  1024. })
  1025. this.peEngineerList = JSON.parse(JSON.stringify(this.dataForm.peEngineerList));
  1026. this.peEngineerFlag=true
  1027. },
  1028. savepeEngineerList(){
  1029. let peEngineerName='';
  1030. for (let i = 0; i < this.peEngineerList.length; i++) {
  1031. let select= this.operatorList.filter(item => item.operatorId === this.peEngineerList[i])
  1032. if(select.length>0){
  1033. peEngineerName+=select[0].operatorName+';'
  1034. }
  1035. }
  1036. this.dataForm.peEngineer=peEngineerName
  1037. this.dataForm.peEngineerList=JSON.parse(JSON.stringify(this.peEngineerList));
  1038. this.peEngineerFlag=false
  1039. },
  1040. cqeModal(){
  1041. if(this.ifDisableFlag){
  1042. return false
  1043. }
  1044. let inData={
  1045. site:this.searchData.site,
  1046. }
  1047. searchOperatorWithSite(inData).then(({data}) => {
  1048. this.operatorList=data.rows
  1049. })
  1050. this.cqeList = JSON.parse(JSON.stringify(this.dataForm.cqeList));
  1051. this.cqeFlag=true
  1052. },
  1053. savecqeList(){
  1054. let cqeName='';
  1055. for (let i = 0; i < this.cqeList.length; i++) {
  1056. let select= this.operatorList.filter(item => item.operatorId === this.cqeList[i])
  1057. if(select.length>0){
  1058. cqeName+=select[0].operatorName+';'
  1059. }
  1060. }
  1061. this.dataForm.cqe=cqeName
  1062. this.dataForm.cqeList=JSON.parse(JSON.stringify(this.cqeList));
  1063. this.cqeFlag=false
  1064. },
  1065. saveData(){
  1066. this.$confirm("是否保存基本信息?", '保存提示', {
  1067. confirmButtonText: '确定',
  1068. cancelButtonText: '取消',
  1069. }).then(() => {
  1070. updateBMRoutingDetail(this.dataForm).then(({data}) => {
  1071. if (data && data.code === 0) {
  1072. this.$message.success( '操作成功')
  1073. } else {
  1074. this.$message.error(data.msg)
  1075. }
  1076. })
  1077. }).catch(() => {
  1078. return
  1079. })
  1080. },
  1081. chooseRoute(row){
  1082. switch (row.itemType) {
  1083. case 'prepress':
  1084. this.selectedComponent='prepress';
  1085. let prepressData=JSON.parse(JSON.stringify(this.searchData))
  1086. prepressData.type='prepress'
  1087. prepressData.ifDisableFlag=true
  1088. this.$nextTick (()=>{this.$refs.routeRef.init(prepressData)});
  1089. break;
  1090. case 'printing':
  1091. this.selectedComponent='printing';
  1092. let printing=JSON.parse(JSON.stringify(this.searchData))
  1093. printing.type='printing'
  1094. printing.ifDisableFlag=true
  1095. this.$nextTick (()=>{this.$refs.routeRef.init(printing)});
  1096. break;
  1097. case 'printOther':
  1098. this.selectedComponent='printOther';
  1099. let printOther=JSON.parse(JSON.stringify(this.searchData))
  1100. printOther.type='printOther'
  1101. printOther.ifDisableFlag=true
  1102. this.$nextTick (()=>{this.$refs.routeRef.init(printOther)});
  1103. break;
  1104. case 'overprinting':
  1105. this.selectedComponent='overprinting';
  1106. let overprinting=JSON.parse(JSON.stringify(this.searchData))
  1107. overprinting.type='overprinting'
  1108. overprinting.ifDisableFlag=true
  1109. this.$nextTick (()=>{this.$refs.routeRef.init(overprinting)});
  1110. break;
  1111. case 'slitting':
  1112. this.selectedComponent='slitting';
  1113. let slitting=JSON.parse(JSON.stringify(this.searchData))
  1114. slitting.type='slitting'
  1115. slitting.ifDisableFlag=true
  1116. this.$nextTick (()=>{this.$refs.routeRef.init(slitting)});
  1117. break;
  1118. case 'lamTemperature':
  1119. this.selectedComponent='lamTemperature';
  1120. let lamTemperature=JSON.parse(JSON.stringify(this.searchData))
  1121. lamTemperature.type='lamTemperature'
  1122. lamTemperature.ifDisableFlag=true
  1123. this.$nextTick (()=>{this.$refs.routeRef.init(lamTemperature)});
  1124. break;
  1125. case 'cutting':
  1126. this.selectedComponent='cutting';
  1127. let cutting=JSON.parse(JSON.stringify(this.searchData))
  1128. cutting.type='cutting'
  1129. cutting.ifDisableFlag=true
  1130. this.$nextTick (()=>{this.$refs.routeRef.init(cutting)});
  1131. break;
  1132. case 'InkMixing':
  1133. this.selectedComponent='InkMixing';
  1134. let InkMixing=JSON.parse(JSON.stringify(this.searchData))
  1135. InkMixing.type='InkMixing'
  1136. InkMixing.ifDisableFlag=true
  1137. this.$nextTick (()=>{this.$refs.routeRef.init(InkMixing)});
  1138. break;
  1139. case 'InkFormulation':
  1140. this.selectedComponent='InkFormulation';
  1141. let InkFormulation=JSON.parse(JSON.stringify(this.searchData))
  1142. InkFormulation.type='InkFormulation'
  1143. InkFormulation.ifDisableFlag=true
  1144. this.$nextTick (()=>{this.$refs.routeRef.init(InkFormulation)});
  1145. break;
  1146. case 'lamination':
  1147. this.selectedComponent='lamination';
  1148. let lamination=JSON.parse(JSON.stringify(this.searchData))
  1149. lamination.type='lamination'
  1150. lamination.ifDisableFlag=true
  1151. this.$nextTick (()=>{this.$refs.routeRef.init(lamination)});
  1152. break;
  1153. case 'CNC':
  1154. this.selectedComponent='CNC';
  1155. let CNC=JSON.parse(JSON.stringify(this.searchData))
  1156. CNC.type='CNC'
  1157. CNC.ifDisableFlag=true
  1158. this.$nextTick (()=>{this.$refs.routeRef.init(CNC)});
  1159. break;
  1160. case 'Cut':
  1161. this.selectedComponent='Cut';
  1162. let inData=JSON.parse(JSON.stringify(this.searchData))
  1163. inData.type='Cut'
  1164. inData.ifDisableFlag=true
  1165. this.$nextTick (()=>{this.$refs.routeRef.init(inData)});
  1166. break;
  1167. case 'packagePage':
  1168. this.selectedComponent='packagePage';
  1169. let packagePage=JSON.parse(JSON.stringify(this.searchData))
  1170. packagePage.type='packagePage'
  1171. packagePage.ifDisableFlag=true
  1172. this.$nextTick (()=>{this.$refs.routeRef.init(packagePage)});
  1173. break;
  1174. case 'fqc':
  1175. this.selectedComponent='fqc';
  1176. let fqc=JSON.parse(JSON.stringify(this.searchData))
  1177. fqc.type='fqc'
  1178. fqc.ifDisableFlag=true
  1179. this.$nextTick (()=>{this.$refs.routeRef.init(fqc)});
  1180. break;
  1181. case 'cqc':
  1182. this.selectedComponent='cqc';
  1183. let cqc=JSON.parse(JSON.stringify(this.searchData))
  1184. cqc.type='cqc'
  1185. cqc.ifDisableFlag=true
  1186. this.$nextTick (()=>{this.$refs.routeRef.init(cqc)});
  1187. break;
  1188. default :
  1189. this.selectedComponent=null;
  1190. break;
  1191. }
  1192. },
  1193. searchDetailTable(){
  1194. searchRouteDetail(this.routeData).then(({data}) => {
  1195. this.routeDetailList=data.rows;
  1196. });
  1197. },
  1198. changeRouteRev(){
  1199. this.searchDetailTable()
  1200. this.currentRoute=null
  1201. this.modalFlag=true;
  1202. },
  1203. getRow(row){
  1204. this.currentRoute=row
  1205. },
  1206. updateBMRouteRev(){
  1207. if(this.currentRoute==null){
  1208. this.$alert('请点击选择Route版本!', '错误', {
  1209. confirmButtonText: '确定'
  1210. })
  1211. return false;
  1212. }
  1213. let inData={
  1214. site:this.routeData.site,
  1215. codeNo:this.searchData.codeNo,
  1216. routingType:this.currentRoute.routingType,
  1217. routingRevision:this.currentRoute.routingRevision,
  1218. routingAlternativeNo:this.currentRoute.alternativeNo
  1219. }
  1220. this.$confirm("更改工艺路线后,之前填写的工艺信息都将覆盖,是否继续?", '保存提示', {
  1221. confirmButtonText: '确定',
  1222. cancelButtonText: '取消',
  1223. }).then(() => {
  1224. updateBMRouteRev(inData).then(({data}) => {
  1225. if (data && data.code === 0) {
  1226. this.searchTable();
  1227. this.modalFlag = false;
  1228. this.$message.success('操作成功')
  1229. } else {
  1230. this.$message.error(data.msg)
  1231. }
  1232. })
  1233. })
  1234. },
  1235. },
  1236. }
  1237. </script>
  1238. <style scoped>
  1239. </style>