Blame view

ant-design-vue-jeecg/src/views/system/shipment/modules/ShipmentDetailCombineModal.vue 11.8 KB
肖超群 authored
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="关闭"
  >
肖超群 authored
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%" />
肖超群 authored
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%" />
肖超群 authored
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%" />
肖超群 authored
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%" />
肖超群 authored
33
34
35
36
37
            </a-form-model-item>
          </a-col>
        </a-row>
      </a-form-model>
    </a-spin>
肖超群 authored
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}"
肖超群 authored
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>
肖超群 authored
54
        </span>
肖超群 authored
55
56

        <span slot="inventoryStatus" slot-scope="inventoryStatus">
57
          <a-tag :key="inventoryStatus" :color="getStatusColor(inventoryStatus)">
肖超群 authored
58
59
60
            {{ solutionInvStatus(inventoryStatus) }}
          </a-tag>
        </span>
61
肖超群 authored
62
63
      </a-table>
    </div>
肖超群 authored
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'
肖超群 authored
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'
肖超群 authored
75
肖超群 authored
76
export default {
77
  name: 'ShipmentDetailCombineModal',
肖超群 authored
78
  components: {
79
    JeecgListMixin
肖超群 authored
80
81
82
83
84
85
86
87
88
89
  },
  props: {
    mainId: {
      type: String,
      required: false,
      default: ''
    }
  },
  data() {
    return {
90
      title: '操作',
肖超群 authored
91
92
93
94
      width: 1000,
      /* 分页参数 */
      ipagination: {
        current: 1,
95
        pageSize: 100,
肖超群 authored
96
97
        pageSizeOptions: ['10', '20', '30'],
        showTotal: (total, range) => {
98
          return range[0] + '-' + range[1] + ' 共' + total + '条'
肖超群 authored
99
        },
肖超群 authored
100
101
102
103
104
105
106
        showQuickJumper: true,
        showSizeChanger: true,
        total: 0
      },
      /* 数据源 */
      dataSource: [],
      queryParam: {},
肖超群 authored
107
      invStatus:[],
肖超群 authored
108
109
110
111
      combineParam: {},
      shipmentParam: {},
      visible: false,
      materialList: {},
112
      shipmentDetail: {},
肖超群 authored
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 }
肖超群 authored
134
135
      },
      wrapperCol: {
136
137
        xs: { span: 24 },
        sm: { span: 16 }
肖超群 authored
138
139
140
141
142
      },
      // 表头
      columns: [
        {
          title: '容器编码',
143
          align: 'center',
肖超群 authored
144
          dataIndex: 'containerCode'
肖超群 authored
145
        },
肖超群 authored
146
147
        {
          title: '库位编码',
148
          align: 'center',
肖超群 authored
149
          dataIndex: 'locationCode'
肖超群 authored
150
        },
肖超群 authored
151
152
        {
          title: '物料编码',
153
          align: 'center',
肖超群 authored
154
          dataIndex: 'materialCode'
肖超群 authored
155
        },
肖超群 authored
156
157
        {
          title: '物料名称',
158
          align: 'center',
肖超群 authored
159
160
161
162
          dataIndex: 'materialName'
        },
        {
          title: '库存数量',
163
          align: 'center',
肖超群 authored
164
165
166
167
          dataIndex: 'qty'
        },
        {
          title: '锁定数量',
168
          align: 'center',
肖超群 authored
169
170
171
172
          dataIndex: 'taskQty'
        },
        {
          title: '库存状态',
肖超群 authored
173
          dataIndex: 'inventoryStatus',
174
          align: 'center',
肖超群 authored
175
176
          width: 96,
          scopedSlots: {customRender: 'inventoryStatus'}
肖超群 authored
177
178
179
        },
        {
          title: '批次',
180
          align: 'center',
肖超群 authored
181
182
183
184
          dataIndex: 'batch'
        },
        {
          title: '创建人',
185
          align: 'center',
肖超群 authored
186
          dataIndex: 'createBy'
肖超群 authored
187
        },
肖超群 authored
188
189
        {
          title: '创建日期',
190
          align: 'center',
肖超群 authored
191
192
193
194
195
          dataIndex: 'createTime'
        },
        {
          title: '操作',
          dataIndex: 'action',
196
197
          align: 'center',
          fixed: 'right',
肖超群 authored
198
          width: 147,
199
          scopedSlots: { customRender: 'action' }
肖超群 authored
200
        }
肖超群 authored
201
202
203
204
      ],
      confirmLoading: false,
      validatorRules: {},
      url: {
205
206
207
        add: '/shipment/shipmentHeader/addShipmentDetail',
        edit: '/shipment/shipmentHeader/editShipmentDetail',
        list: '/shipment/shipmentCombination/getInventoryFromShipmentDetail'
肖超群 authored
208
      }
肖超群 authored
209
210
211
    }
  },
  created() {
肖超群 authored
212
    //备份model原始值
213
214
    this.modelDefault = JSON.parse(JSON.stringify(this.model))
    this.searchMaterial()
肖超群 authored
215
    this.loadFrom();
肖超群 authored
216
217
  },
  methods: {
肖超群 authored
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 = []
肖超群 authored
227
      fieldList.push({type:'string',value:'inventoryStatus',text:'库存状态',dictCode:'inventory_status'})
228
229
      this.superFieldList = fieldList
    },
