taskDialog.vue 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. <template>
  2. <ele-modal
  3. width="80%"
  4. :visible="visible"
  5. append-to-body
  6. custom-class="ele-dialog-form"
  7. :title="title"
  8. :close-on-click-modal="false"
  9. :before-close="handleBeforeClose"
  10. maxable
  11. >
  12. <header-title title="基本信息"></header-title>
  13. <el-form
  14. :model="addForm"
  15. :rules="formRules"
  16. ref="ruleFormRef"
  17. label-width="120px"
  18. v-loading="loading"
  19. >
  20. <el-row>
  21. <el-col :span="8">
  22. <el-form-item label="类型" required prop="itemType">
  23. <DictSelection
  24. dictName="记录规则事项类型"
  25. clearable
  26. v-model="addForm.itemType"
  27. disabled
  28. >
  29. </DictSelection>
  30. </el-form-item>
  31. </el-col>
  32. <el-col :span="8">
  33. <el-form-item label="执行方式" required prop="executeMethod">
  34. <DictSelection
  35. dictName="记录规则执行方式"
  36. clearable
  37. v-model="addForm.executeMethod"
  38. disabled
  39. >
  40. </DictSelection>
  41. </el-form-item>
  42. </el-col>
  43. <el-col :span="8">
  44. <el-form-item label="关联任务">
  45. <el-input
  46. v-model="addForm.itemTaskName"
  47. placeholder="请输入任务名称"
  48. disabled
  49. ></el-input>
  50. </el-form-item>
  51. </el-col>
  52. </el-row>
  53. </el-form>
  54. <!-- 底部按钮 -->
  55. <template #footer>
  56. <div class="modal-footer">
  57. <el-button
  58. v-if="type != 'detail'"
  59. :loading="butLoading"
  60. type="primary"
  61. @click="submit('submit')"
  62. :disabled="productionInfo && productionInfo.executeStatus == 2"
  63. >
  64. 一键报工
  65. </el-button>
  66. <el-button v-if="productionInfo" @click="handleBeforeClose">
  67. 关闭
  68. </el-button>
  69. </div>
  70. </template>
  71. </ele-modal>
  72. </template>
  73. <script>
  74. import DictSelection from '@/components/Dict/DictSelection.vue';
  75. import SelectUser from '@/components/select/SelectUser/index.vue';
  76. import { saveRuleRecord } from '@/api/producetaskrulerecord/index.js';
  77. export default {
  78. components: { SelectUser },
  79. emits: ['reload'],
  80. props: {
  81. isTempRecord: {
  82. type: Number,
  83. default: 0
  84. }
  85. },
  86. data() {
  87. const formDate = {
  88. id: null,
  89. workshopArea: '',
  90. checkFinishTime: '',
  91. checkValidity: null,
  92. checkValidityUnit: '',
  93. conclusion: null,
  94. isTempRecord: this.isTempRecord,
  95. details: [],
  96. planList: [],
  97. deviceId: 0,
  98. deviceName: '',
  99. batchNo: '',
  100. brandNo: '',
  101. executeMethod: 0,
  102. formingNum: 0,
  103. itemType: 0,
  104. produceRoutingId: 0,
  105. produceRoutingName: '',
  106. produceTaskConfigId: 0,
  107. produceTaskId: 0,
  108. produceTaskName: '',
  109. productCode: '',
  110. productModel: '',
  111. productName: '',
  112. recordRulesClassify: null,
  113. ruleId: 0,
  114. ruleName: '',
  115. reportWorkType: 0,
  116. specification: '',
  117. workOrderCode: '',
  118. workOrderId: 0,
  119. itemTaskName: ''
  120. };
  121. return {
  122. visible: false,
  123. formDate,
  124. addForm: JSON.parse(JSON.stringify(formDate)),
  125. formRules: {
  126. checkFinishTime: [
  127. { required: true, message: '请选择检查完成时间', trigger: 'blur' },
  128. { required: true, message: '请选择检查完成时间', trigger: 'change' }
  129. ],
  130. conclusion: [
  131. { required: true, message: '请选择结论', trigger: 'blur' },
  132. { required: true, message: '请选择结论', trigger: 'change' }
  133. ],
  134. checkValidity: [
  135. { required: true, message: '请输入检查有效期', trigger: 'blur' },
  136. { required: true, message: '请输入检查有效期', trigger: 'change' }
  137. ],
  138. checkValidityUnit: [
  139. {
  140. required: true,
  141. message: '请选择检查有效期单位',
  142. trigger: 'blur'
  143. },
  144. {
  145. required: true,
  146. message: '请选择检查有效期单位',
  147. trigger: 'change'
  148. }
  149. ]
  150. },
  151. productionInfo: null,
  152. list: [],
  153. ruleInfo: null,
  154. showSelectUser: false,
  155. currentRow: null,
  156. butLoading: false,
  157. // 工艺路线
  158. workOrderInfo: null,
  159. // 加载中 loading
  160. loading: false,
  161. title: '任务确认',
  162. // 编辑 或者是 详情 edit detila
  163. type: 'edit'
  164. };
  165. },
  166. computed: {},
  167. methods: {
  168. openView(productionInfo, workOrderInfo) {
  169. this.type = 'detail';
  170. this.open(productionInfo, workOrderInfo);
  171. },
  172. open(productionInfo, workOrderInfo) {
  173. console.log(
  174. 'productionInfo, workOrderInfo',
  175. productionInfo,
  176. workOrderInfo
  177. );
  178. this.visible = true;
  179. this.productionInfo = productionInfo;
  180. this.workOrderInfo = workOrderInfo;
  181. this.addForm.batchNo = workOrderInfo.batchNo;
  182. this.addForm.executeMethod = productionInfo.executeMethod;
  183. this.addForm.formingNum = workOrderInfo.formingNum;
  184. this.addForm.itemType = productionInfo.itemType;
  185. this.addForm.produceRoutingId = workOrderInfo.produceRoutingId;
  186. this.addForm.produceRoutingName = workOrderInfo.produceRoutingName;
  187. this.addForm.produceTaskConfigId = productionInfo.produceTaskConfigId;
  188. this.addForm.produceTaskId = productionInfo.produceTaskId;
  189. this.addForm.produceTaskName = productionInfo.produceTaskName;
  190. this.addForm.productCode = workOrderInfo.productCode;
  191. this.addForm.productModel = workOrderInfo.model;
  192. this.addForm.productName = workOrderInfo.productName;
  193. this.addForm.reportWorkType = productionInfo.reportWorkType;
  194. this.addForm.specification = workOrderInfo.specification;
  195. this.addForm.workOrderCode = workOrderInfo.code;
  196. this.addForm.workOrderId = workOrderInfo.id;
  197. this.addForm.itemTaskName = productionInfo.itemTaskName;
  198. this.addForm.ruleId = productionInfo.ruleId;
  199. this.addForm.brandNo = productionInfo.brandNo;
  200. console.log('this.productionInfo', this.productionInfo);
  201. console.log('this.addForm', this.addForm);
  202. },
  203. handleBeforeClose() {
  204. this.type = 'edit';
  205. this.addForm = JSON.parse(JSON.stringify(this.formDate));
  206. console.log('this.$refs.ruleFormRef', this.addForm);
  207. this.$refs.ruleFormRef?.clearValidate();
  208. this.$nextTick(() => {
  209. this.visible = false;
  210. });
  211. },
  212. // 提交
  213. submit(type) {
  214. console.log('this.addForm', this.addForm);
  215. // 验证表单
  216. this.$refs.ruleFormRef.validate(async (valid) => {
  217. if (!valid) {
  218. return;
  219. }
  220. // 提交
  221. this.butLoading = true;
  222. try {
  223. await saveRuleRecord(this.addForm);
  224. this.$message.success('报工成功!');
  225. this.butLoading = false;
  226. // 返回
  227. this.$emit('reload');
  228. this.handleBeforeClose();
  229. } catch (error) {
  230. this.butLoading = false;
  231. }
  232. });
  233. }
  234. }
  235. };
  236. </script>
  237. <style scoped lang="scss">
  238. .modal-body {
  239. padding: 16px;
  240. min-height: 100px;
  241. }
  242. .modal-footer {
  243. display: flex;
  244. align-items: center;
  245. gap: 10px;
  246. justify-content: flex-end;
  247. }
  248. .el-form-item .el-form-item {
  249. margin-bottom: -5px;
  250. }
  251. </style>