You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

302 lines
8.1 KiB

  1. <template>
  2. <div class="mod-config">
  3. <el-form :inline="true" label-position="top">
  4. <el-form-item label="工厂编码">
  5. <el-input style="width: 120px;" v-model="queryHeaderData.site"></el-input>
  6. </el-form-item>
  7. <el-form-item label="接收单号">
  8. <el-input style="width: 120px;" v-model="queryHeaderData.receiptNo"></el-input>
  9. </el-form-item>
  10. <el-form-item label="物料编码">
  11. <el-input style="width: 120px;" v-model="queryHeaderData.partNo"></el-input>
  12. </el-form-item>
  13. <el-form-item label="批次号">
  14. <el-input style="width: 120px;" v-model="queryHeaderData.batchNo"></el-input>
  15. </el-form-item>
  16. <el-form-item label="供应商编码">
  17. <el-input style="width: 120px;" v-model="queryHeaderData.supplierId"></el-input>
  18. </el-form-item>
  19. <el-form-item label="开始日期">
  20. <el-date-picker
  21. v-model="queryHeaderData.startDate"
  22. type="date"
  23. placeholder="选择日期"
  24. style="width: 120px;">
  25. </el-date-picker>
  26. </el-form-item>
  27. <el-form-item label="结束日期">
  28. <el-date-picker
  29. v-model="queryHeaderData.endDate"
  30. type="date"
  31. placeholder="选择日期"
  32. style="width: 120px;">
  33. </el-date-picker>
  34. </el-form-item>
  35. <el-form-item style="margin-top: 20px;">
  36. <el-button @click="getDataList('Y')" type="primary">查询</el-button>
  37. <el-button @click="resetQuery">重置</el-button>
  38. <el-button @click="syncIfsRecords" type="success" :loading="syncLoading">同步IFS检验记录</el-button>
  39. </el-form-item>
  40. </el-form>
  41. <!-- 同步结果提示 -->
  42. <el-alert
  43. v-if="syncMessage"
  44. :title="syncMessage"
  45. :type="syncMessageType"
  46. :closable="true"
  47. @close="syncMessage = ''"
  48. style="margin-bottom: 20px;">
  49. </el-alert>
  50. <!-- 数据表格 -->
  51. <el-table
  52. :data="dataList"
  53. border
  54. v-loading="dataListLoading"
  55. @selection-change="selectionChangeHandle"
  56. style="width: 100%;">
  57. <el-table-column
  58. type="selection"
  59. header-align="center"
  60. align="center"
  61. width="50">
  62. </el-table-column>
  63. <el-table-column
  64. prop="site"
  65. header-align="center"
  66. align="center"
  67. label="工厂编码">
  68. </el-table-column>
  69. <el-table-column
  70. prop="receiptNo"
  71. header-align="center"
  72. align="center"
  73. label="接收单号">
  74. </el-table-column>
  75. <el-table-column
  76. prop="receiveDate"
  77. header-align="center"
  78. align="center"
  79. label="接收日期">
  80. </el-table-column>
  81. <el-table-column
  82. prop="partNo"
  83. header-align="center"
  84. align="center"
  85. label="物料编码">
  86. </el-table-column>
  87. <el-table-column
  88. prop="batchNo"
  89. header-align="center"
  90. align="center"
  91. label="批次号">
  92. </el-table-column>
  93. <el-table-column
  94. prop="qtyApproved"
  95. header-align="center"
  96. align="center"
  97. label="合格数量">
  98. </el-table-column>
  99. <el-table-column
  100. prop="inspectionTime"
  101. header-align="center"
  102. align="center"
  103. label="检验时间">
  104. </el-table-column>
  105. <el-table-column
  106. prop="inspector"
  107. header-align="center"
  108. align="center"
  109. label="检验员">
  110. </el-table-column>
  111. <el-table-column
  112. prop="inspectionRemark"
  113. header-align="center"
  114. align="center"
  115. label="检验备注"
  116. show-overflow-tooltip>
  117. </el-table-column>
  118. <el-table-column
  119. prop="supplierId"
  120. header-align="center"
  121. align="center"
  122. label="供应商编码">
  123. </el-table-column>
  124. <el-table-column
  125. prop="receiver"
  126. header-align="center"
  127. align="center"
  128. label="接收人">
  129. </el-table-column>
  130. <el-table-column
  131. prop="warehouseId"
  132. header-align="center"
  133. align="center"
  134. label="仓库">
  135. </el-table-column>
  136. </el-table>
  137. <!-- 分页 -->
  138. <el-pagination
  139. @size-change="sizeChangeHandle"
  140. @current-change="currentChangeHandle"
  141. :current-page="pageIndex"
  142. :page-sizes="[10, 20, 50, 100]"
  143. :page-size="pageSize"
  144. :total="totalPage"
  145. layout="total, sizes, prev, pager, next, jumper">
  146. </el-pagination>
  147. <!-- 同步确认对话框 -->
  148. <el-dialog
  149. title="同步IFS检验记录"
  150. :visible.sync="syncDialogVisible"
  151. width="400px"
  152. :close-on-click-modal="false">
  153. <div>
  154. <p>确认要从IFS系统同步最新的检验结果吗</p>
  155. <p style="color: #909399; font-size: 12px;">此操作将更新本地的检验记录数据</p>
  156. </div>
  157. <span slot="footer" class="dialog-footer">
  158. <el-button @click="syncDialogVisible = false"> </el-button>
  159. <el-button type="primary" @click="confirmSync" :loading="syncLoading"> </el-button>
  160. </span>
  161. </el-dialog>
  162. </div>
  163. </template>
  164. <script>
  165. import { getInspectedReceiptList, syncIfsInspectionRecords } from '@/api/purchase/purchaseManage'
  166. export default {
  167. data () {
  168. return {
  169. favorite: false,
  170. dataList: [],
  171. pageIndex: 1,
  172. pageSize: 10,
  173. totalPage: 0,
  174. dataListLoading: false,
  175. dataListSelections: [],
  176. queryHeaderData: {
  177. site: '',
  178. receiptNo: '',
  179. partNo: '',
  180. batchNo: '',
  181. supplierId: '',
  182. startDate: '',
  183. endDate: ''
  184. },
  185. syncDialogVisible: false,
  186. syncLoading: false,
  187. syncMessage: '',
  188. syncMessageType: 'success'
  189. }
  190. },
  191. activated () {
  192. this.getDataList()
  193. },
  194. methods: {
  195. favoriteFunction () {
  196. this.favorite = !this.favorite
  197. },
  198. // 获取数据列表
  199. getDataList (flag) {
  200. if (flag === 'Y') {
  201. this.pageIndex = 1
  202. }
  203. this.dataListLoading = true
  204. const params = {
  205. page: this.pageIndex,
  206. size: this.pageSize,
  207. ...this.queryHeaderData
  208. }
  209. getInspectedReceiptList(params).then(({data}) => {
  210. if (data && data.code === 0) {
  211. this.dataList = data.page.list
  212. this.totalPage = data.page.totalCount
  213. } else {
  214. this.dataList = []
  215. this.totalPage = 0
  216. }
  217. this.dataListLoading = false
  218. })
  219. },
  220. // 每页数
  221. sizeChangeHandle (val) {
  222. this.pageSize = val
  223. this.pageIndex = 1
  224. this.getDataList()
  225. },
  226. // 当前页
  227. currentChangeHandle (val) {
  228. this.pageIndex = val
  229. this.getDataList()
  230. },
  231. // 多选
  232. selectionChangeHandle (val) {
  233. this.dataListSelections = val
  234. },
  235. // 同步IFS记录
  236. syncIfsRecords () {
  237. if (!this.queryHeaderData.site) {
  238. this.$message.warning('请先选择工厂编码')
  239. return
  240. }
  241. this.syncDialogVisible = true
  242. },
  243. // 确认同步
  244. confirmSync () {
  245. this.syncLoading = true
  246. this.syncDialogVisible = false
  247. const params = {
  248. site: this.queryHeaderData.site
  249. }
  250. syncIfsInspectionRecords(params).then(({data}) => {
  251. this.syncLoading = false
  252. if (data && data.code === 0) {
  253. this.syncMessage = data.msg || '同步成功'
  254. this.syncMessageType = 'success'
  255. this.getDataList() // 刷新列表
  256. } else {
  257. this.syncMessage = data.msg || '同步失败'
  258. this.syncMessageType = 'error'
  259. }
  260. // 5秒后自动隐藏消息
  261. setTimeout(() => {
  262. this.syncMessage = ''
  263. }, 5000)
  264. }).catch(() => {
  265. this.syncLoading = false
  266. this.syncMessage = '同步过程中发生错误'
  267. this.syncMessageType = 'error'
  268. setTimeout(() => {
  269. this.syncMessage = ''
  270. }, 5000)
  271. })
  272. },
  273. // 重置查询
  274. resetQuery () {
  275. this.queryHeaderData = {
  276. site: '',
  277. receiptNo: '',
  278. partNo: '',
  279. batchNo: '',
  280. supplierId: '',
  281. startDate: '',
  282. endDate: ''
  283. }
  284. this.getDataList('Y')
  285. }
  286. }
  287. }
  288. </script>
  289. <style scoped>
  290. </style>