user-edit.vue 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855
  1. <!-- 用户编辑弹窗 -->
  2. <template>
  3. <ele-modal
  4. width="960px"
  5. :visible="visible"
  6. :append-to-body="true"
  7. :close-on-click-modal="false"
  8. custom-class="ele-dialog-form"
  9. :title="detail ? '工序详情' : isUpdate ? '修改工序' : '添加工序'"
  10. @update:visible="updateVisible"
  11. :maxable="true"
  12. >
  13. <header-title title="基本信息"></header-title>
  14. <el-form
  15. ref="form"
  16. :model="form"
  17. :rules="rules"
  18. label-width="120px"
  19. :disabled="detail"
  20. >
  21. <el-row>
  22. <el-col :span="8">
  23. <el-form-item label="工序编码:">
  24. <el-input
  25. disabled
  26. v-model="form.code"
  27. clearable
  28. placeholder="请输入"
  29. ></el-input>
  30. </el-form-item>
  31. <!-- <el-form-item label="工序编码:" v-else prop="code">
  32. <el-input :disabled="isUpdate" v-model="form.code" clearable placeholder="请输入" />
  33. </el-form-item> -->
  34. </el-col>
  35. <el-col :span="8">
  36. <el-form-item label="工序名称:" prop="name">
  37. <el-input v-model="form.name" clearable placeholder="请输入" />
  38. </el-form-item>
  39. </el-col>
  40. <el-col :span="8">
  41. <el-form-item label="控制码:" prop="controlId">
  42. <el-select v-model="form.controlId" filterable>
  43. <el-option
  44. v-for="item in controlList"
  45. :key="item.id"
  46. :label="item.name"
  47. :value="item.id"
  48. >
  49. </el-option>
  50. </el-select>
  51. </el-form-item>
  52. </el-col>
  53. <el-col :span="8">
  54. <el-form-item label="工作中心:" prop="workCenterName">
  55. <el-input
  56. @click.native="chooseWorkCenter"
  57. v-model="form.workCenterName"
  58. readonly
  59. />
  60. </el-form-item>
  61. </el-col>
  62. <el-col :span="8">
  63. <el-form-item label="所属工厂:" prop="factoriesName">
  64. <el-input v-model="form.factoriesName" readonly disabled />
  65. </el-form-item>
  66. </el-col>
  67. <el-col :span="8">
  68. <el-form-item label="工序类型:" prop="type">
  69. <el-select v-model="form.type" filterable>
  70. <el-option
  71. :label="item.label"
  72. :value="item.value"
  73. v-for="(item, index) in typeList"
  74. :key="index"
  75. >
  76. </el-option>
  77. </el-select>
  78. </el-form-item>
  79. </el-col>
  80. <el-col :span="8">
  81. <el-form-item label="排序:" prop="sort">
  82. <el-input v-model="form.sort" />
  83. </el-form-item>
  84. </el-col>
  85. <el-col :span="8">
  86. <el-form-item label="工序标签:" prop="processLabel">
  87. <el-select v-model="form.processLabel" filterable>
  88. <el-option
  89. v-for="item in processLabeList"
  90. :key="item.id"
  91. :label="item.name"
  92. :value="item.id"
  93. >
  94. </el-option>
  95. </el-select>
  96. </el-form-item>
  97. </el-col>
  98. <el-col :span="8">
  99. <el-form-item label="附件上传:" prop="sort">
  100. <!-- <fileUpload v-model="form.files"></fileUpload> -->
  101. <fileMain v-model="form.files"></fileMain>
  102. </el-form-item>
  103. </el-col>
  104. </el-row>
  105. <header-title title="工序节拍时间"></header-title>
  106. <el-row>
  107. <el-col :span="12">
  108. <el-form-item label="节拍生产数量" prop="beatProduceNum">
  109. <el-row>
  110. <el-col :span="16">
  111. <el-input
  112. placeholder="请输入"
  113. type="number"
  114. v-model="form.workBeat.beatProduceNum"
  115. >
  116. </el-input
  117. ></el-col>
  118. <el-col :span="1">&nbsp;</el-col>
  119. <el-col :span="7">
  120. <DictSelection
  121. dictName="计量单位"
  122. v-model="form.workBeat.beatProduceUnit"
  123. />
  124. </el-col>
  125. </el-row>
  126. </el-form-item>
  127. </el-col>
  128. <el-col :span="8">
  129. <el-form-item label="工序休息时长:">
  130. <el-input
  131. v-model="form.workBeat.restTimes"
  132. placeholder="请输入"
  133. type="number"
  134. />
  135. </el-form-item>
  136. </el-col>
  137. <el-col :span="8">
  138. <el-form-item label="工序准备时长:">
  139. <el-input
  140. v-model="form.workBeat.preTimes"
  141. clearable
  142. placeholder="请输入"
  143. type="number"
  144. />
  145. </el-form-item>
  146. </el-col>
  147. <el-col :span="8">
  148. <el-form-item label="设备生产时长:">
  149. <el-input
  150. v-model="form.workBeat.proTimes"
  151. placeholder="请输入"
  152. type="number"
  153. />
  154. </el-form-item>
  155. </el-col>
  156. <el-col :span="8">
  157. <el-form-item label="其他时长:">
  158. <el-input
  159. placeholder="请输入"
  160. v-model="form.workBeat.otherTimes"
  161. type="number"
  162. />
  163. </el-form-item>
  164. </el-col>
  165. <el-col :span="8">
  166. <el-form-item label="节拍时间:">
  167. <el-input disabled :value="totalTime"></el-input>
  168. </el-form-item>
  169. </el-col>
  170. <el-col :span="8">
  171. <el-form-item label="节拍时间单位:">
  172. <el-select v-model="form.workBeat.beatTimesUnit">
  173. <el-option
  174. v-for="item in timeType2"
  175. :key="item.code"
  176. :label="item.label"
  177. :value="item.code"
  178. >
  179. </el-option>
  180. </el-select>
  181. </el-form-item>
  182. </el-col>
  183. </el-row>
  184. <header-title title="工序间隔时间"></header-title>
  185. <el-row>
  186. <el-col :span="12">
  187. <el-form-item label="间隔策略:" label-width="200px">
  188. <el-select v-model="form.intervalTime.tactics" filterable>
  189. <el-option
  190. v-for="item in tacticsType"
  191. :key="item.code"
  192. :label="item.label"
  193. :value="item.code"
  194. >
  195. </el-option>
  196. </el-select>
  197. </el-form-item>
  198. </el-col>
  199. <el-col :span="8">
  200. <el-form-item label="间隔时间单位:">
  201. <el-select v-model="form.timeUnit">
  202. <el-option
  203. v-for="item in timeType"
  204. :key="item.code"
  205. :label="item.label"
  206. :value="item.code"
  207. >
  208. </el-option>
  209. </el-select>
  210. </el-form-item>
  211. </el-col>
  212. <el-col :span="12">
  213. <el-form-item label="下工序标准准备时间:" label-width="200px">
  214. <el-input
  215. v-model="form.intervalTime.nextStandardPreTime"
  216. placeholder="请输入"
  217. type="number"
  218. />
  219. </el-form-item>
  220. </el-col>
  221. <el-col :span="12">
  222. <el-form-item label="下工序最短准备时间:" label-width="200px">
  223. <el-input
  224. v-model="form.intervalTime.nextShortPreTime"
  225. placeholder="请输入"
  226. type="number"
  227. />
  228. </el-form-item>
  229. </el-col>
  230. <el-col :span="12">
  231. <el-form-item label="本工序标准等待时间:" label-width="200px">
  232. <el-input
  233. v-model="form.intervalTime.thisStandardWaitTime"
  234. placeholder="请输入"
  235. type="number"
  236. />
  237. </el-form-item>
  238. </el-col>
  239. <el-col :span="12">
  240. <el-form-item label="本工序最短准备时间:" label-width="200px">
  241. <el-input
  242. v-model="form.intervalTime.thisShortPreTime"
  243. placeholder="请输入"
  244. type="number"
  245. />
  246. </el-form-item>
  247. </el-col>
  248. <el-col :span="12">
  249. <el-form-item label="本工序结束后标准周转时间:" label-width="200px">
  250. <el-input
  251. v-model="form.intervalTime.thisStandardBoatTime"
  252. placeholder="请输入"
  253. type="number"
  254. />
  255. </el-form-item>
  256. </el-col>
  257. <el-col :span="12">
  258. <el-form-item label="本工序结束后周转最短时间:" label-width="200px">
  259. <el-input
  260. v-model="form.intervalTime.thisShortBoatTime"
  261. placeholder="请输入"
  262. type="number"
  263. />
  264. </el-form-item>
  265. </el-col>
  266. </el-row>
  267. <header-title title="工序配置"></header-title>
  268. <el-row>
  269. <el-col v-if="showBaseProcessConfig" :span="12">
  270. <el-form-item label="投料是否要添加周转车:" label-width="200px">
  271. <el-radio-group v-model="form.feedNeedTurnover">
  272. <el-radio
  273. :label="item.value"
  274. v-for="(item, i) in radioList"
  275. :key="i"
  276. >{{ item.name }}</el-radio
  277. >
  278. </el-radio-group>
  279. </el-form-item>
  280. </el-col>
  281. <el-col v-if="showBaseProcessConfig" :span="12">
  282. <el-form-item label="报工是否要添加周转车:" label-width="200px">
  283. <el-radio-group v-model="form.reportNeedTurnover">
  284. <el-radio
  285. :label="item.value"
  286. v-for="(item, i) in radioList"
  287. :key="i"
  288. >{{ item.name }}</el-radio
  289. >
  290. </el-radio-group>
  291. </el-form-item>
  292. </el-col>
  293. <el-col v-if="showBaseProcessConfig" :span="12">
  294. <el-form-item label="是否需要投料再报工:" label-width="200px">
  295. <el-radio-group v-model="form.reportNeedFeed">
  296. <el-radio
  297. :label="item.value"
  298. v-for="(item, i) in radioList"
  299. :key="i"
  300. >{{ item.name }}</el-radio
  301. >
  302. </el-radio-group>
  303. </el-form-item>
  304. </el-col>
  305. <!-- **** -->
  306. <el-col v-if="showBaseProcessConfig" :span="12">
  307. <el-form-item label="投料是否要添加生产设备:" label-width="200px">
  308. <el-radio-group v-model="form.feedNeedEquipment">
  309. <el-radio
  310. :label="item.value"
  311. v-for="(item, i) in radioList"
  312. :key="i"
  313. >{{ item.name }}</el-radio
  314. >
  315. </el-radio-group>
  316. </el-form-item>
  317. </el-col>
  318. <el-col v-if="showBaseProcessConfig" :span="12">
  319. <el-form-item label="报工是否要添加生产设备:" label-width="200px">
  320. <el-radio-group v-model="form.reportNeedEquipment">
  321. <el-radio
  322. :label="item.value"
  323. v-for="(item, i) in radioList"
  324. :key="i"
  325. >{{ item.name }}</el-radio
  326. >
  327. </el-radio-group>
  328. </el-form-item>
  329. </el-col>
  330. <el-col v-if="showBaseProcessConfig" :span="12">
  331. <el-form-item label="投料是否要添加模具:" label-width="200px">
  332. <el-radio-group v-model="form.feedNeedMould">
  333. <el-radio
  334. :label="item.value"
  335. v-for="(item, i) in radioList"
  336. :key="i"
  337. >{{ item.name }}</el-radio
  338. >
  339. </el-radio-group>
  340. </el-form-item>
  341. </el-col>
  342. <el-col v-if="showBaseProcessConfig" :span="12">
  343. <el-form-item label="投料是否要添加舟皿:" label-width="200px">
  344. <el-radio-group v-model="form.feedNeedBoat">
  345. <el-radio
  346. :label="item.value"
  347. v-for="(item, i) in radioList"
  348. :key="i"
  349. >{{ item.name }}</el-radio
  350. >
  351. </el-radio-group>
  352. </el-form-item>
  353. </el-col>
  354. <el-col v-if="showBaseProcessConfig" :span="12">
  355. <el-form-item label="投料是否要添加消耗材料:" label-width="200px">
  356. <el-radio-group v-model="form.feedNeedConsumableMaterial">
  357. <el-radio
  358. :label="item.value"
  359. v-for="(item, i) in radioList"
  360. :key="i"
  361. >{{ item.name }}</el-radio
  362. >
  363. </el-radio-group>
  364. </el-form-item>
  365. </el-col>
  366. <el-col v-if="showBaseProcessConfig" :span="12">
  367. <el-form-item label="投料是否要添加物料:" label-width="200px">
  368. <el-radio-group v-model="form.feedNeedMateriel">
  369. <el-radio
  370. :label="item.value"
  371. v-for="(item, i) in radioList"
  372. :key="i"
  373. >{{ item.name }}</el-radio
  374. >
  375. </el-radio-group>
  376. </el-form-item>
  377. </el-col>
  378. <el-col v-if="showBaseProcessConfig" :span="12">
  379. <el-form-item label="投料是否要添加产品:" label-width="200px">
  380. <el-radio-group v-model="form.feedNeedProduct">
  381. <el-radio
  382. :label="item.value"
  383. v-for="(item, i) in radioList"
  384. :key="i"
  385. >{{ item.name }}</el-radio
  386. >
  387. </el-radio-group>
  388. </el-form-item>
  389. </el-col>
  390. <el-col v-if="showBaseProcessConfig" :span="12">
  391. <el-form-item label="投料是否要添加半成品:" label-width="200px">
  392. <el-radio-group v-model="form.feedNeedSemiProduct">
  393. <el-radio
  394. :label="item.value"
  395. v-for="(item, i) in radioList"
  396. :key="i"
  397. >{{ item.name }}</el-radio
  398. >
  399. </el-radio-group>
  400. </el-form-item>
  401. </el-col>
  402. <el-col v-if="showBaseProcessConfig" :span="12">
  403. <el-form-item label="投料是否要添加废品:" label-width="200px">
  404. <el-radio-group v-model="form.feedNeedJunkProduct">
  405. <el-radio
  406. :label="item.value"
  407. v-for="(item, i) in radioList"
  408. :key="i"
  409. >{{ item.name }}</el-radio
  410. >
  411. </el-radio-group>
  412. </el-form-item>
  413. </el-col>
  414. <el-col v-if="showBaseProcessConfig" :span="12">
  415. <el-form-item label="投料是否要添加返工反修品:" label-width="200px">
  416. <el-radio-group v-model="form.feedNeedReworkProduct">
  417. <el-radio
  418. :label="item.value"
  419. v-for="(item, i) in radioList"
  420. :key="i"
  421. >{{ item.name }}</el-radio
  422. >
  423. </el-radio-group>
  424. </el-form-item>
  425. </el-col>
  426. <el-col v-if="showBaseProcessConfig" :span="12">
  427. <el-form-item label="投料是否要添加干燥区:" label-width="200px">
  428. <el-radio-group v-model="form.feedNeedAridRegion">
  429. <el-radio
  430. :label="item.value"
  431. v-for="(item, i) in radioList"
  432. :key="i"
  433. >{{ item.name }}</el-radio
  434. >
  435. </el-radio-group>
  436. </el-form-item>
  437. </el-col>
  438. <el-col v-if="showBaseProcessConfig" :span="12">
  439. <el-form-item label="投料是否要添加生产辅助设备:" label-width="200px">
  440. <el-radio-group v-model="form.feedNeedAuxiliaryEquipment">
  441. <el-radio
  442. :label="item.value"
  443. v-for="(item, i) in radioList"
  444. :key="i"
  445. >{{ item.name }}</el-radio
  446. >
  447. </el-radio-group>
  448. </el-form-item>
  449. </el-col>
  450. <el-col v-if="showBaseProcessConfig" :span="12">
  451. <el-form-item label="投料是否要添加仪表计量设备:" label-width="200px">
  452. <el-radio-group v-model="form.feedNeedMeasuringEquipment">
  453. <el-radio
  454. :label="item.value"
  455. v-for="(item, i) in radioList"
  456. :key="i"
  457. >{{ item.name }}</el-radio
  458. >
  459. </el-radio-group>
  460. </el-form-item>
  461. </el-col>
  462. <el-col v-if="showBaseProcessConfig" :span="12">
  463. <el-form-item label="投料是否需要质检:" label-width="200px">
  464. <el-radio-group v-model="form.feedNeedQuality">
  465. <el-radio
  466. :label="item.value"
  467. v-for="(item, i) in radioList"
  468. :key="i"
  469. >{{ item.name }}</el-radio
  470. >
  471. </el-radio-group>
  472. </el-form-item>
  473. </el-col>
  474. <el-col v-if="showBaseProcessConfig" :span="12">
  475. <el-form-item label="生产质检是否需要处置再报工:" label-width="200px">
  476. <el-radio-group v-model="form.isReportProcessProduce">
  477. <el-radio
  478. :label="item.value"
  479. v-for="(item, i) in radioList"
  480. :key="i"
  481. >{{ item.name }}</el-radio
  482. >
  483. </el-radio-group>
  484. </el-form-item>
  485. </el-col>
  486. <el-col v-if="showBaseProcessConfig" :span="12">
  487. <el-form-item label="是否产前准备后再投料:" label-width="200px">
  488. <el-radio-group v-model="form.isPrenatalPreProduction">
  489. <el-radio
  490. :label="item.value"
  491. v-for="(item, i) in radioList"
  492. :key="i"
  493. >{{ item.name }}</el-radio
  494. >
  495. </el-radio-group>
  496. </el-form-item>
  497. </el-col>
  498. <el-col v-if="showBaseProcessConfig" :span="12">
  499. <el-form-item label="是否投料后再过程控制:" label-width="200px">
  500. <el-radio-group v-model="form.isFeedCheckProduction">
  501. <el-radio
  502. :label="item.value"
  503. v-for="(item, i) in radioList"
  504. :key="i"
  505. >{{ item.name }}</el-radio
  506. >
  507. </el-radio-group>
  508. </el-form-item>
  509. </el-col>
  510. <el-col v-if="showBaseProcessConfig" :span="12">
  511. <el-form-item label="是否过程控制后再产后检查:" label-width="200px">
  512. <el-radio-group v-model="form.isPostCheckProduction">
  513. <el-radio
  514. :label="item.value"
  515. v-for="(item, i) in radioList"
  516. :key="i"
  517. >{{ item.name }}</el-radio
  518. >
  519. </el-radio-group>
  520. </el-form-item>
  521. </el-col>
  522. <el-col v-if="showBaseProcessConfig" :span="12">
  523. <el-form-item label="是否产后检查后再报工:" label-width="200px">
  524. <el-radio-group v-model="form.isFinalCheckProduction">
  525. <el-radio
  526. :label="item.value"
  527. v-for="(item, i) in radioList"
  528. :key="i"
  529. >{{ item.name }}</el-radio
  530. >
  531. </el-radio-group>
  532. </el-form-item>
  533. </el-col>
  534. <el-col :span="12">
  535. <el-form-item label="工序报工是否需要首件两检:" label-width="200px">
  536. <el-radio-group v-model="form.isFirstArticleDualInspection">
  537. <el-radio
  538. :label="item.value"
  539. v-for="(item, i) in radioList"
  540. :key="i"
  541. >{{ item.name }}</el-radio
  542. >
  543. </el-radio-group>
  544. </el-form-item>
  545. </el-col>
  546. <el-col :span="12">
  547. <el-form-item label="是否需要NC代码:" label-width="200px">
  548. <el-radio-group v-model="form.needNCCode">
  549. <el-radio
  550. :label="item.value"
  551. v-for="(item, i) in radioList"
  552. :key="i"
  553. >{{ item.name }}</el-radio
  554. >
  555. </el-radio-group>
  556. </el-form-item>
  557. </el-col>
  558. </el-row>
  559. </el-form>
  560. <template v-slot:footer>
  561. <el-button @click="updateVisible(false)">取消</el-button>
  562. <el-button v-if="!detail" type="primary" :loading="loading" @click="save">
  563. 保存
  564. </el-button>
  565. </template>
  566. <!-- 工作中心弹窗 -->
  567. <WorkCenter ref="centerRefs" @changeCenter="determineChoose" />
  568. </ele-modal>
  569. </template>
  570. <script>
  571. import producetask from '@/api/technology/production';
  572. import WorkCenter from './WorkCenter.vue';
  573. import fileUpload from '@/components/addDoc/fileUpload.vue';
  574. import { pageList } from '@/api/technology/version/version.js';
  575. export default {
  576. components: {
  577. WorkCenter,
  578. fileUpload
  579. },
  580. props: {
  581. // 弹窗是否打开
  582. visible: Boolean,
  583. // 修改回显的数据
  584. data: Object,
  585. controlList: Array,
  586. typeList: Array,
  587. detail: Boolean
  588. },
  589. data() {
  590. const defaultForm = function () {
  591. return {
  592. id: null,
  593. code: '',
  594. name: '',
  595. controlId: '',
  596. type: 1,
  597. workCenterId: '',
  598. workCenterName: '',
  599. produceVersionId: '',
  600. timeUnit: '',
  601. factoriesId: '',
  602. factoriesName: '',
  603. processLabel: 1,
  604. feedNeedTurnover: '',
  605. reportNeedTurnover: '',
  606. reportNeedFeed: '',
  607. feedNeedEquipment: '',
  608. reportNeedEquipment: '',
  609. feedNeedMould: '',
  610. feedNeedBoat: '',
  611. feedNeedConsumableMaterial: '',
  612. feedNeedMateriel: '',
  613. feedNeedProduct: '',
  614. feedNeedSemiProduct: '',
  615. feedNeedJunkProduct: '',
  616. feedNeedReworkProduct: '',
  617. feedNeedAridRegion: '',
  618. feedNeedAuxiliaryEquipment: '',
  619. feedNeedMeasuringEquipment: '',
  620. feedNeedQuality: '',
  621. isReportProcessProduce: '',
  622. isPrenatalPreProduction: '',
  623. isFeedCheckProduction: '',
  624. isPostCheckProduction: '',
  625. isFinalCheckProduction: '',
  626. isFirstArticleDualInspection: '',
  627. needNCCode: '',
  628. isRelease: 0,
  629. sort: null,
  630. intervalTime: {
  631. nextShortPreTime: '', // 时间单位转换后的下一个短周期的时间,格式为YYYY-MM-DDTHH'
  632. nextStandardPreTime: '', // 时间单位转换后的下一个正式的周期的时间,格式为YYYY-MM-DD'
  633. tactics: 1, // 周期工艺描述,格式为JSON字符串或数组形式的对象形式的数据类
  634. thisShortBoatTime: '',
  635. thisShortPreTime: '',
  636. thisStandardBoatTime: '',
  637. thisStandardWaitTime: ''
  638. },
  639. workBeat: {
  640. beatProduceNum: '',
  641. beatProduceUnit: '',
  642. categoryNum: '',
  643. categoryUnit: '',
  644. beatTimes: '',
  645. otherTimes: '',
  646. preTimes: '',
  647. proTimes: '',
  648. restTimes: '',
  649. beatTimesUnit: ''
  650. }
  651. };
  652. };
  653. return {
  654. defaultForm,
  655. // 表单数据
  656. form: defaultForm(),
  657. timeType: [
  658. { code: 1, label: '分' },
  659. { code: 2, label: '时' }
  660. ],
  661. radioList: [
  662. {
  663. name: '是',
  664. value: 1
  665. },
  666. {
  667. name: '否',
  668. value: 0
  669. }
  670. ],
  671. timeType2: [
  672. { code: '1', label: '分' },
  673. { code: '2', label: '时' }
  674. ],
  675. tacticsType: [
  676. { code: 1, label: '标准时间' },
  677. { code: 2, label: '最短时间' }
  678. ],
  679. // 表单验证规则
  680. rules: {
  681. name: [
  682. { required: true, message: '请输入工序名称', trigger: 'blur' }
  683. ],
  684. code: [{ required: true, trigger: 'change', message: '工序编码' }],
  685. controlId: [
  686. { required: true, message: '请选择控制码', trigger: 'blur' }
  687. ],
  688. workCenterName: [
  689. { required: true, message: '请选择工作中心', trigger: 'change' }
  690. ],
  691. 'workBeat.beatTimesUnit': [
  692. { required: true, message: '请选择时间单位', trigger: 'change' }
  693. ],
  694. timeUnit: [
  695. { required: true, message: '请选择间隔时间单位', trigger: 'change' }
  696. ]
  697. },
  698. // 提交状态
  699. loading: false,
  700. // 是否是修改
  701. isUpdate: false,
  702. chooseItem: null,
  703. processLabeList: [
  704. { id: 1, name: '自制' },
  705. { id: 2, name: '委外' },
  706. { id: 3, name: '请托' }
  707. ]
  708. };
  709. },
  710. computed: {
  711. totalTime() {
  712. const workBeat = this.form.workBeat || {};
  713. let to =
  714. (-workBeat.restTimes +
  715. -workBeat.preTimes +
  716. -workBeat.proTimes +
  717. -workBeat.otherTimes) *
  718. -1;
  719. return to;
  720. },
  721. // 是否开启响应式布局
  722. styleResponsive() {
  723. return this.$store.state.theme.styleResponsive;
  724. },
  725. clientEnvironmentId() {
  726. return this.$store.state.user.info.clientEnvironmentId;
  727. },
  728. showBaseProcessConfig() {
  729. return this.clientEnvironmentId != 9;
  730. }
  731. },
  732. methods: {
  733. async getVersionList() {
  734. const res = await pageList({
  735. pageNum: 1,
  736. size: 100
  737. });
  738. this.versionList = res.list;
  739. },
  740. chooseWorkCenter() {
  741. if (this.detail) {
  742. return;
  743. }
  744. this.$refs.centerRefs.open(this.form);
  745. },
  746. determineChoose(row) {
  747. this.$set(this.form, 'factoriesId', row.factoryId);
  748. this.$set(this.form, 'factoriesName', row.factoryName);
  749. this.$set(this.form, 'workCenterName', row.name);
  750. this.$set(this.form, 'workCenterId', row.id);
  751. },
  752. /* 保存编辑 */
  753. save() {
  754. this.$refs.form.validate((valid) => {
  755. if (!valid) {
  756. return false;
  757. }
  758. if (!this.isUpdate) {
  759. delete this.form.id;
  760. }
  761. this.form.workBeat.beatTimes = this.totalTime;
  762. this.loading = true;
  763. producetask
  764. .save(this.form)
  765. .then((msg) => {
  766. this.loading = false;
  767. this.$message.success(
  768. (this.isUpdate ? '修改' : '新建') + msg.message
  769. );
  770. this.updateVisible(false);
  771. this.$emit('done', msg.data);
  772. })
  773. .catch((e) => {
  774. this.loading = false;
  775. // this.$message.error(e.message);
  776. });
  777. });
  778. },
  779. /* 更新visible */
  780. updateVisible(value) {
  781. this.form = { ...this.defaultForm() };
  782. this.$emit('update:visible', value);
  783. }
  784. },
  785. watch: {
  786. async visible(visible) {
  787. if (visible) {
  788. this.getVersionList();
  789. console.log(this.form, 'this.form');
  790. if (this.data) {
  791. const res = await producetask.getById(this.data.id);
  792. const defaultData = this.defaultForm();
  793. this.$util.assignObject(this.form, {
  794. ...res,
  795. intervalTime: {
  796. ...defaultData.intervalTime,
  797. ...((res && res.intervalTime) || {})
  798. },
  799. workBeat: {
  800. ...defaultData.workBeat,
  801. ...((res && res.workBeat) || {})
  802. }
  803. });
  804. this.isUpdate = true;
  805. } else {
  806. this.form = { ...this.defaultForm() };
  807. this.isUpdate = false;
  808. }
  809. } else {
  810. this.$refs.form.clearValidate();
  811. this.form = { ...this.defaultForm() };
  812. }
  813. }
  814. }
  815. };
  816. </script>