index.vue 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. <template>
  2. <div>
  3. <el-tabs v-model="activeName" type="border-card" @tab-click="tabsChange">
  4. <el-tab-pane lazy label="工艺参数" name="工艺参数">
  5. <ele-pro-table
  6. ref="table"
  7. :datasource="newBomObj.produceList"
  8. :immediate="true"
  9. :need-page="false"
  10. :columns="produceColumns"
  11. height="260px"
  12. >
  13. </ele-pro-table>
  14. </el-tab-pane>
  15. <el-tab-pane lazy label="质检参数" name="质检参数"></el-tab-pane>
  16. <el-tab-pane lazy label="生产节拍" name="生产节拍">
  17. <beatInfo :beatParam="newBomObj.beatParam"></beatInfo>
  18. </el-tab-pane>
  19. <el-tab-pane lazy label="标准工时" name="标准工时">
  20. <normalHoursInfo :normalHours="newBomObj.normalHours"></normalHoursInfo>
  21. </el-tab-pane>
  22. <el-tab-pane lazy label="材料定额" name="材料定额">
  23. <ele-pro-table
  24. ref="materialQuotaTable"
  25. :columns="materialQuotaColumns"
  26. :datasource="newBomObj.materialQuota"
  27. :need-page="false"
  28. :immediate="true"
  29. height="260px"
  30. >
  31. <template v-slot:toolbar>
  32. 基本数量:
  33. <span style="color: rgb(21, 122, 44)">
  34. {{ newBomObj.baseCount }} {{ newBomObj.baseCountUnit }}</span
  35. >
  36. </template>
  37. <template v-slot:isReworkBom="{ row }">
  38. {{ row.isReworkBom ? '是' : '否' }}
  39. </template>
  40. <template v-slot:bomArtFiles="{ row }">
  41. <el-button
  42. size="mini"
  43. type="primary"
  44. @click="downloadFile(row.bomArtFiles)"
  45. >下载</el-button
  46. >
  47. </template>
  48. </ele-pro-table>
  49. </el-tab-pane>
  50. <el-tab-pane lazy label="制造资源" name="制造资源">
  51. <ele-pro-table
  52. ref="resourceTable"
  53. :columns="materialQuotaColumns"
  54. :datasource="newBomObj.resource"
  55. :need-page="false"
  56. :immediate="true"
  57. height="260px"
  58. >
  59. <template v-slot:isReworkBom="{ row }">
  60. {{ row.isReworkBom ? '是' : '否' }}
  61. </template>
  62. <template v-slot:bomArtFiles="{ row }">
  63. <el-button
  64. size="mini"
  65. type="primary"
  66. @click="downloadFile(row.bomArtFiles)"
  67. >下载</el-button
  68. >
  69. </template>
  70. </ele-pro-table>
  71. </el-tab-pane>
  72. <el-tab-pane lazy label="替代料" name="替代料">
  73. <ele-pro-table
  74. ref="replaceMaterialTable"
  75. :columns="materialQuotaColumns"
  76. :datasource="newBomObj.replaceMaterial"
  77. :need-page="false"
  78. :immediate="true"
  79. height="260px"
  80. >
  81. <template v-slot:toolbar>
  82. 基本数量:
  83. <span style="color: rgb(21, 122, 44)">
  84. {{ newBomObj.baseCount2 }} {{ newBomObj.baseCountUnit2 }}</span
  85. >
  86. </template>
  87. <template v-slot:isReworkBom="{ row }">
  88. {{ row.isReworkBom ? '是' : '否' }}
  89. </template>
  90. <template v-slot:bomArtFiles="{ row }">
  91. <el-button
  92. size="mini"
  93. type="primary"
  94. @click="downloadFile(row.bomArtFiles)"
  95. >下载</el-button
  96. >
  97. </template>
  98. </ele-pro-table>
  99. </el-tab-pane>
  100. <el-tab-pane lazy label="工种" name="工种">
  101. <ele-pro-table
  102. ref="aptitudeParamTable"
  103. :columns="fileParamColumns"
  104. :datasource="newBomObj.aptitudeParam"
  105. row-key="id"
  106. height="260px"
  107. >
  108. </ele-pro-table>
  109. </el-tab-pane>
  110. <el-tab-pane lazy label="工艺文件" name="工艺文件">
  111. {{ newBomObj.fileParam }}
  112. </el-tab-pane>
  113. <el-tab-pane lazy label="标准产出" name="标准产出">
  114. {{ newBomObj.standardOutput }}
  115. </el-tab-pane>
  116. </el-tabs>
  117. </div>
  118. </template>
  119. <script>
  120. import {
  121. produceColumns,
  122. materialQuotaColumns,
  123. fileParamColumns
  124. } from './columnsTab.js';
  125. import beatInfo from './components/beatInfo.vue';
  126. import normalHoursInfo from './components/normalHoursInfo.vue';
  127. import { getFile } from '@/api/system/file';
  128. export default {
  129. components: {
  130. beatInfo,
  131. normalHoursInfo
  132. },
  133. props: {
  134. BomObj: {
  135. type: Object
  136. }
  137. },
  138. watch: {
  139. BomObj: {
  140. handler(val) {
  141. this.newBomObj = JSON.parse(JSON.stringify(val));
  142. this.$forceUpdate();
  143. },
  144. immediate: true,
  145. deep: true
  146. }
  147. },
  148. data() {
  149. return {
  150. activeName: '工艺参数',
  151. newBomObj: {},
  152. produceColumns,
  153. materialQuotaColumns,
  154. fileParamColumns
  155. };
  156. },
  157. methods: {
  158. tabsChange(tab) {
  159. this.activeName = tab.name;
  160. },
  161. downloadFile(url) {
  162. getFile({ objectName: url }, '附件');
  163. }
  164. }
  165. };
  166. </script>
  167. <style lang="scss">
  168. .el-tabs__content {
  169. padding: 4px !important;
  170. }
  171. </style>