|
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">
|
肖超群
authored
|
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">
|
肖超群
authored
|
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">
|
肖超群
authored
|
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"
|
谭毅彬
authored
|
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">
|
谭毅彬
authored
|
57
|
<a-tag :key="inventoryStatus" :color="getStatusColor(inventoryStatus)">
|
|
58
59
60
|
{{ solutionInvStatus(inventoryStatus) }}
</a-tag>
</span>
|
谭毅彬
authored
|
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
combineParam: {},
shipmentParam: {},
visible: false,
materialList: {},
querySource: {},
/* 筛选参数 */
filters: {},
/* table加载状态 */
loading: false,
/* table选中keys*/
selectedRowKeys: [],
/* table选中records*/
selectionRows: [],
/* 查询折叠 */
toggleSearchStatus: false,
/* 高级查询条件生效状态 */
superQueryFlag: false,
/* 高级查询条件 */
superQueryParams: '',
/** 高级查询拼接方式 */
superQueryMatchType: 'and',
model: {},
labelCol: {
|
|
131
132
|
xs: { span: 24 },
sm: { span: 5 }
|
|
133
134
|
},
wrapperCol: {
|
|
135
136
|
xs: { span: 24 },
sm: { span: 16 }
|
|
137
138
139
140
141
|
},
// 表头
columns: [
{
title: '容器编码',
|
|
142
|
align: 'center',
|
|
143
|
dataIndex: 'containerCode'
|
|
144
|
},
|
|
145
146
|
{
title: '库位编码',
|
|
147
|
align: 'center',
|
|
148
|
dataIndex: 'locationCode'
|
|
149
|
},
|
|
150
151
|
{
title: '物料编码',
|
|
152
|
align: 'center',
|
|
153
|
dataIndex: 'materialCode'
|
|
154
|
},
|
|
155
156
|
{
title: '物料名称',
|
|
157
|
align: 'center',
|
|
158
159
160
161
|
dataIndex: 'materialName'
},
{
title: '库存数量',
|
|
162
|
align: 'center',
|
|
163
164
165
166
|
dataIndex: 'qty'
},
{
title: '锁定数量',
|
|
167
|
align: 'center',
|
|
168
169
170
171
|
dataIndex: 'taskQty'
},
{
title: '库存状态',
|
|
172
|
dataIndex: 'inventoryStatus',
|
|
173
|
align: 'center',
|
|
174
175
|
width: 96,
scopedSlots: {customRender: 'inventoryStatus'}
|
|
176
177
178
|
},
{
title: '批次',
|
|
179
|
align: 'center',
|
|
180
181
182
183
|
dataIndex: 'batch'
},
{
title: '创建人',
|
|
184
|
align: 'center',
|
|
185
|
dataIndex: 'createBy'
|
|
186
|
},
|
|
187
188
|
{
title: '创建日期',
|
|
189
|
align: 'center',
|
|
190
191
192
193
194
|
dataIndex: 'createTime'
},
{
title: '操作',
dataIndex: 'action',
|
|
195
196
|
align: 'center',
fixed: 'right',
|
|
197
|
width: 147,
|
|
198
|
scopedSlots: { customRender: 'action' }
|
|
199
|
}
|
|
200
201
202
203
|
],
confirmLoading: false,
validatorRules: {},
url: {
|
|
204
205
206
|
add: '/shipment/shipmentHeader/addShipmentDetail',
edit: '/shipment/shipmentHeader/editShipmentDetail',
list: '/shipment/shipmentCombination/getInventoryFromShipmentDetail'
|
|
207
|
}
|
|
208
209
210
|
}
},
created() {
|
|
211
|
//备份model原始值
|
|
212
213
|
this.modelDefault = JSON.parse(JSON.stringify(this.model))
this.searchMaterial()
|
|
214
|
this.loadFrom();
|
|
215
216
|
},
methods: {
|
|
217
218
219
220
221
222
223
|
loadFrom(){
ajaxGetDictItems('inventory_status').then((res) => {
if (res.success) {
this.invStatus = res.result
}
})
},
|
|
224
225
|
getSuperFieldList() {
let fieldList = []
|
|
226
|
fieldList.push({type:'string',value:'inventoryStatus',text:'库存状态',dictCode:'inventory_status'})
|
|
227
228
|
this.superFieldList = fieldList
},
|
|
229
|
add() {
|
|
230
231
|
this.edit(this.modelDefault)
this.model.inventoryStatus = 'good'
|
|
232
|
},
|
|
233
234
|
edit(record) {
// this.model = Object.assign({}, record);
|
|
235
236
|
this.shipmentParam = record
this.searchShipment()
|
|
237
238
|
},
close() {
|
|
239
240
241
|
this.$emit('close')
this.visible = false
this.$refs.form.clearValidate()
|
|
242
243
|
},
combine(record) {
|
|
244
245
246
247
248
249
|
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 => {
|
|
250
251
|
if (res.success) {
// this.model = res.result;
|
|
252
253
|
this.$message.success(res.message)
this.searchShipment()
|
|
254
255
|
} else {
this.$message.warning(res.message)
|
|
256
|
}
|
|
257
|
})
|
|
258
259
|
},
searchShipment() {
|
|
260
261
262
|
const that = this
that.querySource = this.shipmentParam
listShipmentByShipmentDetailId(that.querySource).then(res => {
|
|
263
|
if (res.success) {
|
|
264
265
266
|
this.model = res.result
this.visible = true
this.searchInventory(that.querySource)
|
|
267
268
|
} else {
this.$message.warning(res.message)
|
|
269
|
}
|
|
270
|
})
|
|
271
272
|
},
searchInventory(record) {
|
|
273
274
275
|
const that = this
that.querySource = record
console.log('searchInventory')
|
|
276
277
278
|
// getInventoryFromShipmentDetail(that.querySource).then((res) => {
// this.dataSource = res.result;
// });
|
|
279
|
this.searchQuery()
|
|
280
|
},
|
|
281
282
283
284
285
286
287
288
289
290
|
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('')
},
|
|
291
|
searchQuery() {
|
|
292
|
this.loadData(1)
|
|
293
294
295
296
297
298
299
|
// 点击查询清空列表选中行
// https://gitee.com/jeecg/jeecg-boot/issues/I4KTU1
// this.selectedRowKeys = []
// this.selectionRows = []
},
loadData(arg) {
if (!this.url.list) {
|
|
300
|
this.$message.error('请设置url.list属性!')
|
|
301
302
303
304
|
return
}
//加载数据 若传入参数1则加载第一页的内容
if (arg === 1) {
|
|
305
|
this.ipagination.current = 1
|
|
306
|
}
|
|
307
308
309
310
311
312
313
314
315
316
317
318
319
|
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:适配不分页的数据列表------------
|
|
320
|
} else {
|
|
321
|
this.$message.warning(res.message)
|
|
322
|
}
|
|
323
324
325
326
|
})
.finally(() => {
this.loading = false
})
|
|
327
328
329
|
},
getQueryField() {
//TODO 字段权限控制
|
|
330
331
332
333
334
|
var str = 'id,'
this.columns.forEach(function(value) {
str += ',' + value.dataIndex
})
return str
|
|
335
336
337
338
339
340
341
342
|
},
getQueryParams() {
//获取查询条件
let sqp = {}
if (this.superQueryParams) {
sqp['superQueryParams'] = encodeURI(this.superQueryParams)
sqp['superQueryMatchType'] = this.superQueryMatchType
}
|
|
343
344
345
346
347
348
|
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)
|
|
349
350
|
},
handleOk() {
|
|
351
352
|
const that = this
that.close()
|
|
353
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
|
// 触发表单验证
// 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()
},
|
|
386
387
388
389
390
391
392
393
394
395
|
getStatusColor(status) {
const colors = {
'good ': 'green',
'defective': 'red',
'discussed ': 'grey',
'scrap': 'purple',
default: 'blue'
};
return colors[status] || colors.default;
},
|
|
396
|
searchMaterial() {
|
|
397
398
399
400
401
|
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
|
|
402
|
})
|
|
403
|
}
|
|
404
|
}
|
|
405
|
}
|
|
406
|
</script>
|