@things-factory/operato-wms 3.7.2 → 3.7.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/client/pages/components/select-product-popup.js +5 -1
  2. package/client/pages/constants/order.js +10 -0
  3. package/client/pages/inbound/putaway-product.js +162 -139
  4. package/client/pages/inventory-check/inspecting-product.js +146 -80
  5. package/client/pages/manifest/create-loading-manifest.js +314 -0
  6. package/client/pages/manifest/dispatcher-verification-popup.js +86 -0
  7. package/client/pages/manifest/loading-manifest-detail.js +345 -0
  8. package/client/pages/manifest/loading-manifest-list.js +305 -0
  9. package/client/pages/order/arrival-notice/create-arrival-notice.js +8 -1
  10. package/client/pages/order/goods-received-note/received-note-list.js +138 -6
  11. package/client/pages/order/release-order/b2b/b2b-order-list.js +45 -5
  12. package/client/pages/order/release-order/b2b/b2b-order-requests.js +45 -5
  13. package/client/pages/order/release-order/b2c/b2c-order-requests.js +181 -21
  14. package/client/pages/order/release-order/bulk-print-packing-list.js +23 -0
  15. package/client/pages/order/release-order/create-release-order.js +25 -4
  16. package/client/pages/order/release-order/receive-release-order-request.js +27 -24
  17. package/client/pages/order/release-order/release-extra-product-popup.js +189 -56
  18. package/client/pages/order/release-order/release-order-detail.js +292 -71
  19. package/client/pages/order/reverse-kitting-order/reverse-kitting-order-detail.js +115 -50
  20. package/client/pages/order/reverse-kitting-order/reverse-kitting-order-list.js +1 -6
  21. package/client/pages/order/reverse-kitting-order/reverse-kitting-pallet-label-popup.js +239 -0
  22. package/client/pages/order/transport-order/delivery-order-list.js +99 -59
  23. package/client/pages/outbound/loading-product.js +4 -1
  24. package/client/pages/outbound/merged-outbound-worksheet.js +39 -1
  25. package/client/pages/outbound/packing-product.js +4 -1
  26. package/client/pages/outbound/packing-worksheet-list.js +39 -1
  27. package/client/pages/outbound/picking-product.js +622 -290
  28. package/client/pages/outbound/serial-number-popup.js +280 -0
  29. package/client/pages/outbound/worksheet-picking.js +28 -2
  30. package/client/pages/report/product-label-report.js +401 -0
  31. package/client/pages/support/inventory-comparison.js +296 -0
  32. package/client/pages/vas/print-product-label.js +298 -132
  33. package/client/pages/vas/reverse-kitting/execute-reverse-kitting.js +30 -12
  34. package/client/pages/vas/reverse-kitting/popup-combination-sets.js +75 -5
  35. package/client/pages/vas/reverse-kitting/popup-reverse-kitting-template.js +113 -18
  36. package/client/route.js +23 -0
  37. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.js +64 -54
  38. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.js.map +1 -1
  39. package/dist-server/graphql/resolvers/extra/add-release-good-products.js +34 -9
  40. package/dist-server/graphql/resolvers/extra/add-release-good-products.js.map +1 -1
  41. package/dist-server/graphql/resolvers/index.js +3 -1
  42. package/dist-server/graphql/resolvers/index.js.map +1 -1
  43. package/dist-server/graphql/resolvers/inventory-comparison/index.js +6 -0
  44. package/dist-server/graphql/resolvers/inventory-comparison/index.js.map +1 -0
  45. package/dist-server/graphql/resolvers/inventory-comparison/inventory-comparison-list.js +78 -0
  46. package/dist-server/graphql/resolvers/inventory-comparison/inventory-comparison-list.js.map +1 -0
  47. package/dist-server/graphql/resolvers/reports/index.js +2 -1
  48. package/dist-server/graphql/resolvers/reports/index.js.map +1 -1
  49. package/dist-server/graphql/resolvers/reports/product-label-report.js +56 -0
  50. package/dist-server/graphql/resolvers/reports/product-label-report.js.map +1 -0
  51. package/dist-server/graphql/types/index.js +5 -2
  52. package/dist-server/graphql/types/index.js.map +1 -1
  53. package/dist-server/graphql/types/inventory-comparison/index.js +13 -0
  54. package/dist-server/graphql/types/inventory-comparison/index.js.map +1 -0
  55. package/dist-server/graphql/types/inventory-comparison/inventory-comparison-list.js +14 -0
  56. package/dist-server/graphql/types/inventory-comparison/inventory-comparison-list.js.map +1 -0
  57. package/dist-server/graphql/types/inventory-comparison/inventory-comparison.js +18 -0
  58. package/dist-server/graphql/types/inventory-comparison/inventory-comparison.js.map +1 -0
  59. package/dist-server/graphql/types/reports/index.js +6 -1
  60. package/dist-server/graphql/types/reports/index.js.map +1 -1
  61. package/dist-server/graphql/types/reports/product-label-report-list.js +14 -0
  62. package/dist-server/graphql/types/reports/product-label-report-list.js.map +1 -0
  63. package/dist-server/graphql/types/reports/product-label-report.js +16 -0
  64. package/dist-server/graphql/types/reports/product-label-report.js.map +1 -0
  65. package/package.json +65 -65
  66. package/server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.ts +75 -65
  67. package/server/graphql/resolvers/extra/add-release-good-products.ts +57 -15
  68. package/server/graphql/resolvers/index.ts +3 -1
  69. package/server/graphql/resolvers/inventory-comparison/index.ts +5 -0
  70. package/server/graphql/resolvers/inventory-comparison/inventory-comparison-list.ts +99 -0
  71. package/server/graphql/resolvers/reports/index.ts +3 -1
  72. package/server/graphql/resolvers/reports/product-label-report.ts +56 -0
  73. package/server/graphql/types/index.ts +5 -2
  74. package/server/graphql/types/inventory-comparison/index.ts +11 -0
  75. package/server/graphql/types/inventory-comparison/inventory-comparison-list.ts +8 -0
  76. package/server/graphql/types/inventory-comparison/inventory-comparison.ts +12 -0
  77. package/server/graphql/types/reports/index.ts +6 -1
  78. package/server/graphql/types/reports/product-label-report-list.ts +8 -0
  79. package/server/graphql/types/reports/product-label-report.ts +10 -0
  80. package/things-factory.config.js +24 -0
  81. package/translations/en.json +64 -12
  82. package/translations/ko.json +50 -1
  83. package/translations/ms.json +51 -1
  84. package/translations/zh.json +50 -1
