|
1
2
3
4
5
6
7
8
9
|
<template>
<j-modal
:title="title"
:width="width"
:visible="visible"
:confirmLoading="confirmLoading"
switchFullscreen
@ok="handleOk"
@cancel="handleCancel"
|
|
10
11
|
cancelText="关闭"
>
|
|
12
13
14
15
16
|
<a-spin :spinning="confirmLoading">
<a-form-model ref="form" :model="model" :rules="validatorRules">
<a-row>
<a-col :span="24">
<a-form-model-item label="物料编码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialCode">
|
|
17
|
<a-input disabled="disabled" v-model="model.materialCode" placeholder="请输入物料编码" style="width: 100%" />
|
|
18
19
20
21
|
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="物料名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialName">
|
|
22
|
<a-input disabled="disabled" v-model="model.materialName" placeholder="请输入物料名称" style="width: 100%" />
|
|
23
24
25
|
</a-form-model-item>
</a-col>
<a-col :span="24">
|
|
26
27
|
<a-form-model-item label="可出数量" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="qty">
<a-input disabled="disabled" v-model="model.qty" placeholder="请输入可出数量" style="width: 100%" />
|
|
28
29
30
31
|
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="出库数量" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="taskQty">
|
|
32
|
<a-input-number v-model="model.taskQty" placeholder="请输入出库数量" style="width: 100%" />
|
|
33
34
35
36
37
|
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
</a-spin>
|
|
38
39
40
41
42
43
|
<!-- table区域-begin -->
<div>
<a-table
ref="table"
rowKey="id"
size="middle"
|
|
44
45
46
|
bordered
class="j-table-force-nowrap"
:scroll="{x:true}"
|
|
47
48
|
:columns="columns"
:dataSource="dataSource"
|
|
49
|
:pagination="false"
|
|
50
51
|
:loading="loading">
|
|
52
53
|
<span slot="action" slot-scope="text, record">
<a-button @click="combine(record)" type="primary">配盘</a-button>
|
|
54
|
</span>
|
|
55
56
|
<span slot="inventoryStatus" slot-scope="inventoryStatus">
|
|
57
|
<a-tag :key="inventoryStatus" :color="getStatusColor(inventoryStatus)">
|
|
58
59
60
|
{{ solutionInvStatus(inventoryStatus) }}
</a-tag>
</span>
|
|
61
|
|
|
62
63
|
</a-table>
</div>
|
|
64
65
66
67
|
</j-modal>
</template>
<script>
|
|
68
69
70
|
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import { httpAction } from '@/api/manage'
import { validateDuplicateValue } from '@/utils/util'
|
|
71
|
import {searchMaterialByCode, getInventoryFromShipmentDetail, ajaxGetDictItems} from '@/api/api'
|
|
72
73
74
|
import { listShipmentByShipmentDetailId, combination } from '@/api/api'
import { filterObj } from '@/utils/util'
import { deleteAction, getAction, downFile, getFileAccessHttpUrl } from '@/api/manage'
|
|
75
|
|
|
76
|
export default {
|
|
77
|
name: 'ShipmentDetailCombineModal',
|
|
78
|
components: {
|
|
79
|
JeecgListMixin
|
|
80
81
82
83
84
85
86
87
88
89
|
},
props: {
mainId: {
type: String,
required: false,
default: ''
}
},
data() {
return {
|
|
90
|
title: '操作',
|
|
91
92
93
94
|
width: 1000,
/* 分页参数 */
ipagination: {
current: 1,
|
|
95
|
pageSize: 100,
|
|
96
97
|
pageSizeOptions: ['10', '20', '30'],
showTotal: (total, range) => {
|
|
98
|
return range[0] + '-' + range[1] + ' 共' + total + '条'
|
|
99
|
},
|
|
100
101
102
103
104
105
106
|
showQuickJumper: true,
showSizeChanger: true,
total: 0
},
/* 数据源 */
dataSource: [],
queryParam: {},
|
|
107
|
invStatus:[],
|
|
108
109
110
111
|
combineParam: {},
shipmentParam: {},
visible: false,
materialList: {},
|
肖超群
authored
|
112
|
shipmentDetail: {},
|
|
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
querySource: {},
/* 筛选参数 */
filters: {},
/* table加载状态 */
loading: false,
/* table选中keys*/
selectedRowKeys: [],
/* table选中records*/
selectionRows: [],
/* 查询折叠 */
toggleSearchStatus: false,
/* 高级查询条件生效状态 */
superQueryFlag: false,
/* 高级查询条件 */
superQueryParams: '',
/** 高级查询拼接方式 */
superQueryMatchType: 'and',
model: {},
labelCol: {
|
|
132
133
|
xs: { span: 24 },
sm: { span: 5 }
|
|
134
135
|
},
wrapperCol: {
|
|
136
137
|
xs: { span: 24 },
sm: { span: 16 }
|
|
138
139
140
141
142
|
},
// 表头
columns: [
{
title: '容器编码',
|
|
143
|
align: 'center',
|
|
144
|
dataIndex: 'containerCode'
|
|
145
|
},
|
|
146
147
|
{
title: '库位编码',
|
|
148
|
align: 'center',
|
|
149
|
dataIndex: 'locationCode'
|
|
150
|
},
|
|
151
152
|
{
title: '物料编码',
|
|
153
|
align: 'center',
|
|
154
|
dataIndex: 'materialCode'
|
|
155
|
},
|
|
156
157
|
{
title: '物料名称',
|
|
158
|
align: 'center',
|
|
159
160
161
162
|
dataIndex: 'materialName'
},
{
title: '库存数量',
|
|
163
|
align: 'center',
|
|
164
165
166
167
|
dataIndex: 'qty'
},
{
title: '锁定数量',
|
|
168
|
align: 'center',
|
|
169
170
171
172
|
dataIndex: 'taskQty'
},
{
title: '库存状态',
|
|
173
|
dataIndex: 'inventoryStatus',
|
|
174
|
align: 'center',
|
|
175
176
|
width: 96,
scopedSlots: {customRender: 'inventoryStatus'}
|
|
177
178
179
|
},
{
title: '批次',
|
|
180
|
align: 'center',
|
|
181
182
183
184
|
dataIndex: 'batch'
},
{
title: '创建人',
|
|
185
|
align: 'center',
|
|
186
|
dataIndex: 'createBy'
|
|
187
|
},
|
|
188
189
|
{
title: '创建日期',
|
|
190
|
align: 'center',
|
|
191
192
193
194
195
|
dataIndex: 'createTime'
},
{
title: '操作',
dataIndex: 'action',
|
|
196
197
|
align: 'center',
fixed: 'right',
|
|
198
|
width: 147,
|
|
199
|
scopedSlots: { customRender: 'action' }
|
|
200
|
}
|
|
201
202
203
204
|
],
confirmLoading: false,
validatorRules: {},
url: {
|
|
205
206
207
|
add: '/shipment/shipmentHeader/addShipmentDetail',
edit: '/shipment/shipmentHeader/editShipmentDetail',
list: '/shipment/shipmentCombination/getInventoryFromShipmentDetail'
|
|
208
|
}
|
|
209
210
211
|
}
},
created() {
|
|
212
|
//备份model原始值
|
|
213
214
|
this.modelDefault = JSON.parse(JSON.stringify(this.model))
this.searchMaterial()
|
|
215
|
this.loadFrom();
|
|
216
217
|
},
methods: {
|
|
218
219
220
221
222
223
224
|
loadFrom(){
ajaxGetDictItems('inventory_status').then((res) => {
if (res.success) {
this.invStatus = res.result
}
})
},
|
|
225
226
|
getSuperFieldList() {
let fieldList = []
|
|
227
|
fieldList.push({type:'string',value:'inventoryStatus',text:'库存状态',dictCode:'inventory_status'})
|
|
228
229
|
this.superFieldList = fieldList
},
|
|
230
|
add() {
|
|
231
232
|
this.edit(this.modelDefault)
this.model.inventoryStatus = 'good'
|
|
233
|
},
|
|
234
235
|
edit(record) {
// this.model = Object.assign({}, record);
|
|
236
237
|
this.shipmentParam = record
this.searchShipment()
|
|
238
239
|
},
close() {
|
|
240
241
242
|
this.$emit('close')
this.visible = false
this.$refs.form.clearValidate()
|
|
243
244
|
},
combine(record) {
|
|
245
246
247
248
249
250
|
const that = this
that.querySource = record
this.combineParam.shipmentDetailID = this.model.id
this.combineParam.inventoryDetailID = record.id
this.combineParam.shipQty = this.model.taskQty
combination(this.combineParam).then(res => {
|
|
251
252
|
if (res.success) {
// this.model = res.result;
|
|
253
254
|
this.$message.success(res.message)
this.searchShipment()
|
|
255
256
|
} else {
this.$message.warning(res.message)
|
|
257
|
}
|
|
258
|
})
|
|
259
260
|
},
searchShipment() {
|
|
261
262
263
|
const that = this
that.querySource = this.shipmentParam
listShipmentByShipmentDetailId(that.querySource).then(res => {
|
|
264
|
if (res.success) {
|
|
265
266
267
|
this.model = res.result
this.visible = true
this.searchInventory(that.querySource)
|
|
268
269
|
} else {
this.$message.warning(res.message)
|
|
270
|
}
|
|
271
|
})
|
|
272
273
|
},
searchInventory(record) {
|
|
274
275
276
|
const that = this
that.querySource = record
console.log('searchInventory')
|
|
277
278
279
|
// getInventoryFromShipmentDetail(that.querySource).then((res) => {
// this.dataSource = res.result;
// });
|
|
280
|
this.searchQuery()
|
|
281
|
},
|
|
282
283
284
285
286
287
288
289
290
291
|
solutionInvStatus(value) {
var actions = []
Object.keys(this.invStatus).some(key => {
if (this.invStatus[key].value == '' + value) {
actions.push(this.invStatus[key].text)
return true
}
})
return actions.join('')
},
|
|
292
|
searchQuery() {
|
|
293
|
this.loadData(1)
|
|
294
295
296
297
298
299
300
|
// 点击查询清空列表选中行
// https://gitee.com/jeecg/jeecg-boot/issues/I4KTU1
// this.selectedRowKeys = []
// this.selectionRows = []
},
loadData(arg) {
if (!this.url.list) {
|
|
301
|
this.$message.error('请设置url.list属性!')
|
|
302
303
304
305
|
return
}
//加载数据 若传入参数1则加载第一页的内容
if (arg === 1) {
|
|
306
|
this.ipagination.current = 1
|
|
307
|
}
|
|
308
309
310
311
312
313
314
315
316
317
318
319
320
|
var params = this.getQueryParams() //查询条件
this.loading = true
getAction(this.url.list, params)
.then(res => {
if (res.success) {
//update-begin---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------
this.dataSource = res.result.records || res.result
if (res.result.total) {
this.ipagination.total = res.result.total
} else {
this.ipagination.total = 0
}
//update-end---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------
|
|
321
|
} else {
|
|
322
|
this.$message.warning(res.message)
|
|
323
|
}
|
|
324
325
326
327
|
})
.finally(() => {
this.loading = false
})
|
|
328
329
330
|
},
getQueryField() {
//TODO 字段权限控制
|
|
331
332
333
334
335
|
var str = 'id,'
this.columns.forEach(function(value) {
str += ',' + value.dataIndex
})
return str
|
|
336
337
338
339
340
341
342
343
|
},
getQueryParams() {
//获取查询条件
let sqp = {}
if (this.superQueryParams) {
sqp['superQueryParams'] = encodeURI(this.superQueryParams)
sqp['superQueryMatchType'] = this.superQueryMatchType
}
|
|
344
345
346
347
348
349
|
this.queryParam.id = this.model.id
var param = Object.assign(sqp, this.queryParam, this.isorter, this.filters)
param.field = this.getQueryField()
param.pageNo = this.ipagination.current
param.pageSize = this.ipagination.pageSize
return filterObj(param)
|
|
350
351
|
},
handleOk() {
|
|
352
353
|
const that = this
that.close()
|
|
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
|
// 触发表单验证
// this.$refs.form.validate(valid => {
// if (valid) {
// that.confirmLoading = true;
// let httpurl = '';
// let method = '';
// if(!this.model.id){
// httpurl+=this.url.add;
// method = 'post';
// }else{
// httpurl+=this.url.edit;
// method = 'put';
// }
// this.model['shipmentId'] = this.mainId
// httpAction(httpurl,this.model,method).then((res)=>{
// if(res.success){
// that.$message.success(res.message);
// that.$emit('ok');
// }else{
// that.$message.warning(res.message);
// }
// }).finally(() => {
// that.confirmLoading = false;
// that.close();
// })
// }else{
// return false
// }
// })
},
handleCancel() {
this.close()
},
|
|
387
388
389
390
391
392
393
394
395
396
|
getStatusColor(status) {
const colors = {
'good ': 'green',
'defective': 'red',
'discussed ': 'grey',
'scrap': 'purple',
default: 'blue'
};
return colors[status] || colors.default;
},
|
|
397
|
searchMaterial() {
|
|
398
399
400
401
402
|
const that = this
that.querySource.materialCode = that.model.materialCode
console.log('model.materialCode:' + that.model.materialCode)
searchMaterialByCode(that.querySource).then(res => {
that.materialList = res.result
|
|
403
|
})
|
|
404
|
}
|
|
405
|
}
|
|
406
|
}
|
|
407
|
</script>
|