recordRules.vue 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. <template>
  2. <div>
  3. <ele-pro-table
  4. :columns="columns"
  5. :datasource="datasource"
  6. cacheKey="mes-recordRules-25113-031018"
  7. ref="tableRef"
  8. >
  9. <template v-slot:toolbar>
  10. <el-select
  11. v-model="reportWorkType"
  12. placeholder="请选择"
  13. @change="reload"
  14. >
  15. <el-option
  16. v-for="item in reportWorkTypeOptions"
  17. :key="item.value"
  18. :label="item.label"
  19. :value="item.value"
  20. ></el-option>
  21. </el-select>
  22. </template>
  23. <template v-slot:action="{ row }">
  24. <el-link
  25. type="primary"
  26. :underline="false"
  27. icon="el-icon-view"
  28. @click="openDetils(row)"
  29. >
  30. 详情
  31. </el-link>
  32. </template>
  33. </ele-pro-table>
  34. <programRulesDialog
  35. ref="programRulesDialogRef"
  36. :dialogTitle="dialogTitle"
  37. @reload="reload"
  38. />
  39. <releaseRulesDialog ref="releaseRulesDialogRef" @reload="reload" />
  40. <taskDialog ref="taskDialogRef" @reload="reload" />
  41. </div>
  42. </template>
  43. <script>
  44. import tableColumnsMixin from '@/mixins/tableColumnsMixin';
  45. import dictMixins from '@/mixins/dictMixins';
  46. import {
  47. producetaskrulerecordPage,
  48. getProduceTaskInstanceId
  49. } from '@/api/producetaskrulerecord/index.js';
  50. import taskDialog from '@/views/produce/components/prenatalExamination/taskDialog.vue';
  51. import releaseRulesDialog from '@/views/produce/components/prenatalExamination/releaseRulesDialog.vue';
  52. import programRulesDialog from '@/views/produce/components/prenatalExamination/programRulesDialog.vue';
  53. export default {
  54. name: 'recordRules',
  55. components: {
  56. programRulesDialog,
  57. releaseRulesDialog,
  58. taskDialog
  59. },
  60. props: {
  61. produceTaskId: {
  62. type: String,
  63. required: true
  64. },
  65. // 工单信息
  66. workOrderInfo: {
  67. type: Object,
  68. required: true
  69. }
  70. },
  71. mixins: [tableColumnsMixin, dictMixins],
  72. data() {
  73. return {
  74. columns: [
  75. {
  76. columnKey: 'index',
  77. type: 'index',
  78. width: 45,
  79. align: 'center'
  80. },
  81. {
  82. prop: 'produceTaskName',
  83. label: '工序名称',
  84. align: 'center'
  85. },
  86. {
  87. prop: 'itemType',
  88. label: '类型',
  89. align: 'center',
  90. formatter: (row) => {
  91. return this.getDictValue('记录规则事项类型', row.itemType);
  92. }
  93. },
  94. {
  95. prop: 'executeMethod',
  96. label: '配置执行方式',
  97. align: 'center',
  98. formatter: (row) => {
  99. return this.getDictValue('记录规则执行方式', row.executeMethod);
  100. }
  101. },
  102. {
  103. prop: 'ruleName',
  104. label: '名称',
  105. align: 'center',
  106. formatter: (row) => {
  107. return row.ruleName || row.itemTaskName;
  108. }
  109. },
  110. {
  111. prop: 'executeStatus',
  112. label: '执行状态',
  113. align: 'center',
  114. formatter: (row) => {
  115. switch (row.executeStatus) {
  116. case 0:
  117. return '未报工';
  118. case 1:
  119. return '执行中';
  120. default:
  121. return '已报工';
  122. }
  123. }
  124. },
  125. {
  126. columnKey: 'action',
  127. label: '操作',
  128. width: 150,
  129. align: 'center',
  130. resizable: false,
  131. slot: 'action',
  132. showOverflowTooltip: true,
  133. fixed: 'right'
  134. }
  135. ],
  136. reportWorkType: 1,
  137. reportWorkTypeOptions: [
  138. { label: '产前准备', value: 1 },
  139. { label: '过程控制', value: 2 },
  140. { label: '产后检查', value: 3 }
  141. ],
  142. dialogTitle: ''
  143. };
  144. },
  145. watch: {
  146. produceTaskId(newVal) {
  147. this.reload();
  148. }
  149. },
  150. methods: {
  151. datasource({ page, limit, where }) {
  152. return this.getList(page, limit);
  153. },
  154. async getList(pageNum, pageSize) {
  155. const [data, produceTaskInstanceInfo] = await await Promise.all([
  156. producetaskrulerecordPage({
  157. workOrderCode: this.workOrderInfo.code,
  158. produceTaskId: this.produceTaskId,
  159. reportWorkType: this.reportWorkType,
  160. isTempRecord: 0,
  161. pageNum,
  162. pageSize
  163. }),
  164. getProduceTaskInstanceId(this.workOrderInfo.id, this.produceTaskId)
  165. ]);
  166. data.list = data.list.map((i) => {
  167. // 工序名称
  168. i.produceTaskName = produceTaskInstanceInfo.name;
  169. i.produceTaskInstanceId = produceTaskInstanceInfo.id;
  170. return i;
  171. });
  172. console.log('list', data.list);
  173. return data.list;
  174. },
  175. reload() {
  176. this.$refs.tableRef.reload();
  177. },
  178. openDetils(item) {
  179. console.log('this.workOrderInfo', this.workOrderInfo);
  180. console.log('item', item);
  181. if (item.itemType == 1) {
  182. // 设备保养计划相关逻辑
  183. this.dialogTitle = '设备保养计划';
  184. this.$refs.programRulesDialogRef.init(item, this.workOrderInfo);
  185. } else if (item.itemType == 2) {
  186. this.$refs.releaseRulesDialogRef.openView(item, this.workOrderInfo);
  187. } else {
  188. // 任务确认
  189. this.$refs.taskDialogRef.openView(item, this.workOrderInfo);
  190. }
  191. }
  192. }
  193. };
  194. </script>
  195. <style></style>