赫艾前端
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.

258 lines
8.0 KiB

10 months ago
  1. <script>
  2. import {bagOpening, queryBag} from "../../../api/production/bagPrint";
  3. import {packagePrintDataList} from "../../../api/production/generateReport";
  4. import {printPackageLabelNoPreview} from "../print/print_package_label-NOOREVIEW";
  5. export default {
  6. name:'BagPrint',
  7. data(){
  8. return{
  9. queryParams:{
  10. bagLabel:'',
  11. seqNo:'',
  12. itemNo:'',
  13. partNo:'',
  14. partDesc:'',
  15. status:'',
  16. parentId:undefined,
  17. no:1,
  18. size:50
  19. },
  20. total:0,
  21. dataList:[],
  22. queryLoading:false,
  23. bagOpeningVisible:false,
  24. bagOpeningLoading:false,
  25. currentRow:{},
  26. rules:{
  27. unBagQty:[
  28. {required:true,message:'请输入拆袋数量',trigger:"blur"}
  29. ]
  30. }
  31. }
  32. },
  33. methods:{
  34. packagePrintDataList(row){
  35. packagePrintDataList(row).then(({data}) => {
  36. if (data && data.code === 0) {
  37. printPackageLabelNoPreview(data.rows);
  38. } else {
  39. this.$message.warning(data.msg)
  40. }
  41. }).catch((error) => {
  42. this.$message.error(error)
  43. })
  44. this.$refs.bagLabel.focus();
  45. },
  46. queryBag(){
  47. this.queryLoading = true
  48. queryBag(this.queryParams).then(({data}) => {
  49. if (data && data.code === 0) {
  50. this.dataList = data.rows;
  51. this.total = data.total;
  52. }else {
  53. this.$message.warning(data.msg);
  54. }
  55. this.queryLoading = false
  56. }).catch((err) => {
  57. this.$message.error(err);
  58. this.queryLoading = false
  59. })
  60. },
  61. handleSizeChange(val){
  62. this.queryParams.size = val;
  63. this.queryBag()
  64. },
  65. handleCurrentChange(val){
  66. this.queryParams.no = val;
  67. this.queryBag()
  68. },
  69. scanLabelEnter(){
  70. let arr = this.queryParams.bagLabel.split(";");
  71. if (arr.length < 5){//site;partNo;qty;seqNo;printId
  72. if (!arr[3]){
  73. this.$message.warning("标签jobNo为空")
  74. return;
  75. }
  76. if (!arr[2] || arr[2] === '0'){
  77. this.$message.warning("数量不存在或是0")
  78. return;
  79. }
  80. if (!arr[1]){
  81. this.$message.warning("产品编码为空")
  82. return;
  83. }
  84. if (!arr[0]){
  85. this.$message.warning("site编码为空")
  86. return;
  87. }
  88. this.$message.warning("标签格式错误")
  89. return
  90. }
  91. this.queryParams = {
  92. bagLabel:'',
  93. seqNo:arr[3],
  94. itemNo:arr[4],
  95. partNo:'',
  96. partDesc:'',
  97. status:'',
  98. parentId:undefined,
  99. no:1,
  100. size:this.queryParams.size
  101. }
  102. this.queryBag();
  103. },
  104. bagOpening(row){
  105. this.currentRow = {
  106. ...row,
  107. unBagQty:1,
  108. }
  109. this.bagOpeningVisible = true;
  110. },
  111. handleBagOpening(){
  112. this.$refs.bagFrom.validate((valid,obj) => {
  113. if (valid){
  114. bagOpening(this.currentRow).then(({data})=>{
  115. if (data && data.code === 0) {
  116. this.$message.success(data.msg)
  117. this.queryParams.parentId = data.id
  118. this.queryBag();
  119. this.bagOpeningVisible = false;
  120. }else {
  121. this.$message.warning(data.msg)
  122. }
  123. }).catch((error) => {
  124. this.$message.error(error)
  125. })
  126. }else {
  127. this.$message.warning(obj['unBagQty'][0]['message'])
  128. }
  129. })
  130. },
  131. },
  132. watch:{
  133. queryLoading(newVal,oldVal){
  134. if (newVal) {
  135. setTimeout(()=>{
  136. this.queryLoading = false;
  137. this.$refs.bagLabel.focus();
  138. },30000)
  139. }else {
  140. this.queryParams.parentId = undefined
  141. this.$refs.bagLabel.focus();
  142. }
  143. },
  144. bagOpeningVisible(newVal,oldVal){
  145. if (newVal){
  146. this.$refs.bagFrom.clearValidate('unBagQty')
  147. }
  148. }
  149. },
  150. created() {
  151. },
  152. mounted() {
  153. this.queryBag();
  154. }
  155. }
  156. </script>
  157. <template>
  158. <div>
  159. <el-form :model="queryParams" label-position="top" style="max-width: 1200px">
  160. <el-row :gutter="5">
  161. <el-col :span="3">
  162. <el-form-item label="袋装标签">
  163. <el-input ref="bagLabel" v-model="queryParams.bagLabel" clearable @keyup.enter.native="scanLabelEnter"></el-input>
  164. </el-form-item>
  165. </el-col>
  166. <el-col :span="3">
  167. <el-form-item label="产品编码">
  168. <el-input v-model="queryParams.partNo" clearable></el-input>
  169. </el-form-item>
  170. </el-col>
  171. <el-col :span="3">
  172. <el-form-item label="产品描述">
  173. <el-input v-model="queryParams.partDesc" clearable></el-input>
  174. </el-form-item>
  175. </el-col>
  176. <el-col :span="2">
  177. <el-form-item label="JOB NO.">
  178. <el-input v-model="queryParams.seqNo" clearable></el-input>
  179. </el-form-item>
  180. </el-col>
  181. <el-col :span="2">
  182. <el-form-item label="序号">
  183. <el-input v-model="queryParams.itemNo" clearable></el-input>
  184. </el-form-item>
  185. </el-col>
  186. <el-col :span="3">
  187. <el-form-item label="状态">
  188. <el-select v-model="queryParams.status">
  189. <el-option value="" label="全部"></el-option>
  190. <el-option value="已入库" label="已入库"></el-option>
  191. <el-option value="未入库" label="未入库"></el-option>
  192. <el-option value="已拆袋" label="已拆袋"></el-option>
  193. </el-select>
  194. </el-form-item>
  195. </el-col>
  196. <el-col :span="6">
  197. <el-form-item label=" ">
  198. <el-button type="primary" @click="queryBag">查询</el-button>
  199. </el-form-item>
  200. </el-col>
  201. </el-row>
  202. </el-form>
  203. <el-table :data="dataList" border v-loading="queryLoading" height="calc(100vh - 190px)">
  204. <el-table-column label="操作" width="100" align="center">
  205. <template slot-scope="scope">
  206. <a v-if="scope.row.status === '已入库'" @click="bagOpening(scope.row)">拆袋</a>
  207. <a @click="packagePrintDataList(scope.row)">补打</a>
  208. </template>
  209. </el-table-column>
  210. <el-table-column label="产品编码" prop="partNo" align="left" header-align="center" min-width="100"/>
  211. <el-table-column label="产品描述" prop="partDesc" align="left" header-align="center" min-width="160"/>
  212. <el-table-column label="JOB NO." prop="seqNo" align="left" header-align="center" min-width="80"/>
  213. <el-table-column label="序号" prop="itemNo" align="left" header-align="center" min-width="60"/>
  214. <el-table-column label="数量" prop="printQty" align="right" header-align="center" min-width="80"/>
  215. <el-table-column label="状态" prop="status" align="center" header-align="center" min-width="80"/>
  216. <el-table-column label="是否发货扫描" prop="status" align="center" header-align="center" width="100">
  217. <template slot-scope="scope">
  218. {{scope.row.printId > 0?'Y':'N'}}
  219. </template>
  220. </el-table-column>
  221. <el-table-column label="创建时间" prop="createTime" align="center" header-align="center" min-width="120"/>
  222. </el-table>
  223. <el-pagination
  224. @size-change="handleSizeChange"
  225. @current-change="handleCurrentChange"
  226. :current-page.sync="queryParams.no"
  227. :page-sizes="[50,100, 200, 300, 400]"
  228. :page-size="queryParams.size"
  229. layout="total,sizes, prev, pager, next"
  230. :total="total">
  231. </el-pagination>
  232. <el-dialog :visible.sync="bagOpeningVisible" v-drag top="20vh" title="拆袋" width="200px" :close-on-click-modal="false">
  233. <el-form :model="currentRow" label-position="top" :rules="rules" ref="bagFrom">
  234. <el-row>
  235. <el-col :span="24">
  236. <el-form-item label="拆袋数量" prop="unBagQty" :show-message="false">
  237. <el-input-number v-model="currentRow.unBagQty" :controls="false" :step="0" :min="0"></el-input-number>
  238. </el-form-item>
  239. </el-col>
  240. </el-row>
  241. </el-form>
  242. <span slot="footer" class="dialog-footer" style="text-align: center">
  243. <el-button type="primary" :loading="bagOpeningLoading" @click="handleBagOpening">确定</el-button>
  244. <el-button @click="bagOpeningVisible = false">取消</el-button>
  245. </span>
  246. </el-dialog>
  247. </div>
  248. </template>
  249. <style scoped>
  250. </style>