details.vue 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. <template>
  2. <div class="ele-body">
  3. <el-card shadow="never">
  4. <div class="back-btn">
  5. <el-button type="plain" @click="goBack" > 返回 </el-button>
  6. </div>
  7. <el-form label-width="110px">
  8. <div class="basic-details-title">
  9. <span class="border-span">基本信息</span>
  10. </div>
  11. <el-row>
  12. <el-col :span="8">
  13. <el-form-item label="版本号">
  14. <span> {{infoData.code}} </span>
  15. </el-form-item>
  16. </el-col>
  17. <el-col :span="8">
  18. <el-form-item label="版本名称">
  19. <span> {{infoData.name}} </span>
  20. </el-form-item>
  21. </el-col>
  22. <el-col :span="8">
  23. <el-form-item label="所属工厂">
  24. <span> {{infoData.factoryName}} </span>
  25. </el-form-item>
  26. </el-col>
  27. <el-col :span="8">
  28. <el-form-item label="产品编码">
  29. <span> {{infoData.categoryCode}} </span>
  30. </el-form-item>
  31. </el-col>
  32. <el-col :span="8">
  33. <el-form-item label="产品名称">
  34. <span> {{infoData.categoryName}} </span>
  35. </el-form-item>
  36. </el-col>
  37. </el-row>
  38. <div class="basic-details-title">
  39. <span class="border-span">关联生产信息</span>
  40. </div>
  41. <el-row>
  42. <el-col :span="8">
  43. <el-form-item label="工艺路线编码">
  44. <span> {{infoData.routingCode}} </span>
  45. </el-form-item>
  46. </el-col>
  47. <el-col :span="8">
  48. <el-form-item label="工艺路线名称">
  49. <span> {{infoData.routingName}} </span>
  50. </el-form-item>
  51. </el-col>
  52. <el-col :span="8">
  53. <el-form-item label="工艺路线版本">
  54. <span> {{infoData.routingVersion}} </span>
  55. </el-form-item>
  56. </el-col>
  57. <el-col :span="8">
  58. <el-form-item label="产品BOM编码">
  59. <span> {{infoData.bomCode}} </span>
  60. </el-form-item>
  61. </el-col>
  62. <el-col :span="8">
  63. <el-form-item label="产品BOM名称">
  64. <span> {{infoData.bomName}} </span>
  65. </el-form-item>
  66. </el-col>
  67. <el-col :span="8">
  68. <el-form-item label="产品BOM版本">
  69. <span> {{infoData.bomVersion}} </span>
  70. </el-form-item>
  71. </el-col>
  72. </el-row>
  73. <ele-pro-table
  74. :columns="columns"
  75. :datasource="tableData"
  76. :need-page="false"
  77. >
  78. <template v-slot:action="{ row }">
  79. <el-link
  80. type="primary"
  81. :underline="false"
  82. icon="el-icon-edit"
  83. @click="allocateMaterials(row)"
  84. >
  85. 分配物料
  86. </el-link>
  87. </template>
  88. </ele-pro-table>
  89. </el-form>
  90. </el-card>
  91. <linkMaterialDialog ref="linkMaterialDialogRef" @success="success" />
  92. </div>
  93. </template>
  94. <script>
  95. import dictMixins from '@/mixins/dictMixins';
  96. import { versionDetail , getProcessByRoute } from '@/api/technology/version/version.js';
  97. import linkMaterialDialog from './components/link-material-dialog.vue';
  98. export default {
  99. mixins: [dictMixins],
  100. components: { linkMaterialDialog },
  101. data () {
  102. return {
  103. infoData:{},
  104. tableData:[],
  105. // 表格列配置
  106. columns: [
  107. {
  108. prop: 'code',
  109. label: '工序编号',
  110. showOverflowTooltip: true,
  111. align: 'center',
  112. },
  113. {
  114. prop: 'name',
  115. label: '工序名称',
  116. showOverflowTooltip: true,
  117. align: 'center',
  118. },
  119. {
  120. prop: 'controlName',
  121. label: '工序控制码',
  122. showOverflowTooltip: true,
  123. align: 'center'
  124. },
  125. {
  126. prop: 'workCenterName',
  127. label: '工作中心',
  128. showOverflowTooltip: true,
  129. align: 'center'
  130. },
  131. {
  132. columnKey: 'action',
  133. label: '操作',
  134. width: 200,
  135. align: 'center',
  136. resizable: false,
  137. slot: 'action',
  138. }
  139. ],
  140. }
  141. },
  142. async created () {
  143. this.getInfo()
  144. },
  145. methods: {
  146. async getInfo () {
  147. const data = await versionDetail(this.$route.query.id)
  148. this.infoData = data
  149. if(data.routingId){
  150. this.getProcessList()
  151. }
  152. },
  153. getProcessList(){
  154. let params = {
  155. isDetail: false,
  156. pageNum: 1,
  157. routingId: this.infoData.routingId,
  158. size: -1
  159. }
  160. getProcessByRoute(params).then(res=>{
  161. this.tableData = res.list
  162. })
  163. },
  164. success () {
  165. this.getProcessList()
  166. },
  167. // 点击分配物料
  168. allocateMaterials(row){
  169. row.bomId = this.infoData.bomId
  170. row.produceVersionId = this.infoData.id
  171. this.$refs.linkMaterialDialogRef.open(row);
  172. },
  173. goBack(){
  174. this.$router.go(-1)
  175. }
  176. }
  177. }
  178. </script>
  179. <style lang="scss" scoped>
  180. .back-btn{
  181. width:100%;
  182. display: flex;
  183. align-items: center;
  184. justify-content:flex-end;
  185. }
  186. .basic-details-title {
  187. margin-bottom: 12px;
  188. margin-top: 10px;
  189. border-bottom: 1px solid #1890ff;
  190. padding-bottom: 8px;
  191. display: flex;
  192. justify-content: space-between;
  193. }
  194. .basic-details-title .border-span {
  195. height: 18px;
  196. font-size: 16px;
  197. border-left: 4px solid #1890ff;
  198. padding-left: 8px;
  199. font-weight: 500;
  200. }
  201. </style>