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
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 }
肖超群 authored
133
134
      },
      wrapperCol: {
135
136
        xs: { span: 24 },
        sm: { span: 16 }
肖超群 authored
137
138
139
140
141
      },
      // 表头
      columns: [
        {
          title: '容器编码',
142
          align: 'center',
肖超群 authored
143
          dataIndex: 'containerCode'
肖超群 authored
144
        },
肖超群 authored
145
146
        {
          title: '库位编码',
147
          align: 'center',
肖超群 authored
148
          dataIndex: 'locationCode'
肖超群 authored
149
        },
肖超群 authored
150
151
        {
          title: '物料编码',
152
          align: 'center',
肖超群 authored
153
          dataIndex: 'materialCode'
肖超群 authored
154
        },
肖超群 authored
155
156
        {
          title: '物料名称',
157
          align: 'center',
肖超群 authored
158
159
160
161
          dataIndex: 'materialName'
        },
        {
          title: '库存数量',
162
          align: 'center',
肖超群 authored
163
164
165
166
          dataIndex: 'qty'
        },
        {
          title: '锁定数量',
167
          align: 'center',
肖超群 authored
168
169
170
171
          dataIndex: 'taskQty'
        },
        {
          title: '库存状态',
肖超群 authored
172
          dataIndex: 'inventoryStatus',
173
          align: 'center',
肖超群 authored
174
175
          width: 96,
          scopedSlots: {customRender: 'inventoryStatus'}
肖超群 authored
176
177
178
        },
        {
          title: '批次',
179
          align: 'center',
肖超群 authored
180
181
182
183
          dataIndex: 'batch'
        },
        {
          title: '创建人',
184
          align: 'center',
肖超群 authored
185
          dataIndex: 'createBy'
肖超群 authored
186
        },
肖超群 authored
187
188
        {
          title: '创建日期',
189
          align: 'center',
肖超群 authored
190
191
192
193
194
          dataIndex: 'createTime'
        },
        {
          title: '操作',
          dataIndex: 'action',
195
196
          align: 'center',
          fixed: 'right',
肖超群 authored
197
          width: 147,
198
          scopedSlots: { customRender: 'action' }
肖超群 authored
199
        }
肖超群 authored
200
201
202
203
      ],
      confirmLoading: false,
      validatorRules: {},
      url: {
204
205
206
        add: '/shipment/shipmentHeader/addShipmentDetail',
        edit: '/shipment/shipmentHeader/editShipmentDetail',
        list: '/shipment/shipmentCombination/getInventoryFromShipmentDetail'
肖超群 authored
207
      }
肖超群 authored
208
209
210
    }
  },
  created() {
肖超群 authored
211
    //备份model原始值
212
213
    this.modelDefault = JSON.parse(JSON.stringify(this.model))
    this.searchMaterial()
肖超群 authored
214
    this.loadFrom();
肖超群 authored
215
216
  },
  methods: {
肖超群 authored
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 = []
肖超群 authored
226
      fieldList.push({type:'string',value:'inventoryStatus',text:'库存状态',dictCode:'inventory_status'})
227
228
      this.superFieldList = fieldList
    },
肖超群 authored
229
    add() {
230
231
      this.edit(this.modelDefault)
      this.model.inventoryStatus = 'good'
肖超群 authored
232
    },
肖超群 authored
233
234
    edit(record) {
      // this.model = Object.assign({}, record);
235
236
      this.shipmentParam = record
      this.searchShipment()
肖超群 authored
237
238
    },
    close() {
239
240
241
      this.$emit('close')
      this.visible = false
      this.$refs.form.clearValidate()
肖超群 authored
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 => {
肖超群 authored
250
251
        if (res.success) {
          // this.model = res.result;
252
253
          this.$message.success(res.message)
          this.searchShipment()
肖超群 authored
254
255
        } else {
          this.$message.warning(res.message)
肖超群 authored
256
        }
257
      })
肖超群 authored
258
259
    },
    searchShipment() {
260
261
262
      const that = this
      that.querySource = this.shipmentParam
      listShipmentByShipmentDetailId(that.querySource).then(res => {
肖超群 authored
263
        if (res.success) {
264
265
266
          this.model = res.result
          this.visible = true
          this.searchInventory(that.querySource)
肖超群 authored
267
268
        } else {
          this.$message.warning(res.message)
肖超群 authored
269
        }
270
      })
肖超群 authored
271
272
    },
    searchInventory(record) {
273
274
275
      const that = this
      that.querySource = record
      console.log('searchInventory')
肖超群 authored
276
277
278
      // getInventoryFromShipmentDetail(that.querySource).then((res) => {
      //   this.dataSource = res.result;
      // });
279
      this.searchQuery()
肖超群 authored
280
    },
肖超群 authored
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('')
    },
肖超群 authored
291
    searchQuery() {
292
      this.loadData(1)
肖超群 authored
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属性!')
肖超群 authored
301
302
303
304
        return
      }
      //加载数据 若传入参数1则加载第一页的内容
      if (arg === 1) {
305
        this.ipagination.current = 1
肖超群 authored
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:适配不分页的数据列表------------
肖超群 authored
320
          } else {
321
            this.$message.warning(res.message)
肖超群 authored
322
          }
323
324
325
326
        })
        .finally(() => {
          this.loading = false
        })
肖超群 authored
327
328
329
    },
    getQueryField() {
      //TODO 字段权限控制
330
331
332
333
334
      var str = 'id,'
      this.columns.forEach(function(value) {
        str += ',' + value.dataIndex
      })
      return str
肖超群 authored
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)
肖超群 authored
349
350
    },
    handleOk() {
351
352
      const that = this
      that.close()
肖超群 authored
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()
    },
肖超群 authored
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;
    },
肖超群 authored
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
肖超群 authored
402
      })
403
    }
肖超群 authored
404
  }
肖超群 authored
405
}
肖超群 authored
406
</script>