damage.vue 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. <!-- 报损记录 -->
  2. <template>
  3. <div>
  4. <template v-if="!detailVisible">
  5. <el-form :inline="true" :model="dataForm" @keyup.enter.native="queryPage()">
  6. <el-form-item label="产品名称">
  7. <el-input v-model="dataForm.name" placeholder="产品名称" clearable/>
  8. </el-form-item>
  9. <el-form-item label="合同号">
  10. <el-input v-model="dataForm.orderCode" placeholder="合同号" clearable/>
  11. </el-form-item>
  12. <el-form-item label="产品编号">
  13. <el-input v-model="dataForm.prodCode" placeholder="产品编号" clearable/>
  14. </el-form-item>
  15. <el-form-item>
  16. <el-button @click="queryPage()">查询</el-button>
  17. </el-form-item>
  18. </el-form>
  19. <el-table
  20. :data="dataList"
  21. border
  22. v-loading="dataListLoading"
  23. style="width: 100%;">
  24. <el-table-column
  25. label="序号"
  26. type="index"
  27. width="50"
  28. align="center">
  29. </el-table-column>
  30. <el-table-column
  31. prop="productName"
  32. header-align="center"
  33. align="center"
  34. width="160"
  35. :show-overflow-tooltip="true"
  36. label="产品名称">
  37. </el-table-column>
  38. <el-table-column
  39. prop="prodCode"
  40. header-align="center"
  41. align="center"
  42. width="160"
  43. :show-overflow-tooltip="true"
  44. label="产品编号">
  45. </el-table-column>
  46. <el-table-column
  47. prop="orderCode"
  48. header-align="center"
  49. align="center"
  50. width="160"
  51. :show-overflow-tooltip="true"
  52. label="合同号">
  53. </el-table-column>
  54. <el-table-column
  55. prop="techName"
  56. header-align="center"
  57. align="center"
  58. width="160"
  59. :show-overflow-tooltip="true"
  60. label="工艺名称">
  61. </el-table-column>
  62. <el-table-column
  63. prop="nodeName"
  64. header-align="center"
  65. align="center"
  66. width="160"
  67. :show-overflow-tooltip="true"
  68. label="报损工序">
  69. </el-table-column>
  70. <el-table-column
  71. prop="liableUserName"
  72. header-align="center"
  73. align="center"
  74. width="120"
  75. :show-overflow-tooltip="true"
  76. label="报损人">
  77. </el-table-column>
  78. <el-table-column
  79. prop="damageReason"
  80. header-align="center"
  81. align="center"
  82. width="120"
  83. :show-overflow-tooltip="true"
  84. label="损坏原因">
  85. </el-table-column>
  86. <el-table-column
  87. prop="damageType"
  88. header-align="center"
  89. align="center"
  90. :formatter="formatDamageType"
  91. label="损坏类型">
  92. </el-table-column>
  93. <el-table-column
  94. prop="createTime"
  95. header-align="center"
  96. align="center"
  97. min-width="160"
  98. label="报损时间">
  99. </el-table-column>
  100. <el-table-column
  101. prop="state"
  102. header-align="center"
  103. align="center"
  104. :formatter="formatState"
  105. min-width="120"
  106. label="状态">
  107. </el-table-column>
  108. <el-table-column
  109. fixed="right"
  110. header-align="center"
  111. align="center"
  112. width="140"
  113. label="操作">
  114. <template slot-scope="scope">
  115. <el-button v-if="isAuth('prod:damage:info')" type="text" size="small" @click="detailHandle(scope.row.recordId)">查看</el-button>
  116. <el-button v-if="isAuth('prod:damage:again') && Number(scope.row.state) !== 2" type="text" size="small" @click="reScheduleHandle(scope.row.recordId)">重新排产</el-button>
  117. </template>
  118. </el-table-column>
  119. </el-table>
  120. <el-pagination
  121. @size-change="sizeChangeHandle"
  122. @current-change="currentChangeHandle"
  123. :current-page="pageIndex"
  124. :page-sizes="[10, 20, 50, 100]"
  125. :page-size="pageSize"
  126. :total="totalPage"
  127. layout="total, sizes, prev, pager, next, jumper">
  128. </el-pagination>
  129. </template>
  130. <detail v-if="detailVisible" ref="detail" @onChose="onChose"/>
  131. </div>
  132. </template>
  133. <script>
  134. import Detail from './damage-details'
  135. import { getDamageList, reSchedule } from '@/api/production'
  136. export default {
  137. name: 'damage',
  138. components: {Detail},
  139. data () {
  140. return {
  141. detailVisible: false,
  142. dataForm: {},
  143. dataList: [],
  144. pageIndex: 1,
  145. pageSize: 10,
  146. totalPage: 0,
  147. dataListLoading: false,
  148. dataListSelections: []
  149. }
  150. },
  151. created () {
  152. this.getDataList()
  153. },
  154. methods: {
  155. onChose () {
  156. this.detailVisible = false
  157. },
  158. // 查询
  159. queryPage () {
  160. this.pageIndex = 1
  161. this.getDataList()
  162. },
  163. // 获取数据列表
  164. getDataList () {
  165. this.dataListLoading = true
  166. this.addOrUpdateVisible = false
  167. // 接口调用
  168. let params = {
  169. 'current': this.pageIndex,
  170. 'size': this.pageSize,
  171. 'productName': this.dataForm.name ? this.dataForm.name : null,
  172. 'orderCode': this.dataForm.orderCode ? this.dataForm.orderCode : null,
  173. 'prodCode': this.dataForm.prodCode ? this.dataForm.prodCode : null
  174. }
  175. getDamageList(params).then(({data}) => {
  176. if (data && data.code === '200') {
  177. this.dataList = data.data.records
  178. this.totalPage = Number(data.data.total)
  179. } else {
  180. this.dataList = []
  181. this.totalPage = 0
  182. }
  183. this.dataListLoading = false
  184. })
  185. },
  186. // 每页数
  187. sizeChangeHandle (val) {
  188. this.pageSize = val
  189. this.pageIndex = 1
  190. this.getDataList()
  191. },
  192. // 当前页
  193. currentChangeHandle (val) {
  194. this.pageIndex = val
  195. this.getDataList()
  196. },
  197. // 多选
  198. selectionChangeHandle (val) {
  199. this.dataListSelections = val
  200. },
  201. // 损坏类型
  202. formatDamageType (row) {
  203. if (!row.damageType) return ''
  204. if (Number(row.damageType) === 1) return '操作损坏'
  205. if (Number(row.damageType) === 2) return '检验损坏'
  206. return ''
  207. },
  208. // 详情
  209. detailHandle (id) {
  210. this.detailVisible = true
  211. this.$nextTick(() => {
  212. this.$refs.detail.init(id)
  213. })
  214. },
  215. // 状态
  216. formatState (row) {
  217. if (!row.state) return ''
  218. if (Number(row.state) === 1) return '未重新排产'
  219. if (Number(row.state) === 2) return '已重新排产'
  220. return ''
  221. },
  222. // 重新排产
  223. reScheduleHandle (id) {
  224. reSchedule(id).then(({data}) => {
  225. if (data && data.code === '200') {
  226. this.$message({
  227. message: '操作成功',
  228. type: 'success',
  229. duration: 1500,
  230. onClose: () => {
  231. this.getDataList()
  232. }
  233. })
  234. } else {
  235. this.$message.error(data.msg)
  236. }
  237. })
  238. }
  239. }
  240. }
  241. </script>
  242. <style scoped>
  243. </style>