@@ -7,10 +7,9 @@ import { css, html } from 'lit-element'
7
7
 
8
8
  import { getCodeByName } from '@things-factory/code-base'
9
9
  import { i18next, localize } from '@things-factory/i18n-base'
10
- import { openPopup } from '@things-factory/layout-base'
11
10
  import { client, navigate, PageView } from '@things-factory/shell'
12
11
  import { ScrollbarStyles } from '@things-factory/styles'
13
- import { gqlBuilder, isMobileDevice } from '@things-factory/utils'
12
+ import { isMobileDevice } from '@things-factory/utils'
14
13
 
15
14
  class DeliveryOrderList extends localize(i18next)(PageView) {
16
15
  static get styles() {
@@ -126,6 +125,24 @@ class DeliveryOrderList extends localize(i18next)(PageView) {
126
125
  ],
127
126
  props: { searchOper: 'eq' }
128
127
  },
128
+ {
129
+ label: i18next.t('field.ref_no'),
130
+ name: 'refNo',
131
+ type: 'text',
132
+ props: { searchOper: 'i_like' }
133
+ },
134
+ {
135
+ label: i18next.t('field.ref_no_2'),
136
+ name: 'refNo2',
137
+ type: 'text',
138
+ props: { searchOper: 'i_like' }
139
+ },
140
+ {
141
+ label: i18next.t('field.ref_no_3'),
142
+ name: 'refNo3',
143
+ type: 'text',
144
+ props: { searchOper: 'i_like' }
145
+ },
129
146
  {
130
147
  name: 'status',
131
148
  label: i18next.t('label.status'),
@@ -193,6 +210,7 @@ class DeliveryOrderList extends localize(i18next)(PageView) {
193
210
  type: 'string',
194
211
  name: 'name',
195
212
  header: i18next.t('field.do_no'),
213
+ imex: { header: i18next.t('field.do_no'), key: 'name', width: 30, type: 'string' },
196
214
  sortable: true,
197
215
  width: 150
198
216
  },
@@ -200,6 +218,7 @@ class DeliveryOrderList extends localize(i18next)(PageView) {
200
218
  type: 'object',
201
219
  name: 'releaseGood',
202
220
  header: i18next.t('field.ro_no'),
221
+ imex: { header: i18next.t('field.ro_no'), key: 'releaseGood.name', width: 30, type: 'string' },
203
222
  sortable: true,
204
223
  width: 150
205
224
  },
@@ -207,6 +226,23 @@ class DeliveryOrderList extends localize(i18next)(PageView) {
207
226
  type: 'string',
208
227
  name: 'refNo',
209
228
  header: i18next.t('field.ref_no'),
229
+ imex: { header: i18next.t('field.refNo'), key: 'refNo', width: 25, type: 'string' },
230
+ sortable: true,
231
+ width: 150
232
+ },
233
+ {
234
+ type: 'string',
235
+ name: 'refNo2',
236
+ header: i18next.t('field.ref_no_2'),
237
+ imex: { header: i18next.t('field.ref_no_2'), key: 'refNo2', width: 25, type: 'string' },
238
+ sortable: true,
239
+ width: 150
240
+ },
241
+ {
242
+ type: 'string',
243
+ name: 'refNo3',
244
+ header: i18next.t('field.ref_no_3'),
245
+ imex: { header: i18next.t('field.ref_no_3'), key: 'refNo3', width: 25, type: 'string' },
210
246
  sortable: true,
211
247
  width: 150
212
248
  },
@@ -214,6 +250,7 @@ class DeliveryOrderList extends localize(i18next)(PageView) {
214
250
  type: 'object',
215
251
  name: 'bizplace',
216
252
  header: i18next.t('field.company'),
253
+ imex: { header: i18next.t('field.company'), key: 'bizplace.name', width: 30, type: 'string' },
217
254
  sortable: true,
218
255
  width: 200
219
256
  },
@@ -221,6 +258,7 @@ class DeliveryOrderList extends localize(i18next)(PageView) {
221
258
  type: 'date',
222
259
  name: 'deliveryDate',
223
260
  header: i18next.t('field.delivery_date'),
261
+ imex: { header: i18next.t('field.delivery_date'), key: 'deliveryDate', width: 20, type: 'string' },
224
262
  sortable: true,
225
263
  width: 160
226
264
  },
@@ -228,6 +266,7 @@ class DeliveryOrderList extends localize(i18next)(PageView) {
228
266
  type: 'boolean',
229
267
  name: 'ownCollection',
230
268
  header: i18next.t('field.own_collection'),
269
+ imex: { header: i18next.t('field.own_collection'), key: 'ownCollection', width: 20, type: 'string' },
231
270
  sortable: true,
232
271
  width: 100
233
272
  },
@@ -235,6 +274,7 @@ class DeliveryOrderList extends localize(i18next)(PageView) {
235
274
  type: 'string',
236
275
  name: 'status',
237
276
  header: i18next.t('field.status'),
277
+ imex: { header: i18next.t('field.status'), key: 'status', width: 20, type: 'string' },
238
278
  sortable: true,
239
279
  width: 150
240
280
  },
@@ -242,6 +282,7 @@ class DeliveryOrderList extends localize(i18next)(PageView) {
242
282
  type: 'datetime',
243
283
  name: 'createdAt',
244
284
  header: i18next.t('field.created_at'),
285
+ imex: { header: i18next.t('field.created_at'), key: 'createdAt', width: 30, type: 'datetime' },
245
286
  sortable: true,
246
287
  width: 160
247
288
  },
@@ -249,6 +290,7 @@ class DeliveryOrderList extends localize(i18next)(PageView) {
249
290
  type: 'datetime',
250
291
  name: 'updatedAt',
251
292
  header: i18next.t('field.updated_at'),
293
+ imex: { header: i18next.t('field.updated_at'), key: 'updatedAt', width: 30, type: 'datetime' },
252
294
  sortable: true,
253
295
  width: 160
254
296
  },
@@ -256,6 +298,7 @@ class DeliveryOrderList extends localize(i18next)(PageView) {
256
298
  type: 'object',
257
299
  name: 'updater',
258
300
  header: i18next.t('field.updater'),
301
+ imex: { header: i18next.t('field.updater'), key: 'updater.name', width: 30, type: 'string' },
259
302
  sortable: true,
260
303
  width: 160
261
304
  }
@@ -263,31 +306,14 @@ class DeliveryOrderList extends localize(i18next)(PageView) {
263
306
  }
264
307
  }
265
308
 
266
- async fetchHandler({ page, limit, sorters = [{ name: 'createdAt', desc: true }] }) {
309
+ async fetchHandler({ page, limit, sorters = [] }) {
267
310
  let filters = this.searchForm.queryFilters
268
- // let toDateIndex = filters.findIndex(x => x.name == 'toDate')
269
-
270
- // if (toDateIndex >= 0) {
271
- // let toDateFilter = new Date(filters[toDateIndex].value)
272
- // filters[toDateIndex].value = new Date(toDateFilter.setDate(toDateFilter.getDate() + 1)).toISOString()
273
- // }
274
- // var datetime = new Date()
275
- // var tzoffset = datetime.getTimezoneOffset() * 60
276
-
277
311
  var tzoffset = new Date().getTimezoneOffset() * 60
278
312
 
279
313
  const response = await client.query({
280
314
  query: gql`
281
- query {
282
- deliveryOrders(${gqlBuilder.buildArgs({
283
- filters: [
284
- ...filters,
285
- { name: 'status', operator: 'notin', value: ['CANCELLED'] },
286
- { name: 'tzoffset', operator: 'custom', value: tzoffset }
287
- ],
288
- pagination: { page, limit },
289
- sortings: sorters
290
- })}) {
315
+ query deliveryOrders($filters: [Filter], $pagination: Pagination, $sortings: [Sorting]) {
316
+ deliveryOrders(filters: $filters, pagination: $pagination, sortings: $sortings) {
291
317
  items {
292
318
  id
293
319
  name
@@ -304,6 +330,8 @@ class DeliveryOrderList extends localize(i18next)(PageView) {
304
330
  name
305
331
  description
306
332
  refNo
333
+ refNo2
334
+ refNo3
307
335
  }
308
336
  ownCollection
309
337
  createdAt
@@ -317,13 +345,30 @@ class DeliveryOrderList extends localize(i18next)(PageView) {
317
345
  total
318
346
  }
319
347
  }
320
- `
348
+ `,
349
+ variables: {
350
+ filters: [
351
+ ...filters,
352
+ { name: 'status', operator: 'notin', value: ['CANCELLED'] },
353
+ { name: 'tzoffset', operator: 'custom', value: tzoffset }
354
+ ],
355
+ pagination: { page, limit },
356
+ sortings: sorters
357
+ }
321
358
  })
322
359
 
323
360
  if (!response.errors) {
324
361
  return {
325
362
  total: response.data.deliveryOrders.total || 0,
326
- records: response.data.deliveryOrders.items
363
+ records:
364
+ response.data.deliveryOrders.items.map(dord => {
365
+ return {
366
+ ...dord,
367
+ refNo: dord?.releaseGood?.refNo || '',
368
+ refNo2: dord?.releaseGood?.refNo2 || '',
369
+ refNo3: dord?.releaseGood?.refNo3 || ''
370
+ }
371
+ }) || []
327
372
  }
328
373
  }
329
374
  }
@@ -348,23 +393,6 @@ class DeliveryOrderList extends localize(i18next)(PageView) {
348
393
  if (!response.errors) {
349
394
  return response.data.partnersBizplaces.items
350
395
  }
351
-
352
- // const response = await client.query({
353
- // query: gql`
354
- // query {
355
- // bizplaces(${gqlBuilder.buildArgs({
356
- // filters: [...bizplace]
357
- // })}) {
358
- // items{
359
- // id
360
- // name
361
- // description
362
- // }
363
- // }
364
- // }
365
- // `
366
- // })
367
- // return response.data.bizplaces.items
368
396
  }
369
397
 
370
398
  _compareValues(key, order = 'asc') {
@@ -386,25 +414,37 @@ class DeliveryOrderList extends localize(i18next)(PageView) {
386
414
  }
387
415
  }
388
416
 
389
- _uploadDeliveryNote(dnName, dnId) {
390
- openPopup(
391
- html`
392
- <upload-delivery-note
393
- .dnName="${dnName}"
394
- .dnId="${dnId}"
395
- .callback="${this.dataGrist.fetch.bind(this.dataGrist)}"
396
- ></upload-delivery-note>
397
- `,
398
- {
399
- backdrop: true,
400
- size: 'large',
401
- title: i18next.t('title.upload_signed_gdn')
402
- }
403
- )
404
- }
405
-
406
417
  _exportableData() {
407
- return this.dataGrist.exportRecords()
418
+ let records = []
419
+ if (this.dataGrist.selected && this.dataGrist.selected.length > 0) {
420
+ records = this.dataGrist.selected
421
+ } else {
422
+ records = this.dataGrist.data.records
423
+ }
424
+
425
+ var headerSetting = this.dataGrist._config.columns
426
+ .filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)
427
+ .map(column => {
428
+ return column.imex
429
+ })
430
+
431
+ var data = records.map(item => {
432
+ return {
433
+ id: item.id,
434
+ ...this._columns
435
+ .filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)
436
+ .reduce((record, column) => {
437
+ record[column.imex.key] = column.imex.key
438
+ .split('.')
439
+ .reduce((obj, key) => (obj && obj[key] !== 'undefined' ? obj[key] : undefined), item)
440
+ if (column.type === 'datetime') {
441
+ record[column.imex.key] = new Date(parseInt(record[column.imex.key])).toLocaleString()
442
+ }
443
+ return record
444
+ }, {})
445
+ }
446
+ })
447
+ return { header: headerSetting, data: data }
408
448
  }
409
449
 
410
450
  _modifyDateRange(e) {
@@ -510,6 +510,9 @@ class LoadingProduct extends connect(store)(localize(i18next)(PageView)) {
510
510
  query loadingWorksheet($releaseGoodNo: String!) {
511
511
  loadingWorksheet(releaseGoodNo: $releaseGoodNo) {
512
512
  worksheetInfo {
513
+ releaseGood {
514
+ name
515
+ }
513
516
  bizplaceName
514
517
  refNo
515
518
  startedAt
@@ -542,7 +545,7 @@ class LoadingProduct extends connect(store)(localize(i18next)(PageView)) {
542
545
  })
543
546
 
544
547
  if (!response.errors) {
545
- this._releaseGoodNo = releaseGoodNo
548
+ this._releaseGoodNo = response.data.loadingWorksheet.worksheetInfo.releaseGood.name
546
549
  this._fillUpForm(this.infoForm, response.data.loadingWorksheet.worksheetInfo)
547
550
  this._ownCollection = response.data.loadingWorksheet.worksheetInfo.ownCollection
548
551
  this.pickedProductData = {
@@ -189,6 +189,7 @@ class MergedOutboundWorksheet extends localize(i18next)(PageView) {
189
189
  type: 'string',
190
190
  name: 'name',
191
191
  header: i18next.t('field.worksheet_no'),
192
+ imex: { header: i18next.t('field.worksheet_no'), key: 'name', width: 30, type: 'string' },
192
193
  sortable: true,
193
194
  width: 150
194
195
  },
@@ -196,6 +197,7 @@ class MergedOutboundWorksheet extends localize(i18next)(PageView) {
196
197
  type: 'string',
197
198
  name: 'taskNo',
198
199
  header: i18next.t('field.task_no'),
200
+ imex: { header: i18next.t('field.task_no'), key: 'taskNo', width: 30, type: 'string' },
199
201
  sortable: true,
200
202
  width: 150
201
203
  },
@@ -203,6 +205,7 @@ class MergedOutboundWorksheet extends localize(i18next)(PageView) {
203
205
  type: 'object',
204
206
  name: 'bizplace',
205
207
  header: i18next.t('field.company'),
208
+ imex: { header: i18next.t('field.company'), key: 'bizplace.name', width: 30, type: 'string' },
206
209
  sortable: true,
207
210
  width: 240
208
211
  },
@@ -210,6 +213,7 @@ class MergedOutboundWorksheet extends localize(i18next)(PageView) {
210
213
  type: 'string',
211
214
  name: 'type',
212
215
  header: i18next.t('field.type'),
216
+ imex: { header: i18next.t('field.type'), key: 'type', width: 30, type: 'string' },
213
217
  sortable: true,
214
218
  width: 150
215
219
  },
@@ -217,6 +221,7 @@ class MergedOutboundWorksheet extends localize(i18next)(PageView) {
217
221
  type: 'string',
218
222
  name: 'status',
219
223
  header: i18next.t('field.status'),
224
+ imex: { header: i18next.t('field.status'), key: 'status', width: 30, type: 'string' },
220
225
  sortable: true,
221
226
  width: 100
222
227
  },
@@ -224,6 +229,7 @@ class MergedOutboundWorksheet extends localize(i18next)(PageView) {
224
229
  type: 'datetime',
225
230
  name: 'createdAt',
226
231
  header: i18next.t('field.created_at'),
232
+ imex: { header: i18next.t('field.created_at'), key: 'createdAt', width: 30, type: 'datetime' },
227
233
  sortable: true,
228
234
  width: 160
229
235
  },
@@ -231,6 +237,7 @@ class MergedOutboundWorksheet extends localize(i18next)(PageView) {
231
237
  type: 'datetime',
232
238
  name: 'startedAt',
233
239
  header: i18next.t('field.started_at'),
240
+ imex: { header: i18next.t('field.started_at'), key: 'startedAt', width: 30, type: 'datetime' },
234
241
  sortable: true,
235
242
  width: 160
236
243
  },
@@ -238,6 +245,7 @@ class MergedOutboundWorksheet extends localize(i18next)(PageView) {
238
245
  type: 'datetime',
239
246
  name: 'endedAt',
240
247
  header: i18next.t('field.ended_at'),
248
+ imex: { header: i18next.t('field.ended_at'), key: 'endedAt', width: 30, type: 'datetime' },
241
249
  sortable: true,
242
250
  width: 160
243
251
  },
@@ -245,6 +253,7 @@ class MergedOutboundWorksheet extends localize(i18next)(PageView) {
245
253
  type: 'object',
246
254
  name: 'updater',
247
255
  header: i18next.t('field.updater'),
256
+ imex: { header: i18next.t('field.updater'), key: 'updater.name', width: 30, type: 'string' },
248
257
  sortable: true,
249
258
  width: 150
250
259
  }
@@ -396,7 +405,36 @@ class MergedOutboundWorksheet extends localize(i18next)(PageView) {
396
405
  }
397
406
 
398
407
  _exportableData() {
399
- return this.dataGrist.exportRecords()
408
+ let records = []
409
+ if (this.dataGrist.selected && this.dataGrist.selected.length > 0) {
410
+ records = this.dataGrist.selected
411
+ } else {
412
+ records = this.dataGrist.data.records
413
+ }
414
+
415
+ var headerSetting = this.dataGrist._config.columns
416
+ .filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)
417
+ .map(column => {
418
+ return column.imex
419
+ })
420
+
421
+ var data = records.map(item => {
422
+ return {
423
+ id: item.id,
424
+ ...this._columns
425
+ .filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)
426
+ .reduce((record, column) => {
427
+ record[column.imex.key] = column.imex.key
428
+ .split('.')
429
+ .reduce((obj, key) => (obj && obj[key] !== 'undefined' ? obj[key] : undefined), item)
430
+ if (column.type === 'datetime') {
431
+ record[column.imex.key] = new Date(parseInt(record[column.imex.key])).toLocaleString()
432
+ }
433
+ return record
434
+ }, {})
435
+ }
436
+ })
437
+ return { header: headerSetting, data: data }
400
438
  }
401
439
  }
402
440
 
@@ -439,6 +439,9 @@ class PackingProduct extends connect(store)(localize(i18next)(PageView)) {
439
439
  query packingWorksheet($releaseGoodNo: String!) {
440
440
  packingWorksheet(releaseGoodNo: $releaseGoodNo) {
441
441
  worksheetInfo {
442
+ releaseGood {
443
+ name
444
+ }
442
445
  bizplaceName
443
446
  partnerDomainId
444
447
  refNo
@@ -498,7 +501,7 @@ class PackingProduct extends connect(store)(localize(i18next)(PageView)) {
498
501
  })
499
502
 
500
503
  if (!response.errors) {
501
- this.releaseGoodNo = releaseGoodNo
504
+ this.releaseGoodNo = response.data.packingWorksheet.worksheetInfo.releaseGood.name
502
505
  if (!response.data?.packingWorksheet) return
503
506
 
504
507
  const { worksheetInfo, worksheetDetailInfos } = response.data.packingWorksheet
@@ -184,6 +184,7 @@ class PackingWorksheetList extends localize(i18next)(PageView) {
184
184
  type: 'object',
185
185
  name: 'releaseGood',
186
186
  header: i18next.t('field.release_good_no'),
187
+ imex: { header: i18next.t('field.release_good_no'), key: 'releaseGood.name', width: 30, type: 'string' },
187
188
  sortable: true,
188
189
  width: 150
189
190
  },
@@ -191,6 +192,7 @@ class PackingWorksheetList extends localize(i18next)(PageView) {
191
192
  type: 'string',
192
193
  name: 'releaseRefNo',
193
194
  header: i18next.t('field.ref_no'),
195
+ imex: { header: i18next.t('field.ref_no'), key: 'releaseRefNo', width: 30, type: 'string' },
194
196
  sortable: true,
195
197
  width: 180
196
198
  },
@@ -198,6 +200,7 @@ class PackingWorksheetList extends localize(i18next)(PageView) {
198
200
  type: 'object',
199
201
  name: 'bizplace',
200
202
  header: i18next.t('field.company'),
203
+ imex: { header: i18next.t('field.company'), key: 'bizplace.name', width: 30, type: 'string' },
201
204
  sortable: true,
202
205
  width: 240
203
206
  },
@@ -205,6 +208,7 @@ class PackingWorksheetList extends localize(i18next)(PageView) {
205
208
  type: 'string',
206
209
  name: 'type',
207
210
  header: i18next.t('field.type'),
211
+ imex: { header: i18next.t('field.type'), key: 'type', width: 30, type: 'string' },
208
212
  sortable: true,
209
213
  width: 100
210
214
  },
@@ -212,6 +216,7 @@ class PackingWorksheetList extends localize(i18next)(PageView) {
212
216
  type: 'string',
213
217
  name: 'status',
214
218
  header: i18next.t('field.status'),
219
+ imex: { header: i18next.t('field.status'), key: 'status', width: 30, type: 'string' },
215
220
  sortable: true,
216
221
  width: 100
217
222
  },
@@ -219,6 +224,7 @@ class PackingWorksheetList extends localize(i18next)(PageView) {
219
224
  type: 'datetime',
220
225
  name: 'createdAt',
221
226
  header: i18next.t('field.created_at'),
227
+ imex: { header: i18next.t('field.created_at'), key: 'createdAt', width: 30, type: 'datetime' },
222
228
  sortable: true,
223
229
  width: 160
224
230
  },
@@ -226,6 +232,7 @@ class PackingWorksheetList extends localize(i18next)(PageView) {
226
232
  type: 'datetime',
227
233
  name: 'startedAt',
228
234
  header: i18next.t('field.started_at'),
235
+ imex: { header: i18next.t('field.started_at'), key: 'startedAt', width: 30, type: 'datetime' },
229
236
  sortable: true,
230
237
  width: 160
231
238
  },
@@ -233,6 +240,7 @@ class PackingWorksheetList extends localize(i18next)(PageView) {
233
240
  type: 'datetime',
234
241
  name: 'endedAt',
235
242
  header: i18next.t('field.ended_at'),
243
+ imex: { header: i18next.t('field.ended_at'), key: 'endedAt', width: 30, type: 'datetime' },
236
244
  sortable: true,
237
245
  width: 160
238
246
  },
@@ -240,6 +248,7 @@ class PackingWorksheetList extends localize(i18next)(PageView) {
240
248
  type: 'object',
241
249
  name: 'updater',
242
250
  header: i18next.t('field.updater'),
251
+ imex: { header: i18next.t('field.updater'), key: 'updater.name', width: 30, type: 'string' },
243
252
  sortable: true,
244
253
  width: 150
245
254
  }
@@ -369,7 +378,36 @@ class PackingWorksheetList extends localize(i18next)(PageView) {
369
378
  }
370
379
 
371
380
  _exportableData() {
372
- return this.dataGrist.exportRecords()
381
+ let records = []
382
+ if (this.dataGrist.selected && this.dataGrist.selected.length > 0) {
383
+ records = this.dataGrist.selected
384
+ } else {
385
+ records = this.dataGrist.data.records
386
+ }
387
+
388
+ var headerSetting = this.dataGrist._config.columns
389
+ .filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)
390
+ .map(column => {
391
+ return column.imex
392
+ })
393
+
394
+ var data = records.map(item => {
395
+ return {
396
+ id: item.id,
397
+ ...this._columns
398
+ .filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)
399
+ .reduce((record, column) => {
400
+ record[column.imex.key] = column.imex.key
401
+ .split('.')
402
+ .reduce((obj, key) => (obj && obj[key] !== 'undefined' ? obj[key] : undefined), item)
403
+ if (column.type === 'datetime') {
404
+ record[column.imex.key] = new Date(parseInt(record[column.imex.key])).toLocaleString()
405
+ }
406
+ return record
407
+ }, {})
408
+ }
409
+ })
410
+ return { header: headerSetting, data: data }
373
411
  }
374
412
  }
375
413