肖超群 authored
230
    add() {
231
232
      this.edit(this.modelDefault)
      this.model.inventoryStatus = 'good'
肖超群 authored
233
    },
肖超群 authored
234
235
    edit(record) {
      // this.model = Object.assign({}, record);
236
237
      this.shipmentParam = record
      this.searchShipment()
肖超群 authored
238
239
    },
    close() {
240
241
242
      this.$emit('close')
      this.visible = false
      this.$refs.form.clearValidate()
肖超群 authored
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 => {
肖超群 authored
251
252
        if (res.success) {
          // this.model = res.result;
253
254
          this.$message.success(res.message)
          this.searchShipment()
肖超群 authored
255
256
        } else {
          this.$message.warning(res.message)
肖超群 authored
257
        }
258
      })
肖超群 authored
259
260
    },
    searchShipment() {
261
262
263
      const that = this
      that.querySource = this.shipmentParam
      listShipmentByShipmentDetailId(that.querySource).then(res => {
肖超群 authored
264
        if (res.success) {
265
266
267
          this.model = res.result
          this.visible = true
          this.searchInventory(that.querySource)
肖超群 authored
268
269
        } else {
          this.$message.warning(res.message)
肖超群 authored
270
        }
271
      })
肖超群 authored
272
273
    },
    searchInventory(record) {
274
275
276
      const that = this
      that.querySource = record
      console.log('searchInventory')
肖超群 authored
277
278
279
      // getInventoryFromShipmentDetail(that.querySource).then((res) => {
      //   this.dataSource = res.result;
      // });
280
      this.searchQuery()
肖超群 authored
281
    },
肖超群 authored
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('')
    },
肖超群 authored
292
    searchQuery() {
293
      this.loadData(1)
肖超群 authored
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属性!')
肖超群 authored
302
303
304
305
        return
      }
      //加载数据 若传入参数1则加载第一页的内容
      if (arg === 1) {
306
        this.ipagination.current = 1
肖超群 authored
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:适配不分页的数据列表------------
肖超群 authored
321
          } else {
322
            this.$message.warning(res.message)
肖超群 authored
323
          }
324
325
326
327
        })
        .finally(() => {
          this.loading = false
        })
肖超群 authored
328
329
330
    },
    getQueryField() {
      //TODO 字段权限控制
331
332
333
334
335
      var str = 'id,'
      this.columns.forEach(function(value) {
        str += ',' + value.dataIndex
      })
      return str
肖超群 authored
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)
肖超群 authored
350
351
    },
    handleOk() {
352
353
      const that = this
      that.close()
肖超群 authored
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()
    },
肖超群 authored
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;
    },
肖超群 authored
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
肖超群 authored
403
      })
404
    }
肖超群 authored
405
  }
肖超群 authored
406
}
肖超群 authored
407
</script>