@sellmate/design-system 0.0.35 → 0.0.37

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 (153) hide show
  1. package/dist/cjs/sd-badge.cjs.entry.js +1 -1
  2. package/dist/cjs/sd-button_15.cjs.entry.js +18 -18
  3. package/dist/cjs/sd-card.cjs.entry.js +1 -1
  4. package/dist/cjs/sd-date-picker.cjs.entry.js +2 -2
  5. package/dist/cjs/sd-date-range-picker.cjs.entry.js +2 -2
  6. package/dist/cjs/sd-loading-spinner.cjs.entry.js +1 -1
  7. package/dist/cjs/sd-popover.cjs.entry.js +2 -2
  8. package/dist/cjs/sd-progress.cjs.entry.js +2 -2
  9. package/dist/cjs/sd-select-multiple.cjs.entry.js +2 -2
  10. package/dist/cjs/sd-select-option-group.cjs.entry.js +3 -3
  11. package/dist/cjs/sd-table-backup.cjs.entry.js +32 -24
  12. package/dist/cjs/sd-table-backup.entry.cjs.js.map +1 -1
  13. package/dist/cjs/sd-tag.cjs.entry.js +1 -1
  14. package/dist/cjs/sd-td.cjs.entry.js +2 -2
  15. package/dist/collection/collection-manifest.json +1 -1
  16. package/dist/collection/components/sd-badge/sd-badge.js +1 -1
  17. package/dist/collection/components/sd-card/sd-card.js +1 -1
  18. package/dist/collection/components/sd-date-picker/sd-date-picker.js +2 -2
  19. package/dist/collection/components/sd-date-range-picker/sd-date-range-picker.js +2 -2
  20. package/dist/collection/components/sd-guide/sd-guide.js +3 -3
  21. package/dist/collection/components/sd-icon/sd-icon.js +1 -1
  22. package/dist/collection/components/sd-input/sd-input.js +2 -2
  23. package/dist/collection/components/sd-loading-spinner/sd-loading-spinner.js +1 -1
  24. package/dist/collection/components/sd-pagination/sd-pagination.js +2 -2
  25. package/dist/collection/components/sd-popover/sd-popover.js +2 -2
  26. package/dist/collection/components/sd-portal/sd-portal.js +1 -1
  27. package/dist/collection/components/sd-progress/sd-progress.js +2 -2
  28. package/dist/collection/components/sd-select/sd-select-option/sd-select-option.js +1 -1
  29. package/dist/collection/components/sd-select-multiple/sd-select-multiple.js +2 -2
  30. package/dist/collection/components/sd-select-multiple-group/sd-select-option-group/sd-select-option-group.js +3 -3
  31. package/dist/collection/components/sd-table/sd-tbody/sd-tbody.js +1 -1
  32. package/dist/collection/components/sd-table/sd-td/sd-td.js +2 -2
  33. package/dist/collection/components/sd-table/sd-th/sd-th.js +1 -1
  34. package/dist/collection/components/sd-table/sd-tr/sd-tr.js +1 -1
  35. package/dist/collection/components/sd-table-backup/sd-table-backup.css +244 -0
  36. package/dist/collection/components/sd-table-backup/sd-table-backup.js +711 -0
  37. package/dist/collection/components/sd-table-backup/sd-table-backup.js.map +1 -0
  38. package/dist/collection/components/sd-tag/sd-tag.js +1 -1
  39. package/dist/collection/components/sd-tooltip/sd-tooltip.js +4 -4
  40. package/dist/collection/components/sd-tooltip-portal/sd-tooltip-portal.js +1 -1
  41. package/dist/components/{p-BEDQ2CIp.js → p-BKIzbxHd.js} +5 -5
  42. package/dist/components/{p-BEDQ2CIp.js.map → p-BKIzbxHd.js.map} +1 -1
  43. package/dist/components/{p-BeBw4eSm.js → p-BKt1fz_c.js} +3 -3
  44. package/dist/components/{p-BeBw4eSm.js.map → p-BKt1fz_c.js.map} +1 -1
  45. package/dist/components/{p-Du8-vyL0.js → p-Biuws3x8.js} +3 -3
  46. package/dist/components/{p-Du8-vyL0.js.map → p-Biuws3x8.js.map} +1 -1
  47. package/dist/components/{p-CrmdI2cD.js → p-BoGQEY6a.js} +3 -3
  48. package/dist/components/{p-CrmdI2cD.js.map → p-BoGQEY6a.js.map} +1 -1
  49. package/dist/components/{p-BEq3cGoC.js → p-C3SqpMHk.js} +3 -3
  50. package/dist/components/{p-BEq3cGoC.js.map → p-C3SqpMHk.js.map} +1 -1
  51. package/dist/components/{p-B8lMIjWB.js → p-CEIyDJmm.js} +7 -7
  52. package/dist/components/{p-B8lMIjWB.js.map → p-CEIyDJmm.js.map} +1 -1
  53. package/dist/components/{p-ntW8MKYi.js → p-CZcwZjU1.js} +5 -5
  54. package/dist/components/{p-ntW8MKYi.js.map → p-CZcwZjU1.js.map} +1 -1
  55. package/dist/components/{p-BzdIpn5T.js → p-D-nkog81.js} +9 -9
  56. package/dist/components/{p-BzdIpn5T.js.map → p-D-nkog81.js.map} +1 -1
  57. package/dist/components/{p-D-s8kK6P.js → p-DMZNbNGd.js} +3 -3
  58. package/dist/components/{p-D-s8kK6P.js.map → p-DMZNbNGd.js.map} +1 -1
  59. package/dist/components/{p-ybbnPl4X.js → p-DV8AjnfD.js} +7 -7
  60. package/dist/components/{p-ybbnPl4X.js.map → p-DV8AjnfD.js.map} +1 -1
  61. package/dist/components/{p-CSnKPDQz.js → p-Dbeg4f0H.js} +5 -5
  62. package/dist/components/{p-CSnKPDQz.js.map → p-Dbeg4f0H.js.map} +1 -1
  63. package/dist/components/{p-CqpahWAy.js → p-DfLxcVkb.js} +3 -3
  64. package/dist/components/{p-CqpahWAy.js.map → p-DfLxcVkb.js.map} +1 -1
  65. package/dist/components/{p-5yzkkdZ2.js → p-bkzZLdB8.js} +3 -3
  66. package/dist/components/{p-5yzkkdZ2.js.map → p-bkzZLdB8.js.map} +1 -1
  67. package/dist/components/{p-GNK9vrin.js → p-nbx4dU8d.js} +3 -3
  68. package/dist/components/{p-GNK9vrin.js.map → p-nbx4dU8d.js.map} +1 -1
  69. package/dist/components/{p-BG0UE2wL.js → p-sZjPKctP.js} +3 -3
  70. package/dist/components/{p-BG0UE2wL.js.map → p-sZjPKctP.js.map} +1 -1
  71. package/dist/components/sd-badge.js +1 -1
  72. package/dist/components/sd-button.js +1 -1
  73. package/dist/components/sd-card.js +1 -1
  74. package/dist/components/sd-checkbox.js +1 -1
  75. package/dist/components/sd-date-picker.js +5 -5
  76. package/dist/components/sd-date-range-picker.js +5 -5
  77. package/dist/components/sd-guide.js +6 -6
  78. package/dist/components/sd-icon.js +1 -1
  79. package/dist/components/sd-input.js +1 -1
  80. package/dist/components/sd-loading-spinner.js +1 -1
  81. package/dist/components/sd-pagination.js +1 -1
  82. package/dist/components/sd-popover.js +5 -5
  83. package/dist/components/sd-portal.js +1 -1
  84. package/dist/components/sd-progress.js +2 -2
  85. package/dist/components/sd-select-multiple-group.js +5 -5
  86. package/dist/components/sd-select-multiple.js +7 -7
  87. package/dist/components/sd-select-option-group.js +1 -1
  88. package/dist/components/sd-select-option.js +1 -1
  89. package/dist/components/sd-select.js +1 -1
  90. package/dist/components/sd-table-backup.js +43 -35
  91. package/dist/components/sd-table-backup.js.map +1 -1
  92. package/dist/components/sd-table.js +13 -13
  93. package/dist/components/sd-tag.js +1 -1
  94. package/dist/components/sd-tbody.js +1 -1
  95. package/dist/components/sd-td.js +2 -2
  96. package/dist/components/sd-th.js +1 -1
  97. package/dist/components/sd-tooltip-portal.js +1 -1
  98. package/dist/components/sd-tooltip.js +1 -1
  99. package/dist/components/sd-tr.js +1 -1
  100. package/dist/design-system/design-system.esm.js +1 -1
  101. package/dist/design-system/{p-7e18d4cf.entry.js → p-01f47211.entry.js} +2 -2
  102. package/dist/design-system/{p-88745dfe.entry.js → p-0d4df4c3.entry.js} +2 -2
  103. package/dist/design-system/p-11d861ed.entry.js +2 -0
  104. package/dist/design-system/{p-d003ee3d.entry.js → p-22234255.entry.js} +2 -2
  105. package/dist/design-system/{p-78f90517.entry.js → p-3e682362.entry.js} +2 -2
  106. package/dist/design-system/p-648c4ab4.entry.js +2 -0
  107. package/dist/design-system/{p-d74bfbe4.entry.js → p-93718467.entry.js} +2 -2
  108. package/dist/design-system/{p-a72c4b0c.entry.js → p-b0f0a38e.entry.js} +2 -2
  109. package/dist/design-system/p-bbb3f844.entry.js +2 -0
  110. package/dist/design-system/{p-985be35d.entry.js.map → p-bbb3f844.entry.js.map} +1 -1
  111. package/dist/design-system/{p-01f44c51.entry.js → p-cc279370.entry.js} +2 -2
  112. package/dist/design-system/{p-8b60af66.entry.js → p-cde3982d.entry.js} +2 -2
  113. package/dist/design-system/{p-49f98f09.entry.js → p-d3bb6c6a.entry.js} +2 -2
  114. package/dist/design-system/p-fcd5eb87.entry.js +2 -0
  115. package/dist/design-system/p-fcd5eb87.entry.js.map +1 -0
  116. package/dist/design-system/sd-table-backup.entry.esm.js.map +1 -1
  117. package/dist/esm/sd-badge.entry.js +1 -1
  118. package/dist/esm/sd-button_15.entry.js +18 -18
  119. package/dist/esm/sd-card.entry.js +1 -1
  120. package/dist/esm/sd-date-picker.entry.js +2 -2
  121. package/dist/esm/sd-date-range-picker.entry.js +2 -2
  122. package/dist/esm/sd-loading-spinner.entry.js +1 -1
  123. package/dist/esm/sd-popover.entry.js +2 -2
  124. package/dist/esm/sd-progress.entry.js +2 -2
  125. package/dist/esm/sd-select-multiple.entry.js +2 -2
  126. package/dist/esm/sd-select-option-group.entry.js +3 -3
  127. package/dist/esm/sd-table-backup.entry.js +32 -24
  128. package/dist/esm/sd-table-backup.entry.js.map +1 -1
  129. package/dist/esm/sd-tag.entry.js +1 -1
  130. package/dist/esm/sd-td.entry.js +2 -2
  131. package/dist/types/components.d.ts +2 -2
  132. package/hydrate/index.js +71 -63
  133. package/hydrate/index.mjs +71 -63
  134. package/package.json +5 -3
  135. package/dist/collection/components/sd-table/sd-table-backup.js +0 -2743
  136. package/dist/collection/components/sd-table/sd-table-backup.js.map +0 -1
  137. package/dist/design-system/p-671a08a6.entry.js +0 -2
  138. package/dist/design-system/p-671a08a6.entry.js.map +0 -1
  139. package/dist/design-system/p-6a624672.entry.js +0 -2
  140. package/dist/design-system/p-985be35d.entry.js +0 -2
  141. package/dist/design-system/p-ef5ffaa2.entry.js +0 -2
  142. /package/dist/design-system/{p-7e18d4cf.entry.js.map → p-01f47211.entry.js.map} +0 -0
  143. /package/dist/design-system/{p-88745dfe.entry.js.map → p-0d4df4c3.entry.js.map} +0 -0
  144. /package/dist/design-system/{p-6a624672.entry.js.map → p-11d861ed.entry.js.map} +0 -0
  145. /package/dist/design-system/{p-d003ee3d.entry.js.map → p-22234255.entry.js.map} +0 -0
  146. /package/dist/design-system/{p-78f90517.entry.js.map → p-3e682362.entry.js.map} +0 -0
  147. /package/dist/design-system/{p-ef5ffaa2.entry.js.map → p-648c4ab4.entry.js.map} +0 -0
  148. /package/dist/design-system/{p-d74bfbe4.entry.js.map → p-93718467.entry.js.map} +0 -0
  149. /package/dist/design-system/{p-a72c4b0c.entry.js.map → p-b0f0a38e.entry.js.map} +0 -0
  150. /package/dist/design-system/{p-01f44c51.entry.js.map → p-cc279370.entry.js.map} +0 -0
  151. /package/dist/design-system/{p-8b60af66.entry.js.map → p-cde3982d.entry.js.map} +0 -0
  152. /package/dist/design-system/{p-49f98f09.entry.js.map → p-d3bb6c6a.entry.js.map} +0 -0
  153. /package/dist/types/components/{sd-table → sd-table-backup}/sd-table-backup.d.ts +0 -0
@@ -1,2743 +0,0 @@
1
- import { h, Host, } from "@stencil/core";
2
- export class SdTable {
3
- el;
4
- columns;
5
- rows;
6
- selected = new Set();
7
- rowKey = 'id';
8
- selectable = false;
9
- resizable = false;
10
- width;
11
- height;
12
- stickyHeader = false;
13
- stickyColumn = { left: 0, right: 0 };
14
- noDataLabel = '데이터가 없습니다.';
15
- isLoading = false;
16
- pagination;
17
- bodyCellRenderer;
18
- useInternalPagination = false;
19
- useRowsPerPageSelect = false;
20
- rowsPerPageOption = [
21
- { label: '10개씩 보기', value: 10 },
22
- { label: '25개씩 보기', value: 25 },
23
- { label: '50개씩 보기', value: 50 },
24
- { label: '100개씩 보기', value: 100 },
25
- ];
26
- sdSelectChange;
27
- sdPageChange;
28
- sdRowsPerPageChange;
29
- currentPage = this.pagination?.page || 1;
30
- innerRows = [];
31
- innerSelected = new Set();
32
- columnWidths = [];
33
- scrolledLeft = false;
34
- scrolledRight = false;
35
- handleColumnsChange(newCols) {
36
- this.columnWidths = newCols.map(c => parseInt(c.width || '120', 10));
37
- }
38
- handleRowsChange(newRows) {
39
- this.innerRows = [...newRows];
40
- }
41
- handleSelectedChange(newSelected) {
42
- this.innerSelected = new Set(newSelected);
43
- }
44
- handlePaginationChange(newVal) {
45
- if (newVal?.page && newVal.page !== this.currentPage)
46
- this.currentPage = newVal.page;
47
- }
48
- componentWillLoad() {
49
- this.innerRows = [...(this.rows || [])];
50
- this.innerSelected = new Set(this.selected);
51
- this.columnWidths = (this.columns || []).map(c => parseInt(c.width || '120', 10));
52
- }
53
- componentDidLoad() {
54
- // SSR 환경 체크
55
- if (typeof window === 'undefined')
56
- return;
57
- const middle = this.el.querySelector('.sd-table__middle');
58
- if (!middle)
59
- return;
60
- const onScroll = () => {
61
- const { scrollLeft, scrollWidth, clientWidth } = middle;
62
- this.scrolledLeft = scrollLeft > 0;
63
- this.scrolledRight = scrollLeft + clientWidth < scrollWidth;
64
- };
65
- middle.addEventListener('scroll', onScroll, { passive: true });
66
- onScroll();
67
- }
68
- // ----- Derived getters -----
69
- get visibleColumns() {
70
- return this.columns.filter(col => col.visible !== false);
71
- }
72
- get paginatedRows() {
73
- if (!this.pagination || !this.useInternalPagination)
74
- return this.innerRows;
75
- const { rowsPerPage = this.rows.length } = this.pagination || {};
76
- const result = this.innerRows.slice((this.currentPage - 1) * rowsPerPage, this.currentPage * rowsPerPage);
77
- return result;
78
- }
79
- get lastPageNumber() {
80
- const { lastPage, rowsPerPage = this.rows.length } = this.pagination || {};
81
- return lastPage ?? Math.max(1, Math.ceil(this.rows.length / rowsPerPage));
82
- }
83
- get sdTableClasses() {
84
- return [
85
- 'sd-table',
86
- this.stickyHeader && 'sd-table--sticky-header',
87
- this.selectable && 'sd-table--selectable',
88
- this.resizable && 'sd-table--resizable',
89
- !this.innerRows.length && 'sd-table--no-data',
90
- ((this.stickyColumn?.left ?? 0) > 0 || (this.stickyColumn?.right ?? 0) > 0) &&
91
- 'sd-table--sticky-column',
92
- this.scrolledLeft && 'sd-table--scrolled-left',
93
- this.scrolledRight && 'sd-table--scrolled-right',
94
- ]
95
- .filter(Boolean)
96
- .join(' ');
97
- }
98
- // ----- Selection -----
99
- isRowSelected(row) {
100
- return Array.from(this.innerSelected).some(r => r[this.rowKey] === row[this.rowKey]);
101
- }
102
- updateRowSelect(row) {
103
- const selectedArray = Array.from(this.innerSelected);
104
- const exists = this.isRowSelected(row);
105
- const newSelected = exists
106
- ? selectedArray.filter(r => r[this.rowKey] !== row[this.rowKey])
107
- : [...selectedArray, row];
108
- // 동일 상태면 set하지 않음 → 불필요 렌더 방지
109
- if (newSelected.length === selectedArray.length)
110
- return;
111
- this.innerSelected = new Set(newSelected);
112
- this.sdSelectChange.emit(Array.from(this.innerSelected));
113
- }
114
- toggleSelectAll(checked) {
115
- if (checked) {
116
- const pageRows = new Set([...this.paginatedRows]);
117
- this.innerSelected = new Set([...this.innerSelected, ...pageRows]);
118
- }
119
- else {
120
- const currentPageKeys = this.paginatedRows.map(r => r[this.rowKey]);
121
- this.innerSelected = new Set([...this.innerSelected].filter(r => !currentPageKeys.includes(r[this.rowKey])));
122
- }
123
- this.sdSelectChange.emit(Array.from(this.innerSelected));
124
- }
125
- get isAllChecked() {
126
- const total = this.paginatedRows.length;
127
- const selectedCount = this.paginatedRows.filter(row => Array.from(this.innerSelected).some(selectedRow => selectedRow[this.rowKey] === row[this.rowKey])).length;
128
- if (selectedCount === 0)
129
- return false; // 아무것도 안 선택됨
130
- if (selectedCount === total)
131
- return true; // 전부 선택됨
132
- return null; // 일부만 선택됨
133
- }
134
- // ----- Helpers -----
135
- getStickyStyle(colIdx) {
136
- const leftOffset = this.columnWidths.slice(0, colIdx).reduce((a, b) => a + b, 0) + (this.selectable ? 52 : 0);
137
- const rightOffset = this.columnWidths
138
- .filter((_, i) => i >= this.visibleColumns.length - (this.stickyColumn.right || 0) && i > colIdx)
139
- .reduce((a, b) => a + b, 0);
140
- return {
141
- '--sticky-left-offset': `${leftOffset}px`,
142
- '--sticky-right-offset': `${rightOffset}px`,
143
- 'width': `${this.columnWidths[colIdx]}px`,
144
- 'minWidth': `${this.columnWidths[colIdx]}px`,
145
- 'maxWidth': `${this.columnWidths[colIdx]}px`,
146
- };
147
- }
148
- handleResize(index, event) {
149
- // SSR 환경 체크
150
- if (typeof document === 'undefined')
151
- return;
152
- const startX = event.clientX;
153
- const startWidth = this.columnWidths[index];
154
- const handleMouseMove = (moveEvent) => {
155
- const newWidth = Math.max(startWidth + moveEvent.clientX - startX, 50);
156
- this.columnWidths = this.columnWidths.map((width, idx) => (idx === index ? newWidth : width));
157
- };
158
- const handleMouseUp = () => {
159
- document.removeEventListener('mousemove', handleMouseMove);
160
- document.removeEventListener('mouseup', handleMouseUp);
161
- };
162
- document.addEventListener('mousemove', handleMouseMove);
163
- document.addEventListener('mouseup', handleMouseUp);
164
- }
165
- getCellValue(column, row) {
166
- const { field, format, name } = column;
167
- const value = typeof field === 'function' ? field(row) : field ? row[field] : row[name];
168
- return format ? format(value, row) : value;
169
- }
170
- // ----- Render -----
171
- renderHeader() {
172
- return (h("thead", null, h("tr", null, this.selectable && (h("th", { class: {
173
- 'sd-th': true,
174
- 'sd-th--selected': true,
175
- 'sticky-left': Boolean(this.stickyColumn.left && this.stickyColumn.left > 0),
176
- }, style: {
177
- '--sticky-left-offset': '0px',
178
- } }, h("sd-checkbox", { checked: this.isAllChecked, disabled: !this.paginatedRows.length, onSdChange: (e) => this.toggleSelectAll(e.detail) }))), this.visibleColumns.map((col, colIdx) => (h("th", { key: col.name, class: {
179
- 'sd-th': true,
180
- [`${col.thClass}`]: Boolean(col.thClass),
181
- 'sticky-left': Boolean(this.stickyColumn.left && colIdx < this.stickyColumn.left),
182
- 'sticky-right': Boolean(this.stickyColumn.right && colIdx >= this.visibleColumns.length - this.stickyColumn.right),
183
- 'sticky-left-edge': Boolean(this.stickyColumn.left && colIdx === this.stickyColumn.left - 1),
184
- 'sticky-right-edge': Boolean(this.stickyColumn.right &&
185
- colIdx === this.visibleColumns.length - this.stickyColumn.right),
186
- }, style: this.getStickyStyle(colIdx) }, h("div", { class: `sd-th__content sd-th__content--${col.align || 'left'}` }, h("slot", { name: `header-cell-${col.name}` }, h("div", { class: "sd-th__content--label" }, col.label)), col.usePageMoveIcon && h("sd-icon", { name: "pageMove", size: "12", color: "#006AC1" }), col.tooltip && (h("sd-tooltip", { ...col.tooltipOptions }, h("div", { slot: "content" }, col.tooltip.map(text => (h("p", null, text))))))), this.resizable && typeof window !== 'undefined' && (h("div", { class: "sd-th__resizer", onMouseDown: (evt) => this.handleResize(colIdx, evt) }))))))));
187
- }
188
- renderBody() {
189
- return (h("tbody", { ...(!this.paginatedRows.length && { part: 'tbody-empty' }) }, this.isLoading && (h("div", { class: "sd-table__loading" }, h("sd-loading-spinner", null))), !this.paginatedRows.length ? (h("tr", null, h("td", { colSpan: this.visibleColumns.length + (this.selectable ? 1 : 0) }, h("slot", { name: "no-data" }, this.noDataLabel)))) : (this.paginatedRows.map((row, rowIdx) => (h("tr", { key: row[this.rowKey], class: "hover:bg-Grey_Lighten-6" }, this.selectable && (h("td", { class: {
190
- 'sd-td': true,
191
- 'sd-td--selected': true,
192
- 'sticky-left': Boolean(this.stickyColumn.left && this.stickyColumn.left > 0),
193
- }, style: {
194
- '--sticky-left-offset': '0px',
195
- } }, h("sd-checkbox", { checked: this.isRowSelected(row), disabled: !this.paginatedRows.length, onSdChange: () => this.updateRowSelect(row) }))), this.visibleColumns.map((column, colIdx) => {
196
- const rendered = this.bodyCellRenderer?.(column, row);
197
- return (h("td", { key: column.name, part: `td-${column.name}`, class: {
198
- 'sd-td': true,
199
- [`sd-td--${column.align || 'left'}`]: true,
200
- 'sticky-left': Boolean(this.stickyColumn.left && colIdx < this.stickyColumn.left),
201
- 'sticky-right': Boolean(this.stickyColumn.right &&
202
- colIdx >= this.visibleColumns.length - this.stickyColumn.right),
203
- 'sticky-left-edge': Boolean(this.stickyColumn.left && colIdx === this.stickyColumn.left - 1),
204
- 'sticky-right-edge': Boolean(this.stickyColumn.right &&
205
- colIdx === this.visibleColumns.length - this.stickyColumn.right),
206
- [`${column.tdClass}`]: Boolean(column.tdClass),
207
- }, style: this.getStickyStyle(colIdx) }, h("slot", { name: `body-cell-${column.name}-${rowIdx}` }, rendered ? (typeof rendered === 'string' ? (h("span", { innerHTML: rendered })) : (rendered)) : (this.getCellValue(column, row)))));
208
- })))))));
209
- }
210
- render() {
211
- return (h(Host, { key: '0ac0006dea3c0e4cde082f8b396513234ac60749' }, h("div", { key: '36aa811fed020945b72ab21c9318a03c3595d0d2', class: "sd-table__wrapper", style: {
212
- '--table-width': this.width,
213
- '--table-height': this.height,
214
- } }, h("div", { key: 'd785153b7c08bbe1250dcb389b66c624382bdfd2', class: "sd-table__container" }, h("div", { key: '034db5c0eb677a87d6fa3a84d824c6e5078676ea', class: "sd-table__middle" }, h("table", { key: '43841e0ed748a887156b3ba80038602ddb8fd207', part: "table", class: this.sdTableClasses }, this.renderHeader(), this.renderBody())), h("div", { key: '391f134001037c03a39f1c428681053aa8004a11', class: "sd-table__bottom" })), this.pagination && this.innerRows.length > 0 && (h("div", { key: '73e38e427afc2ff69fd5adea0057d30351ade0fc', class: "sd-table__pagination" }, h("sd-pagination", { key: '61e9c37239109c493d03d731bd0643670325cf97', currentPage: !this.useInternalPagination ? this.pagination.page : this.currentPage, lastPage: !this.useInternalPagination ? this.pagination.lastPage : this.lastPageNumber, onPageChange: (e) => {
215
- if (!this.useInternalPagination) {
216
- this.sdPageChange.emit(e.detail);
217
- }
218
- else {
219
- this.currentPage = e.detail;
220
- this.sdPageChange.emit(this.currentPage);
221
- }
222
- } }), this.useRowsPerPageSelect && (h("sd-select", { key: 'ce5ea8221b621ab7f67558a2be228f473c22cca6', value: this.pagination.rowsPerPage, options: this.rowsPerPageOption, width: "128px", onSdChange: (e) => {
223
- const changedRowsPerPage = e.detail.value ? Number(e.detail.value) : 0;
224
- if (!this.useInternalPagination) {
225
- this.sdRowsPerPageChange.emit(changedRowsPerPage);
226
- }
227
- else {
228
- const newRowsPerPage = Number(e.detail.value || 0);
229
- let newLastPage = Math.max(1, Math.ceil(this.innerRows.length / newRowsPerPage));
230
- let newCurrentPage = this.currentPage;
231
- if (newCurrentPage > newLastPage) {
232
- newCurrentPage = newLastPage;
233
- }
234
- this.pagination = {
235
- page: newCurrentPage,
236
- rowsPerPage: newRowsPerPage,
237
- lastPage: newLastPage,
238
- };
239
- this.currentPage = newCurrentPage;
240
- this.sdRowsPerPageChange.emit(changedRowsPerPage);
241
- }
242
- } })))))));
243
- }
244
- static get is() { return "sd-table-backup"; }
245
- static get originalStyleUrls() {
246
- return {
247
- "$": ["sd-table.scss"]
248
- };
249
- }
250
- static get styleUrls() {
251
- return {
252
- "$": ["sd-table.css"]
253
- };
254
- }
255
- static get properties() {
256
- return {
257
- "columns": {
258
- "type": "unknown",
259
- "mutable": false,
260
- "complexType": {
261
- "original": "SdTableColumn[]",
262
- "resolved": "SdTableColumn[]",
263
- "references": {
264
- "SdTableColumn": {
265
- "location": "local",
266
- "path": "/Users/meijing/Documents/sellmate/frontend/design-system/packages/stencil/src/components/sd-table/sd-table-backup.tsx",
267
- "id": "src/components/sd-table/sd-table-backup.tsx::SdTableColumn"
268
- }
269
- }
270
- },
271
- "required": true,
272
- "optional": false,
273
- "docs": {
274
- "tags": [],
275
- "text": ""
276
- },
277
- "getter": false,
278
- "setter": false
279
- },
280
- "rows": {
281
- "type": "unknown",
282
- "mutable": true,
283
- "complexType": {
284
- "original": "Row[]",
285
- "resolved": "Row[]",
286
- "references": {
287
- "Row": {
288
- "location": "local",
289
- "path": "/Users/meijing/Documents/sellmate/frontend/design-system/packages/stencil/src/components/sd-table/sd-table-backup.tsx",
290
- "id": "src/components/sd-table/sd-table-backup.tsx::Row"
291
- }
292
- }
293
- },
294
- "required": true,
295
- "optional": false,
296
- "docs": {
297
- "tags": [],
298
- "text": ""
299
- },
300
- "getter": false,
301
- "setter": false
302
- },
303
- "selected": {
304
- "type": "unknown",
305
- "mutable": true,
306
- "complexType": {
307
- "original": "Set<Row>",
308
- "resolved": "Set<Row>",
309
- "references": {
310
- "Set": {
311
- "location": "global",
312
- "id": "global::Set"
313
- },
314
- "Row": {
315
- "location": "local",
316
- "path": "/Users/meijing/Documents/sellmate/frontend/design-system/packages/stencil/src/components/sd-table/sd-table-backup.tsx",
317
- "id": "src/components/sd-table/sd-table-backup.tsx::Row"
318
- }
319
- }
320
- },
321
- "required": false,
322
- "optional": false,
323
- "docs": {
324
- "tags": [],
325
- "text": ""
326
- },
327
- "getter": false,
328
- "setter": false,
329
- "defaultValue": "new Set()"
330
- },
331
- "rowKey": {
332
- "type": "string",
333
- "mutable": false,
334
- "complexType": {
335
- "original": "string",
336
- "resolved": "string",
337
- "references": {}
338
- },
339
- "required": false,
340
- "optional": false,
341
- "docs": {
342
- "tags": [],
343
- "text": ""
344
- },
345
- "getter": false,
346
- "setter": false,
347
- "reflect": false,
348
- "attribute": "row-key",
349
- "defaultValue": "'id'"
350
- },
351
- "selectable": {
352
- "type": "boolean",
353
- "mutable": false,
354
- "complexType": {
355
- "original": "boolean",
356
- "resolved": "boolean",
357
- "references": {}
358
- },
359
- "required": false,
360
- "optional": false,
361
- "docs": {
362
- "tags": [],
363
- "text": ""
364
- },
365
- "getter": false,
366
- "setter": false,
367
- "reflect": false,
368
- "attribute": "selectable",
369
- "defaultValue": "false"
370
- },
371
- "resizable": {
372
- "type": "boolean",
373
- "mutable": false,
374
- "complexType": {
375
- "original": "boolean",
376
- "resolved": "boolean",
377
- "references": {}
378
- },
379
- "required": false,
380
- "optional": false,
381
- "docs": {
382
- "tags": [],
383
- "text": ""
384
- },
385
- "getter": false,
386
- "setter": false,
387
- "reflect": false,
388
- "attribute": "resizable",
389
- "defaultValue": "false"
390
- },
391
- "width": {
392
- "type": "string",
393
- "mutable": false,
394
- "complexType": {
395
- "original": "string",
396
- "resolved": "string | undefined",
397
- "references": {}
398
- },
399
- "required": false,
400
- "optional": true,
401
- "docs": {
402
- "tags": [],
403
- "text": ""
404
- },
405
- "getter": false,
406
- "setter": false,
407
- "reflect": false,
408
- "attribute": "width"
409
- },
410
- "height": {
411
- "type": "string",
412
- "mutable": false,
413
- "complexType": {
414
- "original": "string",
415
- "resolved": "string | undefined",
416
- "references": {}
417
- },
418
- "required": false,
419
- "optional": true,
420
- "docs": {
421
- "tags": [],
422
- "text": ""
423
- },
424
- "getter": false,
425
- "setter": false,
426
- "reflect": false,
427
- "attribute": "height"
428
- },
429
- "stickyHeader": {
430
- "type": "boolean",
431
- "mutable": false,
432
- "complexType": {
433
- "original": "boolean",
434
- "resolved": "boolean",
435
- "references": {}
436
- },
437
- "required": false,
438
- "optional": false,
439
- "docs": {
440
- "tags": [],
441
- "text": ""
442
- },
443
- "getter": false,
444
- "setter": false,
445
- "reflect": false,
446
- "attribute": "sticky-header",
447
- "defaultValue": "false"
448
- },
449
- "stickyColumn": {
450
- "type": "unknown",
451
- "mutable": false,
452
- "complexType": {
453
- "original": "{ left?: number; right?: number }",
454
- "resolved": "{ left?: number | undefined; right?: number | undefined; }",
455
- "references": {}
456
- },
457
- "required": false,
458
- "optional": false,
459
- "docs": {
460
- "tags": [],
461
- "text": ""
462
- },
463
- "getter": false,
464
- "setter": false,
465
- "defaultValue": "{ left: 0, right: 0 }"
466
- },
467
- "noDataLabel": {
468
- "type": "string",
469
- "mutable": false,
470
- "complexType": {
471
- "original": "string",
472
- "resolved": "string",
473
- "references": {}
474
- },
475
- "required": false,
476
- "optional": false,
477
- "docs": {
478
- "tags": [],
479
- "text": ""
480
- },
481
- "getter": false,
482
- "setter": false,
483
- "reflect": false,
484
- "attribute": "no-data-label",
485
- "defaultValue": "'\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.'"
486
- },
487
- "isLoading": {
488
- "type": "boolean",
489
- "mutable": false,
490
- "complexType": {
491
- "original": "boolean",
492
- "resolved": "boolean",
493
- "references": {}
494
- },
495
- "required": false,
496
- "optional": false,
497
- "docs": {
498
- "tags": [],
499
- "text": ""
500
- },
501
- "getter": false,
502
- "setter": false,
503
- "reflect": false,
504
- "attribute": "is-loading",
505
- "defaultValue": "false"
506
- },
507
- "pagination": {
508
- "type": "unknown",
509
- "mutable": false,
510
- "complexType": {
511
- "original": "{\n page: number;\n rowsPerPage: number;\n lastPage?: number;\n }",
512
- "resolved": "undefined | { page: number; rowsPerPage: number; lastPage?: number | undefined; }",
513
- "references": {}
514
- },
515
- "required": false,
516
- "optional": true,
517
- "docs": {
518
- "tags": [],
519
- "text": ""
520
- },
521
- "getter": false,
522
- "setter": false
523
- },
524
- "bodyCellRenderer": {
525
- "type": "unknown",
526
- "mutable": false,
527
- "complexType": {
528
- "original": "(\n column: SdTableColumn,\n row: Row,\n ) => HTMLElement | string | null | undefined",
529
- "resolved": "((column: SdTableColumn, row: Row) => string | HTMLElement | null | undefined) | undefined",
530
- "references": {
531
- "SdTableColumn": {
532
- "location": "local",
533
- "path": "/Users/meijing/Documents/sellmate/frontend/design-system/packages/stencil/src/components/sd-table/sd-table-backup.tsx",
534
- "id": "src/components/sd-table/sd-table-backup.tsx::SdTableColumn"
535
- },
536
- "Row": {
537
- "location": "local",
538
- "path": "/Users/meijing/Documents/sellmate/frontend/design-system/packages/stencil/src/components/sd-table/sd-table-backup.tsx",
539
- "id": "src/components/sd-table/sd-table-backup.tsx::Row"
540
- },
541
- "HTMLElement": {
542
- "location": "global",
543
- "id": "global::HTMLElement"
544
- }
545
- }
546
- },
547
- "required": false,
548
- "optional": true,
549
- "docs": {
550
- "tags": [],
551
- "text": ""
552
- },
553
- "getter": false,
554
- "setter": false
555
- },
556
- "useInternalPagination": {
557
- "type": "boolean",
558
- "mutable": false,
559
- "complexType": {
560
- "original": "boolean",
561
- "resolved": "boolean",
562
- "references": {}
563
- },
564
- "required": false,
565
- "optional": false,
566
- "docs": {
567
- "tags": [],
568
- "text": ""
569
- },
570
- "getter": false,
571
- "setter": false,
572
- "reflect": false,
573
- "attribute": "use-internal-pagination",
574
- "defaultValue": "false"
575
- },
576
- "useRowsPerPageSelect": {
577
- "type": "boolean",
578
- "mutable": false,
579
- "complexType": {
580
- "original": "boolean",
581
- "resolved": "boolean",
582
- "references": {}
583
- },
584
- "required": false,
585
- "optional": false,
586
- "docs": {
587
- "tags": [],
588
- "text": ""
589
- },
590
- "getter": false,
591
- "setter": false,
592
- "reflect": false,
593
- "attribute": "use-rows-per-page-select",
594
- "defaultValue": "false"
595
- },
596
- "rowsPerPageOption": {
597
- "type": "unknown",
598
- "mutable": false,
599
- "complexType": {
600
- "original": "SelectOption[]",
601
- "resolved": "SelectOption[]",
602
- "references": {
603
- "SelectOption": {
604
- "location": "import",
605
- "path": "../sd-select/sd-select",
606
- "id": "src/components/sd-select/sd-select.tsx::SelectOption"
607
- }
608
- }
609
- },
610
- "required": false,
611
- "optional": false,
612
- "docs": {
613
- "tags": [],
614
- "text": ""
615
- },
616
- "getter": false,
617
- "setter": false,
618
- "defaultValue": "[\n { label: '10\uAC1C\uC529 \uBCF4\uAE30', value: 10 },\n { label: '25\uAC1C\uC529 \uBCF4\uAE30', value: 25 },\n { label: '50\uAC1C\uC529 \uBCF4\uAE30', value: 50 },\n { label: '100\uAC1C\uC529 \uBCF4\uAE30', value: 100 },\n ]"
619
- }
620
- };
621
- }
622
- static get states() {
623
- return {
624
- "currentPage": {},
625
- "innerRows": {},
626
- "innerSelected": {},
627
- "columnWidths": {},
628
- "scrolledLeft": {},
629
- "scrolledRight": {}
630
- };
631
- }
632
- static get events() {
633
- return [{
634
- "method": "sdSelectChange",
635
- "name": "sdSelectChange",
636
- "bubbles": true,
637
- "cancelable": true,
638
- "composed": true,
639
- "docs": {
640
- "tags": [],
641
- "text": ""
642
- },
643
- "complexType": {
644
- "original": "Row[]",
645
- "resolved": "Row[]",
646
- "references": {
647
- "Row": {
648
- "location": "local",
649
- "path": "/Users/meijing/Documents/sellmate/frontend/design-system/packages/stencil/src/components/sd-table/sd-table-backup.tsx",
650
- "id": "src/components/sd-table/sd-table-backup.tsx::Row"
651
- }
652
- }
653
- }
654
- }, {
655
- "method": "sdPageChange",
656
- "name": "sdPageChange",
657
- "bubbles": true,
658
- "cancelable": true,
659
- "composed": true,
660
- "docs": {
661
- "tags": [],
662
- "text": ""
663
- },
664
- "complexType": {
665
- "original": "number",
666
- "resolved": "number",
667
- "references": {}
668
- }
669
- }, {
670
- "method": "sdRowsPerPageChange",
671
- "name": "sdRowsPerPageChange",
672
- "bubbles": true,
673
- "cancelable": true,
674
- "composed": true,
675
- "docs": {
676
- "tags": [],
677
- "text": ""
678
- },
679
- "complexType": {
680
- "original": "number",
681
- "resolved": "number",
682
- "references": {}
683
- }
684
- }];
685
- }
686
- static get elementRef() { return "el"; }
687
- static get watchers() {
688
- return [{
689
- "propName": "columns",
690
- "methodName": "handleColumnsChange"
691
- }, {
692
- "propName": "rows",
693
- "methodName": "handleRowsChange"
694
- }, {
695
- "propName": "selected",
696
- "methodName": "handleSelectedChange"
697
- }, {
698
- "propName": "pagination",
699
- "methodName": "handlePaginationChange"
700
- }];
701
- }
702
- }
703
- // <div
704
- // style="
705
- // width: 100%;
706
- // height: 600px;
707
- // display: flex;
708
- // justify-content: center;
709
- // align-items: center;
710
- // gap: 40px;
711
- // margin-top: 100px;
712
- // "
713
- // >
714
- // <sd-table id="sd-table-1" use-rows-per-page-select></sd-table>
715
- // <button id="test">시작</button>
716
- // </div>
717
- // document.addEventListener('DOMContentLoaded', event => {
718
- // const table = document.getElementById('sd-table-1');
719
- // const test = document.getElementById('test');
720
- // table.pagination = {
721
- // page: 1,
722
- // rowsPerPage: 50,
723
- // totalItems: 0,
724
- // lastPage: 1,
725
- // };
726
- // table.rows = [];
727
- // const ROWS = [
728
- // {
729
- // 'id': 1,
730
- // 'productInfo': {
731
- // name: 'Oversized Wool Autumn Jacket',
732
- // property: '블랙, OS',
733
- // barcode: [{ code: '123456789013456789' }],
734
- // code: 'OUTJK002BLKM',
735
- // category: '의류 > 아우터 > 자켓',
736
- // season: '2025 (S/S)',
737
- // },
738
- // 'avgCost': 150000,
739
- // 'totalStock': 5200,
740
- // 'movingStock': 250,
741
- // 'unshippedStock': 100,
742
- // '본사 창고': {
743
- // total: 100000,
744
- // scheduled: 5000,
745
- // },
746
- // '롯데 백화점 잠실점': {
747
- // total: 100000,
748
- // scheduled: 5000,
749
- // },
750
- // },
751
- // {
752
- // 'id': 2,
753
- // 'productInfo': {
754
- // name: 'Cotton Basic T-Shirt',
755
- // property: '화이트, L',
756
- // barcode: [{ code: '123456789013456780' }],
757
- // code: 'TSHRT001WHTL',
758
- // category: '의류 > 상의 > 티셔츠',
759
- // season: '2025 (S/S)',
760
- // },
761
- // 'avgCost': 25000,
762
- // 'totalStock': 8500,
763
- // 'movingStock': 400,
764
- // 'unshippedStock': 150,
765
- // '본사 창고': {
766
- // total: 100000,
767
- // scheduled: 5000,
768
- // },
769
- // '롯데 백화점 잠실점': {
770
- // total: 100000,
771
- // scheduled: 5000,
772
- // },
773
- // },
774
- // {
775
- // 'id': 3,
776
- // 'productInfo': {
777
- // name: 'Denim Straight Jeans',
778
- // property: '네이비, 30',
779
- // barcode: [{ code: '123456789013456781' }],
780
- // code: 'JEANS001NAVY30',
781
- // category: '의류 > 하의 > 청바지',
782
- // season: '2025 (F/W)',
783
- // isDeleted: true,
784
- // },
785
- // 'avgCost': 89000,
786
- // 'totalStock': 3200,
787
- // 'movingStock': 180,
788
- // 'unshippedStock': 80,
789
- // '본사 창고': {
790
- // total: 100000,
791
- // scheduled: 5000,
792
- // },
793
- // 'ABC 창고 (한솔 로지스틱스)': {
794
- // total: 2000,
795
- // scheduled: 100,
796
- // },
797
- // '롯데 백화점 잠실점': {
798
- // total: 100000,
799
- // scheduled: 5000,
800
- // },
801
- // },
802
- // {
803
- // 'id': 4,
804
- // 'productInfo': {
805
- // name: 'Leather Ankle Boots',
806
- // property: '브라운, 250',
807
- // barcode: [{ code: '123456789013456782' }],
808
- // code: 'BOOTS001BRN250',
809
- // category: '신발 > 부츠 > 앵클부츠',
810
- // season: '2025 (F/W)',
811
- // },
812
- // 'avgCost': 180000,
813
- // 'totalStock': 1800,
814
- // 'movingStock': 120,
815
- // 'unshippedStock': 60,
816
- // '본사 창고': {
817
- // total: 100000,
818
- // scheduled: 5000,
819
- // },
820
- // '롯데 백화점 잠실점': {
821
- // total: 100000,
822
- // scheduled: 5000,
823
- // },
824
- // },
825
- // {
826
- // 'id': 5,
827
- // 'productInfo': {
828
- // name: 'Cashmere Wool Scarf',
829
- // property: '그레이, OS',
830
- // barcode: [{ code: '123456789013456783' }],
831
- // code: 'SCARF001GRAY',
832
- // category: '액세서리 > 머플러 > 캐시미어',
833
- // season: '2025 (F/W)',
834
- // },
835
- // 'avgCost': 75000,
836
- // 'totalStock': 2400,
837
- // 'movingStock': 140,
838
- // 'unshippedStock': 70,
839
- // '본사 창고': {
840
- // total: 100000,
841
- // scheduled: 5000,
842
- // },
843
- // '롯데 백화점 잠실점': {
844
- // total: 100000,
845
- // scheduled: 5000,
846
- // },
847
- // },
848
- // {
849
- // 'id': 6,
850
- // 'productInfo': {
851
- // name: 'Minimalist Watch',
852
- // property: '실버, OS',
853
- // barcode: [{ code: '123456789013456784' }],
854
- // code: 'WATCH001SLV',
855
- // category: '액세서리 > 시계 > 손목시계',
856
- // season: '2025 (S/S)',
857
- // },
858
- // 'avgCost': 120000,
859
- // 'totalStock': 950,
860
- // 'movingStock': 85,
861
- // 'unshippedStock': 40,
862
- // '본사 창고': {
863
- // total: 65000,
864
- // scheduled: 2200,
865
- // },
866
- // },
867
- // {
868
- // 'id': 7,
869
- // 'productInfo': {
870
- // name: 'Sports Running Shoes',
871
- // property: '블랙, 270',
872
- // barcode: [{ code: '123456789013456785' }],
873
- // code: 'SHOES001BLK270',
874
- // category: '신발 > 운동화 > 러닝화',
875
- // season: '2025 (S/S)',
876
- // },
877
- // 'avgCost': 95000,
878
- // 'totalStock': 4200,
879
- // 'movingStock': 320,
880
- // 'unshippedStock': 160,
881
- // '본사 창고': {
882
- // total: 110000,
883
- // scheduled: 5500,
884
- // },
885
- // },
886
- // {
887
- // 'id': 8,
888
- // 'productInfo': {
889
- // name: 'Silk Blouse',
890
- // property: '크림, M',
891
- // barcode: [{ code: '123456789013456786' }],
892
- // code: 'BLOUSE001CRM',
893
- // category: '의류 > 상의 > 블라우스',
894
- // season: '2025 (S/S)',
895
- // },
896
- // 'avgCost': 135000,
897
- // 'totalStock': 1600,
898
- // 'movingStock': 95,
899
- // 'unshippedStock': 45,
900
- // '본사 창고': {
901
- // total: 72000,
902
- // scheduled: 3100,
903
- // },
904
- // },
905
- // {
906
- // 'id': 9,
907
- // 'productInfo': {
908
- // name: 'Canvas Tote Bag',
909
- // property: '베이지, L',
910
- // barcode: [{ code: '123456789013456787' }],
911
- // code: 'BAG001BGEL',
912
- // category: '가방 > 토트백 > 캔버스',
913
- // season: '2025 (S/S)',
914
- // },
915
- // 'avgCost': 45000,
916
- // 'totalStock': 3800,
917
- // 'movingStock': 280,
918
- // 'unshippedStock': 140,
919
- // '본사 창고': {
920
- // total: 88000,
921
- // scheduled: 4800,
922
- // },
923
- // },
924
- // {
925
- // 'id': 10,
926
- // 'productInfo': {
927
- // name: 'Wool Knit Sweater',
928
- // property: '차콜, XL',
929
- // barcode: [{ code: '123456789013456788' }],
930
- // code: 'KNIT001CHRXL',
931
- // category: '의류 > 상의 > 니트',
932
- // season: '2025 (F/W)',
933
- // },
934
- // 'avgCost': 98000,
935
- // 'totalStock': 2800,
936
- // 'movingStock': 190,
937
- // 'unshippedStock': 95,
938
- // '본사 창고': {
939
- // total: 76000,
940
- // scheduled: 3800,
941
- // },
942
- // },
943
- // {
944
- // 'id': 11,
945
- // 'productInfo': {
946
- // name: 'Baseball Cap',
947
- // property: '네이비, OS',
948
- // barcode: [{ code: '123456789013456789' }],
949
- // code: 'CAP001NAVY',
950
- // category: '액세서리 > 모자 > 야구모자',
951
- // season: '2025 (S/S)',
952
- // },
953
- // 'avgCost': 35000,
954
- // 'totalStock': 5400,
955
- // 'movingStock': 380,
956
- // 'unshippedStock': 190,
957
- // '본사 창고': {
958
- // total: 125000,
959
- // scheduled: 6200,
960
- // },
961
- // },
962
- // {
963
- // 'id': 12,
964
- // 'productInfo': {
965
- // name: 'Pleated Mini Skirt',
966
- // property: '체크, S',
967
- // barcode: [{ code: '123456789013456790' }],
968
- // code: 'SKIRT001CHKS',
969
- // category: '의류 > 하의 > 스커트',
970
- // season: '2025 (S/S)',
971
- // },
972
- // 'avgCost': 68000,
973
- // 'totalStock': 2200,
974
- // 'movingStock': 165,
975
- // 'unshippedStock': 82,
976
- // '본사 창고': {
977
- // total: 69000,
978
- // scheduled: 3400,
979
- // },
980
- // },
981
- // {
982
- // 'id': 13,
983
- // 'productInfo': {
984
- // name: 'Leather Belt',
985
- // property: '블랙, 95',
986
- // barcode: [{ code: '123456789013456791' }],
987
- // code: 'BELT001BLK95',
988
- // category: '액세서리 > 벨트 > 가죽벨트',
989
- // season: '2025 (F/W)',
990
- // },
991
- // 'avgCost': 55000,
992
- // 'totalStock': 1400,
993
- // 'movingStock': 85,
994
- // 'unshippedStock': 42,
995
- // '본사 창고': {
996
- // total: 58000,
997
- // scheduled: 2100,
998
- // },
999
- // },
1000
- // {
1001
- // 'id': 14,
1002
- // 'productInfo': {
1003
- // name: 'Hooded Sweatshirt',
1004
- // property: '그레이, L',
1005
- // barcode: [{ code: '123456789013456792' }],
1006
- // code: 'HOOD001GRAYL',
1007
- // category: '의류 > 상의 > 후디',
1008
- // season: '2025 (F/W)',
1009
- // },
1010
- // 'avgCost': 78000,
1011
- // 'totalStock': 3600,
1012
- // 'movingStock': 245,
1013
- // 'unshippedStock': 122,
1014
- // '본사 창고': {
1015
- // total: 92000,
1016
- // scheduled: 4500,
1017
- // },
1018
- // },
1019
- // {
1020
- // 'id': 15,
1021
- // 'productInfo': {
1022
- // name: 'Chain Necklace',
1023
- // property: '골드, OS',
1024
- // barcode: [{ code: '123456789013456793' }],
1025
- // code: 'NECK001GOLD',
1026
- // category: '액세서리 > 목걸이 > 체인',
1027
- // season: '2025 (S/S)',
1028
- // },
1029
- // 'avgCost': 85000,
1030
- // 'totalStock': 880,
1031
- // 'movingStock': 55,
1032
- // 'unshippedStock': 28,
1033
- // '본사 창고': {
1034
- // total: 42000,
1035
- // scheduled: 1800,
1036
- // },
1037
- // },
1038
- // {
1039
- // 'id': 16,
1040
- // 'productInfo': {
1041
- // name: 'Chino Pants',
1042
- // property: '베이지, 32',
1043
- // barcode: [{ code: '123456789013456794' }],
1044
- // code: 'CHINO001BGE32',
1045
- // category: '의류 > 하의 > 치노팬츠',
1046
- // season: '2025 (S/S)',
1047
- // },
1048
- // 'avgCost': 72000,
1049
- // 'totalStock': 2600,
1050
- // 'movingStock': 185,
1051
- // 'unshippedStock': 92,
1052
- // '본사 창고': {
1053
- // total: 78000,
1054
- // scheduled: 3200,
1055
- // },
1056
- // },
1057
- // {
1058
- // 'id': 17,
1059
- // 'productInfo': {
1060
- // name: 'Crossbody Bag',
1061
- // property: '블랙, M',
1062
- // barcode: [{ code: '123456789013456795' }],
1063
- // code: 'XBAG001BLKM',
1064
- // category: '가방 > 크로스백 > 미니',
1065
- // season: '2025 (F/W)',
1066
- // },
1067
- // 'avgCost': 125000,
1068
- // 'totalStock': 1200,
1069
- // 'movingStock': 75,
1070
- // 'unshippedStock': 38,
1071
- // '본사 창고': {
1072
- // total: 55000,
1073
- // scheduled: 2400,
1074
- // },
1075
- // },
1076
- // {
1077
- // 'id': 18,
1078
- // 'productInfo': {
1079
- // name: 'Flannel Shirt',
1080
- // property: '레드체크, L',
1081
- // barcode: [{ code: '123456789013456796' }],
1082
- // code: 'SHIRT001REDL',
1083
- // category: '의류 > 상의 > 셔츠',
1084
- // season: '2025 (F/W)',
1085
- // },
1086
- // 'avgCost': 65000,
1087
- // 'totalStock': 2100,
1088
- // 'movingStock': 155,
1089
- // 'unshippedStock': 78,
1090
- // '본사 창고': {
1091
- // total: 67000,
1092
- // scheduled: 2900,
1093
- // },
1094
- // },
1095
- // {
1096
- // 'id': 19,
1097
- // 'productInfo': {
1098
- // name: 'Statement Earrings',
1099
- // property: '실버, OS',
1100
- // barcode: [{ code: '123456789013456797' }],
1101
- // code: 'EAR001SLV',
1102
- // category: '액세서리 > 귀걸이 > 드롭형',
1103
- // season: '2025 (S/S)',
1104
- // },
1105
- // 'avgCost': 42000,
1106
- // 'totalStock': 650,
1107
- // 'movingStock': 45,
1108
- // 'unshippedStock': 22,
1109
- // '본사 창고': {
1110
- // total: 35000,
1111
- // scheduled: 1500,
1112
- // },
1113
- // },
1114
- // {
1115
- // 'id': 20,
1116
- // 'productInfo': {
1117
- // name: 'Cargo Shorts',
1118
- // property: '카키, XL',
1119
- // barcode: [{ code: '123456789013456798' }],
1120
- // code: 'SHORT001KHIXL',
1121
- // category: '의류 > 하의 > 반바지',
1122
- // season: '2025 (S/S)',
1123
- // },
1124
- // 'avgCost': 58000,
1125
- // 'totalStock': 1800,
1126
- // 'movingStock': 125,
1127
- // 'unshippedStock': 62,
1128
- // '본사 창고': {
1129
- // total: 62000,
1130
- // scheduled: 2600,
1131
- // },
1132
- // },
1133
- // {
1134
- // 'id': 21,
1135
- // 'productInfo': {
1136
- // name: 'Bomber Jacket',
1137
- // property: '올리브, M',
1138
- // barcode: [{ code: '123456789013456799' }],
1139
- // code: 'BOMB001OLVM',
1140
- // category: '의류 > 아우터 > 봄버재킷',
1141
- // season: '2025 (F/W)',
1142
- // },
1143
- // 'avgCost': 165000,
1144
- // 'totalStock': 950,
1145
- // 'movingStock': 68,
1146
- // 'unshippedStock': 34,
1147
- // '본사 창고': {
1148
- // total: 48000,
1149
- // scheduled: 2100,
1150
- // },
1151
- // },
1152
- // {
1153
- // 'id': 22,
1154
- // 'productInfo': {
1155
- // name: 'Sunglasses',
1156
- // property: '블랙, OS',
1157
- // barcode: [{ code: '123456789013456800' }],
1158
- // code: 'SUN001BLK',
1159
- // category: '액세서리 > 선글라스 > 웨이파러',
1160
- // season: '2025 (S/S)',
1161
- // },
1162
- // 'avgCost': 88000,
1163
- // 'totalStock': 720,
1164
- // 'movingStock': 52,
1165
- // 'unshippedStock': 26,
1166
- // '본사 창고': {
1167
- // total: 38000,
1168
- // scheduled: 1700,
1169
- // },
1170
- // },
1171
- // {
1172
- // 'id': 23,
1173
- // 'productInfo': {
1174
- // name: 'Midi Dress',
1175
- // property: '플로럴, S',
1176
- // barcode: [{ code: '123456789013456801' }],
1177
- // code: 'DRESS001FLRS',
1178
- // category: '의류 > 원피스 > 미디원피스',
1179
- // season: '2025 (S/S)',
1180
- // },
1181
- // 'avgCost': 145000,
1182
- // 'totalStock': 1400,
1183
- // 'movingStock': 95,
1184
- // 'unshippedStock': 48,
1185
- // '본사 창고': {
1186
- // total: 58000,
1187
- // scheduled: 2300,
1188
- // },
1189
- // },
1190
- // {
1191
- // 'id': 24,
1192
- // 'productInfo': {
1193
- // name: 'Sneakers High-top',
1194
- // property: '화이트, 265',
1195
- // barcode: [{ code: '123456789013456802' }],
1196
- // code: 'SNEAK001WHT265',
1197
- // category: '신발 > 운동화 > 하이탑',
1198
- // season: '2025 (S/S)',
1199
- // },
1200
- // 'avgCost': 112000,
1201
- // 'totalStock': 2200,
1202
- // 'movingStock': 165,
1203
- // 'unshippedStock': 82,
1204
- // '본사 창고': {
1205
- // total: 72000,
1206
- // scheduled: 3100,
1207
- // },
1208
- // },
1209
- // {
1210
- // 'id': 25,
1211
- // 'productInfo': {
1212
- // name: 'Cardigan',
1213
- // property: '베이지, M',
1214
- // barcode: [{ code: '123456789013456803' }],
1215
- // code: 'CARD001BGEM',
1216
- // category: '의류 > 상의 > 가디건',
1217
- // season: '2025 (F/W)',
1218
- // },
1219
- // 'avgCost': 92000,
1220
- // 'totalStock': 1600,
1221
- // 'movingStock': 115,
1222
- // 'unshippedStock': 58,
1223
- // '본사 창고': {
1224
- // total: 62000,
1225
- // scheduled: 2500,
1226
- // },
1227
- // },
1228
- // {
1229
- // 'id': 26,
1230
- // 'productInfo': {
1231
- // name: 'Bucket Hat',
1232
- // property: '데님, OS',
1233
- // barcode: [{ code: '123456789013456804' }],
1234
- // code: 'BUCK001DENIM',
1235
- // category: '액세서리 > 모자 > 버킷햇',
1236
- // season: '2025 (S/S)',
1237
- // },
1238
- // 'avgCost': 38000,
1239
- // 'totalStock': 3200,
1240
- // 'movingStock': 245,
1241
- // 'unshippedStock': 122,
1242
- // '본사 창고': {
1243
- // total: 85000,
1244
- // scheduled: 4200,
1245
- // },
1246
- // },
1247
- // {
1248
- // 'id': 27,
1249
- // 'productInfo': {
1250
- // name: 'Track Pants',
1251
- // property: '블랙, L',
1252
- // barcode: [{ code: '123456789013456805' }],
1253
- // code: 'TRACK001BLKL',
1254
- // category: '의류 > 하의 > 트랙팬츠',
1255
- // season: '2025 (F/W)',
1256
- // },
1257
- // 'avgCost': 65000,
1258
- // 'totalStock': 2800,
1259
- // 'movingStock': 195,
1260
- // 'unshippedStock': 98,
1261
- // '본사 창고': {
1262
- // total: 78000,
1263
- // scheduled: 3600,
1264
- // },
1265
- // },
1266
- // {
1267
- // 'id': 28,
1268
- // 'productInfo': {
1269
- // name: 'Leather Gloves',
1270
- // property: '브라운, M',
1271
- // barcode: [{ code: '123456789013456806' }],
1272
- // code: 'GLOVE001BRNM',
1273
- // category: '액세서리 > 장갑 > 가죽장갑',
1274
- // season: '2025 (F/W)',
1275
- // },
1276
- // 'avgCost': 78000,
1277
- // 'totalStock': 850,
1278
- // 'movingStock': 58,
1279
- // 'unshippedStock': 29,
1280
- // '본사 창고': {
1281
- // total: 42000,
1282
- // scheduled: 1800,
1283
- // },
1284
- // },
1285
- // {
1286
- // 'id': 29,
1287
- // 'productInfo': {
1288
- // name: 'Polo Shirt',
1289
- // property: '네이비, L',
1290
- // barcode: [{ code: '123456789013456807' }],
1291
- // code: 'POLO001NAVL',
1292
- // category: '의류 > 상의 > 폴로셔츠',
1293
- // season: '2025 (S/S)',
1294
- // },
1295
- // 'avgCost': 52000,
1296
- // 'totalStock': 3400,
1297
- // 'movingStock': 255,
1298
- // 'unshippedStock': 128,
1299
- // '본사 창고': {
1300
- // total: 88000,
1301
- // scheduled: 4500,
1302
- // },
1303
- // },
1304
- // {
1305
- // 'id': 30,
1306
- // 'productInfo': {
1307
- // name: 'Ankle Socks',
1308
- // property: '화이트, OS',
1309
- // barcode: [{ code: '123456789013456808' }],
1310
- // code: 'SOCK001WHT',
1311
- // category: '의류 > 양말 > 발목양말',
1312
- // season: '2025 (S/S)',
1313
- // },
1314
- // 'avgCost': 8000,
1315
- // 'totalStock': 8500,
1316
- // 'movingStock': 650,
1317
- // 'unshippedStock': 325,
1318
- // '본사 창고': {
1319
- // total: 180000,
1320
- // scheduled: 9500,
1321
- // },
1322
- // },
1323
- // {
1324
- // 'id': 31,
1325
- // 'productInfo': {
1326
- // name: 'Puffer Vest',
1327
- // property: '블랙, XL',
1328
- // barcode: [{ code: '123456789013456809' }],
1329
- // code: 'VEST001BLKXL',
1330
- // category: '의류 > 아우터 > 패딩조끼',
1331
- // season: '2025 (F/W)',
1332
- // },
1333
- // 'avgCost': 135000,
1334
- // 'totalStock': 1200,
1335
- // 'movingStock': 85,
1336
- // 'unshippedStock': 42,
1337
- // '본사 창고': {
1338
- // total: 52000,
1339
- // scheduled: 2200,
1340
- // },
1341
- // },
1342
- // {
1343
- // 'id': 32,
1344
- // 'productInfo': {
1345
- // name: 'Ring Set',
1346
- // property: '골드, OS',
1347
- // barcode: [{ code: '123456789013456810' }],
1348
- // code: 'RING001GOLD',
1349
- // category: '액세서리 > 반지 > 세트',
1350
- // season: '2025 (S/S)',
1351
- // },
1352
- // 'avgCost': 65000,
1353
- // 'totalStock': 480,
1354
- // 'movingStock': 35,
1355
- // 'unshippedStock': 18,
1356
- // '본사 창고': {
1357
- // total: 28000,
1358
- // scheduled: 1200,
1359
- // },
1360
- // },
1361
- // {
1362
- // 'id': 33,
1363
- // 'productInfo': {
1364
- // name: 'Maxi Coat',
1365
- // property: '캐멀, M',
1366
- // barcode: [{ code: '123456789013456811' }],
1367
- // code: 'COAT001CAMLM',
1368
- // category: '의류 > 아우터 > 롱코트',
1369
- // season: '2025 (F/W)',
1370
- // },
1371
- // 'avgCost': 285000,
1372
- // 'totalStock': 650,
1373
- // 'movingStock': 42,
1374
- // 'unshippedStock': 21,
1375
- // '본사 창고': {
1376
- // total: 32000,
1377
- // scheduled: 1400,
1378
- // },
1379
- // },
1380
- // {
1381
- // 'id': 34,
1382
- // 'productInfo': {
1383
- // name: 'Oxford Shoes',
1384
- // property: '브라운, 270',
1385
- // barcode: [{ code: '123456789013456812' }],
1386
- // code: 'OX001BRN270',
1387
- // category: '신발 > 드레스화 > 옥스퍼드',
1388
- // season: '2025 (F/W)',
1389
- // },
1390
- // 'avgCost': 195000,
1391
- // 'totalStock': 850,
1392
- // 'movingStock': 58,
1393
- // 'unshippedStock': 29,
1394
- // '본사 창고': {
1395
- // total: 42000,
1396
- // scheduled: 1700,
1397
- // },
1398
- // },
1399
- // {
1400
- // 'id': 35,
1401
- // 'productInfo': {
1402
- // name: 'Wrap Skirt',
1403
- // property: '올리브, S',
1404
- // barcode: [{ code: '123456789013456813' }],
1405
- // code: 'WRAP001OLVS',
1406
- // category: '의류 > 하의 > 랩스커트',
1407
- // season: '2025 (S/S)',
1408
- // },
1409
- // 'avgCost': 78000,
1410
- // 'totalStock': 1400,
1411
- // 'movingStock': 95,
1412
- // 'unshippedStock': 48,
1413
- // '본사 창고': {
1414
- // total: 58000,
1415
- // scheduled: 2300,
1416
- // },
1417
- // },
1418
- // {
1419
- // 'id': 36,
1420
- // 'productInfo': {
1421
- // name: 'Baseball Jacket',
1422
- // property: '네이비/화이트, L',
1423
- // barcode: [{ code: '123456789013456814' }],
1424
- // code: 'BASE001NWHL',
1425
- // category: '의류 > 아우터 > 야구점퍼',
1426
- // season: '2025 (S/S)',
1427
- // },
1428
- // 'avgCost': 125000,
1429
- // 'totalStock': 950,
1430
- // 'movingStock': 68,
1431
- // 'unshippedStock': 34,
1432
- // '본사 창고': {
1433
- // total: 48000,
1434
- // scheduled: 2100,
1435
- // },
1436
- // },
1437
- // {
1438
- // 'id': 37,
1439
- // 'productInfo': {
1440
- // name: 'Messenger Bag',
1441
- // property: '블랙, L',
1442
- // barcode: [{ code: '123456789013456815' }],
1443
- // code: 'MSG001BLKL',
1444
- // category: '가방 > 메신저백 > 대형',
1445
- // season: '2025 (F/W)',
1446
- // },
1447
- // 'avgCost': 158000,
1448
- // 'totalStock': 720,
1449
- // 'movingStock': 52,
1450
- // 'unshippedStock': 26,
1451
- // '본사 창고': {
1452
- // total: 38000,
1453
- // scheduled: 1600,
1454
- // },
1455
- // },
1456
- // {
1457
- // 'id': 38,
1458
- // 'productInfo': {
1459
- // name: 'Tank Top',
1460
- // property: '그레이, M',
1461
- // barcode: [{ code: '123456789013456816' }],
1462
- // code: 'TANK001GRAM',
1463
- // category: '의류 > 상의 > 나시',
1464
- // season: '2025 (S/S)',
1465
- // },
1466
- // 'avgCost': 28000,
1467
- // 'totalStock': 4200,
1468
- // 'movingStock': 315,
1469
- // 'unshippedStock': 158,
1470
- // '본사 창고': {
1471
- // total: 105000,
1472
- // scheduled: 5500,
1473
- // },
1474
- // },
1475
- // {
1476
- // 'id': 39,
1477
- // 'productInfo': {
1478
- // name: 'Beanie',
1479
- // property: '차콜, OS',
1480
- // barcode: [{ code: '123456789013456817' }],
1481
- // code: 'BEAN001CHR',
1482
- // category: '액세서리 > 모자 > 비니',
1483
- // season: '2025 (F/W)',
1484
- // },
1485
- // 'avgCost': 32000,
1486
- // 'totalStock': 2800,
1487
- // 'movingStock': 205,
1488
- // 'unshippedStock': 102,
1489
- // '본사 창고': {
1490
- // total: 78000,
1491
- // scheduled: 3800,
1492
- // },
1493
- // },
1494
- // {
1495
- // 'id': 40,
1496
- // 'productInfo': {
1497
- // name: 'Wide Leg Pants',
1498
- // property: '블랙, L',
1499
- // barcode: [{ code: '123456789013456818' }],
1500
- // code: 'WIDE001BLKL',
1501
- // category: '의류 > 하의 > 와이드팬츠',
1502
- // season: '2025 (S/S)',
1503
- // },
1504
- // 'avgCost': 85000,
1505
- // 'totalStock': 1800,
1506
- // 'movingStock': 125,
1507
- // 'unshippedStock': 62,
1508
- // '본사 창고': {
1509
- // total: 62000,
1510
- // scheduled: 2600,
1511
- // },
1512
- // },
1513
- // {
1514
- // 'id': 41,
1515
- // 'productInfo': {
1516
- // name: 'Clutch Bag',
1517
- // property: '골드, M',
1518
- // barcode: [{ code: '123456789013456819' }],
1519
- // code: 'CLUTCH001GLDM',
1520
- // category: '가방 > 클러치백 > 이브닝',
1521
- // season: '2025 (S/S)',
1522
- // },
1523
- // 'avgCost': 118000,
1524
- // 'totalStock': 450,
1525
- // 'movingStock': 32,
1526
- // 'unshippedStock': 16,
1527
- // '본사 창고': {
1528
- // total: 25000,
1529
- // scheduled: 1100,
1530
- // },
1531
- // },
1532
- // {
1533
- // 'id': 42,
1534
- // 'productInfo': {
1535
- // name: 'Thermal Underwear',
1536
- // property: '화이트, L',
1537
- // barcode: [{ code: '123456789013456820' }],
1538
- // code: 'THERM001WHTL',
1539
- // category: '의류 > 언더웨어 > 보온속옷',
1540
- // season: '2025 (F/W)',
1541
- // },
1542
- // 'avgCost': 45000,
1543
- // 'totalStock': 3200,
1544
- // 'movingStock': 245,
1545
- // 'unshippedStock': 122,
1546
- // '본사 창고': {
1547
- // total: 85000,
1548
- // scheduled: 4200,
1549
- // },
1550
- // },
1551
- // {
1552
- // 'id': 43,
1553
- // 'productInfo': {
1554
- // name: 'Pocket Watch',
1555
- // property: '실버, OS',
1556
- // barcode: [{ code: '123456789013456821' }],
1557
- // code: 'PWATCH001SLV',
1558
- // category: '액세서리 > 시계 > 포켓워치',
1559
- // season: '2025 (F/W)',
1560
- // },
1561
- // 'avgCost': 165000,
1562
- // 'totalStock': 280,
1563
- // 'movingStock': 18,
1564
- // 'unshippedStock': 9,
1565
- // '본사 창고': {
1566
- // total: 15000,
1567
- // scheduled: 650,
1568
- // },
1569
- // },
1570
- // {
1571
- // 'id': 44,
1572
- // 'productInfo': {
1573
- // name: 'Cropped Blazer',
1574
- // property: '핑크, S',
1575
- // barcode: [{ code: '123456789013456822' }],
1576
- // code: 'BLAZ001PNKS',
1577
- // category: '의류 > 아우터 > 블레이저',
1578
- // season: '2025 (S/S)',
1579
- // },
1580
- // 'avgCost': 185000,
1581
- // 'totalStock': 850,
1582
- // 'movingStock': 58,
1583
- // 'unshippedStock': 29,
1584
- // '본사 창고': {
1585
- // total: 42000,
1586
- // scheduled: 1700,
1587
- // },
1588
- // },
1589
- // {
1590
- // 'id': 45,
1591
- // 'productInfo': {
1592
- // name: 'Loafers',
1593
- // property: '블랙, 255',
1594
- // barcode: [{ code: '123456789013456823' }],
1595
- // code: 'LOAF001BLK255',
1596
- // category: '신발 > 로퍼 > 클래식',
1597
- // season: '2025 (F/W)',
1598
- // },
1599
- // 'avgCost': 145000,
1600
- // 'totalStock': 1200,
1601
- // 'movingStock': 85,
1602
- // 'unshippedStock': 42,
1603
- // '본사 창고': {
1604
- // total: 52000,
1605
- // scheduled: 2200,
1606
- // },
1607
- // },
1608
- // {
1609
- // 'id': 46,
1610
- // 'productInfo': {
1611
- // name: 'Gym Shorts',
1612
- // property: '블랙, L',
1613
- // barcode: [{ code: '123456789013456824' }],
1614
- // code: 'GYM001BLKL',
1615
- // category: '의류 > 스포츠웨어 > 반바지',
1616
- // season: '2025 (S/S)',
1617
- // },
1618
- // 'avgCost': 38000,
1619
- // 'totalStock': 2800,
1620
- // 'movingStock': 205,
1621
- // 'unshippedStock': 102,
1622
- // '본사 창고': {
1623
- // total: 78000,
1624
- // scheduled: 3800,
1625
- // },
1626
- // },
1627
- // {
1628
- // 'id': 47,
1629
- // 'productInfo': {
1630
- // name: 'Hair Accessory Set',
1631
- // property: '골드, OS',
1632
- // barcode: [{ code: '123456789013456825' }],
1633
- // code: 'HAIR001GLD',
1634
- // category: '액세서리 > 헤어액세서리 > 세트',
1635
- // season: '2025 (S/S)',
1636
- // },
1637
- // 'avgCost': 25000,
1638
- // 'totalStock': 1400,
1639
- // 'movingStock': 105,
1640
- // 'unshippedStock': 52,
1641
- // '본사 창고': {
1642
- // total: 48000,
1643
- // scheduled: 2400,
1644
- // },
1645
- // },
1646
- // {
1647
- // 'id': 48,
1648
- // 'productInfo': {
1649
- // name: 'Pea Coat',
1650
- // property: '네이비, M',
1651
- // barcode: [{ code: '123456789013456826' }],
1652
- // code: 'PEA001NAVM',
1653
- // category: '의류 > 아우터 > 피코트',
1654
- // season: '2025 (F/W)',
1655
- // },
1656
- // 'avgCost': 225000,
1657
- // 'totalStock': 650,
1658
- // 'movingStock': 42,
1659
- // 'unshippedStock': 21,
1660
- // '본사 창고': {
1661
- // total: 32000,
1662
- // scheduled: 1400,
1663
- // },
1664
- // },
1665
- // {
1666
- // 'id': 49,
1667
- // 'productInfo': {
1668
- // name: 'Canvas Sneakers',
1669
- // property: '화이트, 260',
1670
- // barcode: [{ code: '123456789013456827' }],
1671
- // code: 'CANV001WHT260',
1672
- // category: '신발 > 캔버스화 > 로우탑',
1673
- // season: '2025 (S/S)',
1674
- // },
1675
- // 'avgCost': 65000,
1676
- // 'totalStock': 3200,
1677
- // 'movingStock': 245,
1678
- // 'unshippedStock': 122,
1679
- // '본사 창고': {
1680
- // total: 85000,
1681
- // scheduled: 4200,
1682
- // },
1683
- // },
1684
- // {
1685
- // 'id': 50,
1686
- // 'productInfo': {
1687
- // name: 'Yoga Leggings',
1688
- // property: '블랙, M',
1689
- // barcode: [{ code: '123456789013456828' }],
1690
- // code: 'YOGA001BLKM',
1691
- // category: '의류 > 스포츠웨어 > 레깅스',
1692
- // season: '2025 (S/S)',
1693
- // },
1694
- // 'avgCost': 55000,
1695
- // 'totalStock': 2400,
1696
- // 'movingStock': 175,
1697
- // 'unshippedStock': 88,
1698
- // '본사 창고': {
1699
- // total: 68000,
1700
- // scheduled: 3200,
1701
- // },
1702
- // },
1703
- // {
1704
- // 'id': 51,
1705
- // 'productInfo': {
1706
- // name: 'Bracelet',
1707
- // property: '실버, OS',
1708
- // barcode: [{ code: '123456789013456829' }],
1709
- // code: 'BRAC001SLV',
1710
- // category: '액세서리 > 팔찌 > 체인',
1711
- // season: '2025 (S/S)',
1712
- // },
1713
- // 'avgCost': 48000,
1714
- // 'totalStock': 950,
1715
- // 'movingStock': 68,
1716
- // 'unshippedStock': 34,
1717
- // '본사 창고': {
1718
- // total: 42000,
1719
- // scheduled: 1800,
1720
- // },
1721
- // },
1722
- // {
1723
- // 'id': 52,
1724
- // 'productInfo': {
1725
- // name: 'Tweed Jacket',
1726
- // property: '그레이, L',
1727
- // barcode: [{ code: '123456789013456830' }],
1728
- // code: 'TWEED001GRAYL',
1729
- // category: '의류 > 아우터 > 트위드재킷',
1730
- // season: '2025 (F/W)',
1731
- // },
1732
- // 'avgCost': 195000,
1733
- // 'totalStock': 750,
1734
- // 'movingStock': 52,
1735
- // 'unshippedStock': 26,
1736
- // '본사 창고': {
1737
- // total: 38000,
1738
- // scheduled: 1600,
1739
- // },
1740
- // },
1741
- // {
1742
- // 'id': 53,
1743
- // 'productInfo': {
1744
- // name: 'Platform Sandals',
1745
- // property: '베이지, 240',
1746
- // barcode: [{ code: '123456789013456831' }],
1747
- // code: 'PLAT001BGE240',
1748
- // category: '신발 > 샌들 > 플랫폼',
1749
- // season: '2025 (S/S)',
1750
- // },
1751
- // 'avgCost': 88000,
1752
- // 'totalStock': 1400,
1753
- // 'movingStock': 95,
1754
- // 'unshippedStock': 48,
1755
- // '본사 창고': {
1756
- // total: 58000,
1757
- // scheduled: 2300,
1758
- // },
1759
- // },
1760
- // {
1761
- // 'id': 54,
1762
- // 'productInfo': {
1763
- // name: 'Compression Shirt',
1764
- // property: '네이비, L',
1765
- // barcode: [{ code: '123456789013456832' }],
1766
- // code: 'COMP001NAVL',
1767
- // category: '의류 > 스포츠웨어 > 압박셔츠',
1768
- // season: '2025 (S/S)',
1769
- // },
1770
- // 'avgCost': 42000,
1771
- // 'totalStock': 1800,
1772
- // 'movingStock': 125,
1773
- // 'unshippedStock': 62,
1774
- // '본사 창고': {
1775
- // total: 62000,
1776
- // scheduled: 2600,
1777
- // },
1778
- // },
1779
- // {
1780
- // 'id': 55,
1781
- // 'productInfo': {
1782
- // name: 'Fedora Hat',
1783
- // property: '브라운, OS',
1784
- // barcode: [{ code: '123456789013456833' }],
1785
- // code: 'FED001BRN',
1786
- // category: '액세서리 > 모자 > 페도라',
1787
- // season: '2025 (F/W)',
1788
- // },
1789
- // 'avgCost': 85000,
1790
- // 'totalStock': 480,
1791
- // 'movingStock': 35,
1792
- // 'unshippedStock': 18,
1793
- // '본사 창고': {
1794
- // total: 28000,
1795
- // scheduled: 1200,
1796
- // },
1797
- // },
1798
- // {
1799
- // 'id': 56,
1800
- // 'productInfo': {
1801
- // name: 'Bodycon Dress',
1802
- // property: '블랙, S',
1803
- // barcode: [{ code: '123456789013456834' }],
1804
- // code: 'BODY001BLKS',
1805
- // category: '의류 > 원피스 > 바디콘',
1806
- // season: '2025 (S/S)',
1807
- // },
1808
- // 'avgCost': 92000,
1809
- // 'totalStock': 1200,
1810
- // 'movingStock': 85,
1811
- // 'unshippedStock': 42,
1812
- // '본사 창고': {
1813
- // total: 52000,
1814
- // scheduled: 2200,
1815
- // },
1816
- // },
1817
- // {
1818
- // 'id': 57,
1819
- // 'productInfo': {
1820
- // name: 'Hiking Boots',
1821
- // property: '브라운, 275',
1822
- // barcode: [{ code: '123456789013456835' }],
1823
- // code: 'HIKE001BRN275',
1824
- // category: '신발 > 등산화 > 하이킹',
1825
- // season: '2025 (F/W)',
1826
- // },
1827
- // 'avgCost': 165000,
1828
- // 'totalStock': 850,
1829
- // 'movingStock': 58,
1830
- // 'unshippedStock': 29,
1831
- // '본사 창고': {
1832
- // total: 42000,
1833
- // scheduled: 1700,
1834
- // },
1835
- // },
1836
- // {
1837
- // 'id': 58,
1838
- // 'productInfo': {
1839
- // name: 'Sweatpants',
1840
- // property: '그레이, XL',
1841
- // barcode: [{ code: '123456789013456836' }],
1842
- // code: 'SWEAT001GRAXL',
1843
- // category: '의류 > 하의 > 스웻팬츠',
1844
- // season: '2025 (F/W)',
1845
- // },
1846
- // 'avgCost': 52000,
1847
- // 'totalStock': 2400,
1848
- // 'movingStock': 175,
1849
- // 'unshippedStock': 88,
1850
- // '본사 창고': {
1851
- // total: 68000,
1852
- // scheduled: 3200,
1853
- // },
1854
- // },
1855
- // {
1856
- // 'id': 59,
1857
- // 'productInfo': {
1858
- // name: 'Brooch',
1859
- // property: '골드, OS',
1860
- // barcode: [{ code: '123456789013456837' }],
1861
- // code: 'BRO001GLD',
1862
- // category: '액세서리 > 브로치 > 클래식',
1863
- // season: '2025 (F/W)',
1864
- // },
1865
- // 'avgCost': 68000,
1866
- // 'totalStock': 320,
1867
- // 'movingStock': 22,
1868
- // 'unshippedStock': 11,
1869
- // '본사 창고': {
1870
- // total: 18000,
1871
- // scheduled: 850,
1872
- // },
1873
- // },
1874
- // {
1875
- // 'id': 60,
1876
- // 'productInfo': {
1877
- // name: 'Windbreaker',
1878
- // property: '네이비, L',
1879
- // barcode: [{ code: '123456789013456838' }],
1880
- // code: 'WIND001NAVL',
1881
- // category: '의류 > 아우터 > 윈드브레이커',
1882
- // season: '2025 (S/S)',
1883
- // },
1884
- // 'avgCost': 78000,
1885
- // 'totalStock': 1600,
1886
- // 'movingStock': 115,
1887
- // 'unshippedStock': 58,
1888
- // '본사 창고': {
1889
- // total: 62000,
1890
- // scheduled: 2500,
1891
- // },
1892
- // },
1893
- // {
1894
- // 'id': 61,
1895
- // 'productInfo': {
1896
- // name: 'Ballet Flats',
1897
- // property: '베이지, 245',
1898
- // barcode: [{ code: '123456789013456839' }],
1899
- // code: 'BALL001BGE245',
1900
- // category: '신발 > 플랫슈즈 > 발레플랫',
1901
- // season: '2025 (S/S)',
1902
- // },
1903
- // 'avgCost': 75000,
1904
- // 'totalStock': 1800,
1905
- // 'movingStock': 125,
1906
- // 'unshippedStock': 62,
1907
- // '본사 창고': {
1908
- // total: 62000,
1909
- // scheduled: 2600,
1910
- // },
1911
- // },
1912
- // {
1913
- // 'id': 62,
1914
- // 'productInfo': {
1915
- // name: 'Vest Top',
1916
- // property: '화이트, M',
1917
- // barcode: [{ code: '123456789013456840' }],
1918
- // code: 'VEST001WHTM',
1919
- // category: '의류 > 상의 > 베스트탑',
1920
- // season: '2025 (S/S)',
1921
- // },
1922
- // 'avgCost': 32000,
1923
- // 'totalStock': 3200,
1924
- // 'movingStock': 245,
1925
- // 'unshippedStock': 122,
1926
- // '본사 창고': {
1927
- // total: 85000,
1928
- // scheduled: 4200,
1929
- // },
1930
- // },
1931
- // {
1932
- // 'id': 63,
1933
- // 'productInfo': {
1934
- // name: 'Tie Clip',
1935
- // property: '실버, OS',
1936
- // barcode: [{ code: '123456789013456841' }],
1937
- // code: 'TIE001SLV',
1938
- // category: '액세서리 > 넥타이핀 > 클립형',
1939
- // season: '2025 (F/W)',
1940
- // },
1941
- // 'avgCost': 45000,
1942
- // 'totalStock': 280,
1943
- // 'movingStock': 18,
1944
- // 'unshippedStock': 9,
1945
- // '본사 창고': {
1946
- // total: 15000,
1947
- // scheduled: 650,
1948
- // },
1949
- // },
1950
- // {
1951
- // 'id': 64,
1952
- // 'productInfo': {
1953
- // name: 'Quilted Jacket',
1954
- // property: '올리브, L',
1955
- // barcode: [{ code: '123456789013456842' }],
1956
- // code: 'QUILT001OLVL',
1957
- // category: '의류 > 아우터 > 퀼팅재킷',
1958
- // season: '2025 (F/W)',
1959
- // },
1960
- // 'avgCost': 145000,
1961
- // 'totalStock': 950,
1962
- // 'movingStock': 68,
1963
- // 'unshippedStock': 34,
1964
- // '본사 창고': {
1965
- // total: 48000,
1966
- // scheduled: 2100,
1967
- // },
1968
- // },
1969
- // {
1970
- // 'id': 65,
1971
- // 'productInfo': {
1972
- // name: 'Wedge Heels',
1973
- // property: '블랙, 250',
1974
- // barcode: [{ code: '123456789013456843' }],
1975
- // code: 'WEDGE001BLK250',
1976
- // category: '신발 > 하이힐 > 웨지힐',
1977
- // season: '2025 (S/S)',
1978
- // },
1979
- // 'avgCost': 98000,
1980
- // 'totalStock': 1200,
1981
- // 'movingStock': 85,
1982
- // 'unshippedStock': 42,
1983
- // '본사 창고': {
1984
- // total: 52000,
1985
- // scheduled: 2200,
1986
- // },
1987
- // },
1988
- // {
1989
- // 'id': 66,
1990
- // 'productInfo': {
1991
- // name: 'Sweat Shorts',
1992
- // property: '그레이, L',
1993
- // barcode: [{ code: '123456789013456844' }],
1994
- // code: 'SWSHORT001GRAL',
1995
- // category: '의류 > 스포츠웨어 > 스웻반바지',
1996
- // season: '2025 (S/S)',
1997
- // },
1998
- // 'avgCost': 35000,
1999
- // 'totalStock': 2800,
2000
- // 'movingStock': 205,
2001
- // 'unshippedStock': 102,
2002
- // '본사 창고': {
2003
- // total: 78000,
2004
- // scheduled: 3800,
2005
- // },
2006
- // },
2007
- // {
2008
- // 'id': 67,
2009
- // 'productInfo': {
2010
- // name: 'Cufflinks',
2011
- // property: '골드, OS',
2012
- // barcode: [{ code: '123456789013456845' }],
2013
- // code: 'CUFF001GLD',
2014
- // category: '액세서리 > 커프스 > 골드',
2015
- // season: '2025 (F/W)',
2016
- // },
2017
- // 'avgCost': 125000,
2018
- // 'totalStock': 180,
2019
- // 'movingStock': 12,
2020
- // 'unshippedStock': 6,
2021
- // '본사 창고': {
2022
- // total: 10000,
2023
- // scheduled: 450,
2024
- // },
2025
- // },
2026
- // {
2027
- // 'id': 68,
2028
- // 'productInfo': {
2029
- // name: 'Trench Coat',
2030
- // property: '베이지, M',
2031
- // barcode: [{ code: '123456789013456846' }],
2032
- // code: 'TRENCH001BGEM',
2033
- // category: '의류 > 아우터 > 트렌치코트',
2034
- // season: '2025 (F/W)',
2035
- // },
2036
- // 'avgCost': 245000,
2037
- // 'totalStock': 480,
2038
- // 'movingStock': 32,
2039
- // 'unshippedStock': 16,
2040
- // '본사 창고': {
2041
- // total: 25000,
2042
- // scheduled: 1100,
2043
- // },
2044
- // },
2045
- // {
2046
- // 'id': 69,
2047
- // 'productInfo': {
2048
- // name: 'Slip-on Shoes',
2049
- // property: '화이트, 265',
2050
- // barcode: [{ code: '123456789013456847' }],
2051
- // code: 'SLIP001WHT265',
2052
- // category: '신발 > 슬립온 > 캐주얼',
2053
- // season: '2025 (S/S)',
2054
- // },
2055
- // 'avgCost': 68000,
2056
- // 'totalStock': 1600,
2057
- // 'movingStock': 115,
2058
- // 'unshippedStock': 58,
2059
- // '본사 창고': {
2060
- // total: 62000,
2061
- // scheduled: 2500,
2062
- // },
2063
- // },
2064
- // {
2065
- // 'id': 70,
2066
- // 'productInfo': {
2067
- // name: 'Crop Top',
2068
- // property: '핑크, S',
2069
- // barcode: [{ code: '123456789013456848' }],
2070
- // code: 'CROP001PNKS',
2071
- // category: '의류 > 상의 > 크롭탑',
2072
- // season: '2025 (S/S)',
2073
- // },
2074
- // 'avgCost': 38000,
2075
- // 'totalStock': 2400,
2076
- // 'movingStock': 175,
2077
- // 'unshippedStock': 88,
2078
- // '본사 창고': {
2079
- // total: 68000,
2080
- // scheduled: 3200,
2081
- // },
2082
- // },
2083
- // {
2084
- // 'id': 71,
2085
- // 'productInfo': {
2086
- // name: 'Wallet',
2087
- // property: '블랙, OS',
2088
- // barcode: [{ code: '123456789013456849' }],
2089
- // code: 'WALL001BLK',
2090
- // category: '액세서리 > 지갑 > 장지갑',
2091
- // season: '2025 (F/W)',
2092
- // },
2093
- // 'avgCost': 85000,
2094
- // 'totalStock': 950,
2095
- // 'movingStock': 68,
2096
- // 'unshippedStock': 34,
2097
- // '본사 창고': {
2098
- // total: 42000,
2099
- // scheduled: 1800,
2100
- // },
2101
- // },
2102
- // {
2103
- // 'id': 72,
2104
- // 'productInfo': {
2105
- // name: 'Parka',
2106
- // property: '카키, XL',
2107
- // barcode: [{ code: '123456789013456850' }],
2108
- // code: 'PARK001KHIXL',
2109
- // category: '의류 > 아우터 > 파카',
2110
- // season: '2025 (F/W)',
2111
- // },
2112
- // 'avgCost': 185000,
2113
- // 'totalStock': 720,
2114
- // 'movingStock': 52,
2115
- // 'unshippedStock': 26,
2116
- // '본사 창고': {
2117
- // total: 38000,
2118
- // scheduled: 1600,
2119
- // },
2120
- // },
2121
- // {
2122
- // 'id': 73,
2123
- // 'productInfo': {
2124
- // name: 'Moccasins',
2125
- // property: '브라운, 270',
2126
- // barcode: [{ code: '123456789013456851' }],
2127
- // code: 'MOC001BRN270',
2128
- // category: '신발 > 모카신 > 가죽',
2129
- // season: '2025 (S/S)',
2130
- // },
2131
- // 'avgCost': 125000,
2132
- // 'totalStock': 850,
2133
- // 'movingStock': 58,
2134
- // 'unshippedStock': 29,
2135
- // '본사 창고': {
2136
- // total: 42000,
2137
- // scheduled: 1700,
2138
- // },
2139
- // },
2140
- // {
2141
- // 'id': 74,
2142
- // 'productInfo': {
2143
- // name: 'Sports Bra',
2144
- // property: '블랙, M',
2145
- // barcode: [{ code: '123456789013456852' }],
2146
- // code: 'SBRA001BLKM',
2147
- // category: '의류 > 스포츠웨어 > 스포츠브라',
2148
- // season: '2025 (S/S)',
2149
- // },
2150
- // 'avgCost': 45000,
2151
- // 'totalStock': 1800,
2152
- // 'movingStock': 125,
2153
- // 'unshippedStock': 62,
2154
- // '본사 창고': {
2155
- // total: 62000,
2156
- // scheduled: 2600,
2157
- // },
2158
- // },
2159
- // {
2160
- // 'id': 75,
2161
- // 'productInfo': {
2162
- // name: 'Keychain',
2163
- // property: '실버, OS',
2164
- // barcode: [{ code: '123456789013456853' }],
2165
- // code: 'KEY001SLV',
2166
- // category: '액세서리 > 키체인 > 메탈',
2167
- // season: '2025 (S/S)',
2168
- // },
2169
- // 'avgCost': 18000,
2170
- // 'totalStock': 2800,
2171
- // 'movingStock': 205,
2172
- // 'unshippedStock': 102,
2173
- // '본사 창고': {
2174
- // total: 78000,
2175
- // scheduled: 3800,
2176
- // },
2177
- // },
2178
- // {
2179
- // 'id': 76,
2180
- // 'productInfo': {
2181
- // name: 'Duffle Coat',
2182
- // property: '네이비, L',
2183
- // barcode: [{ code: '123456789013456854' }],
2184
- // code: 'DUFF001NAVL',
2185
- // category: '의류 > 아우터 > 더플코트',
2186
- // season: '2025 (F/W)',
2187
- // },
2188
- // 'avgCost': 225000,
2189
- // 'totalStock': 480,
2190
- // 'movingStock': 32,
2191
- // 'unshippedStock': 16,
2192
- // '본사 창고': {
2193
- // total: 25000,
2194
- // scheduled: 1100,
2195
- // },
2196
- // },
2197
- // {
2198
- // 'id': 77,
2199
- // 'productInfo': {
2200
- // name: 'High-top Sneakers',
2201
- // property: '레드, 260',
2202
- // barcode: [{ code: '123456789013456855' }],
2203
- // code: 'HSNEAK001RED260',
2204
- // category: '신발 > 운동화 > 하이탑스니커즈',
2205
- // season: '2025 (S/S)',
2206
- // },
2207
- // 'avgCost': 95000,
2208
- // 'totalStock': 1400,
2209
- // 'movingStock': 95,
2210
- // 'unshippedStock': 48,
2211
- // '본사 창고': {
2212
- // total: 58000,
2213
- // scheduled: 2300,
2214
- // },
2215
- // },
2216
- // {
2217
- // 'id': 78,
2218
- // 'productInfo': {
2219
- // name: 'Tube Top',
2220
- // property: '화이트, S',
2221
- // barcode: [{ code: '123456789013456856' }],
2222
- // code: 'TUBE001WHTS',
2223
- // category: '의류 > 상의 > 튜브톱',
2224
- // season: '2025 (S/S)',
2225
- // },
2226
- // 'avgCost': 28000,
2227
- // 'totalStock': 2200,
2228
- // 'movingStock': 165,
2229
- // 'unshippedStock': 82,
2230
- // '본사 창고': {
2231
- // total: 69000,
2232
- // scheduled: 3400,
2233
- // },
2234
- // },
2235
- // {
2236
- // 'id': 79,
2237
- // 'productInfo': {
2238
- // name: 'Phone Case',
2239
- // property: '블랙, OS',
2240
- // barcode: [{ code: '123456789013456857' }],
2241
- // code: 'PHONE001BLK',
2242
- // category: '액세서리 > 폰케이스 > 실리콘',
2243
- // season: '2025 (S/S)',
2244
- // },
2245
- // 'avgCost': 15000,
2246
- // 'totalStock': 4200,
2247
- // 'movingStock': 315,
2248
- // 'unshippedStock': 158,
2249
- // '본사 창고': {
2250
- // total: 105000,
2251
- // scheduled: 5500,
2252
- // },
2253
- // },
2254
- // {
2255
- // 'id': 80,
2256
- // 'productInfo': {
2257
- // name: 'Overcoat',
2258
- // property: '차콜, L',
2259
- // barcode: [{ code: '123456789013456858' }],
2260
- // code: 'OVER001CHRL',
2261
- // category: '의류 > 아우터 > 오버코트',
2262
- // season: '2025 (F/W)',
2263
- // },
2264
- // 'avgCost': 285000,
2265
- // 'totalStock': 350,
2266
- // 'movingStock': 22,
2267
- // 'unshippedStock': 11,
2268
- // '본사 창고': {
2269
- // total: 18000,
2270
- // scheduled: 850,
2271
- // },
2272
- // },
2273
- // {
2274
- // 'id': 81,
2275
- // 'productInfo': {
2276
- // name: 'Espadrilles',
2277
- // property: '베이지, 240',
2278
- // barcode: [{ code: '123456789013456859' }],
2279
- // code: 'ESP001BGE240',
2280
- // category: '신발 > 에스파드리유 > 캔버스',
2281
- // season: '2025 (S/S)',
2282
- // },
2283
- // 'avgCost': 58000,
2284
- // 'totalStock': 1200,
2285
- // 'movingStock': 85,
2286
- // 'unshippedStock': 42,
2287
- // '본사 창고': {
2288
- // total: 52000,
2289
- // scheduled: 2200,
2290
- // },
2291
- // },
2292
- // {
2293
- // 'id': 82,
2294
- // 'productInfo': {
2295
- // name: 'Tracksuit Set',
2296
- // property: '그레이, L',
2297
- // barcode: [{ code: '123456789013456860' }],
2298
- // code: 'TRACK001GRAL',
2299
- // category: '의류 > 스포츠웨어 > 트랙수트',
2300
- // season: '2025 (F/W)',
2301
- // },
2302
- // 'avgCost': 125000,
2303
- // 'totalStock': 950,
2304
- // 'movingStock': 68,
2305
- // 'unshippedStock': 34,
2306
- // '본사 창고': {
2307
- // total: 48000,
2308
- // scheduled: 2100,
2309
- // },
2310
- // },
2311
- // {
2312
- // 'id': 83,
2313
- // 'productInfo': {
2314
- // name: 'Hair Band',
2315
- // property: '블랙, OS',
2316
- // barcode: [{ code: '123456789013456861' }],
2317
- // code: 'HBAND001BLK',
2318
- // category: '액세서리 > 헤어밴드 > 패브릭',
2319
- // season: '2025 (S/S)',
2320
- // },
2321
- // 'avgCost': 12000,
2322
- // 'totalStock': 3600,
2323
- // 'movingStock': 275,
2324
- // 'unshippedStock': 138,
2325
- // '본사 창고': {
2326
- // total: 95000,
2327
- // scheduled: 4800,
2328
- // },
2329
- // },
2330
- // {
2331
- // 'id': 84,
2332
- // 'productInfo': {
2333
- // name: 'Cape Coat',
2334
- // property: '와인, M',
2335
- // barcode: [{ code: '123456789013456862' }],
2336
- // code: 'CAPE001WINM',
2337
- // category: '의류 > 아우터 > 케이프코트',
2338
- // season: '2025 (F/W)',
2339
- // },
2340
- // 'avgCost': 195000,
2341
- // 'totalStock': 420,
2342
- // 'movingStock': 28,
2343
- // 'unshippedStock': 14,
2344
- // '본사 창고': {
2345
- // total: 22000,
2346
- // scheduled: 950,
2347
- // },
2348
- // },
2349
- // {
2350
- // 'id': 85,
2351
- // 'productInfo': {
2352
- // name: 'Boat Shoes',
2353
- // property: '브라운, 265',
2354
- // barcode: [{ code: '123456789013456863' }],
2355
- // code: 'BOAT001BRN265',
2356
- // category: '신발 > 보트슈즈 > 가죽',
2357
- // season: '2025 (S/S)',
2358
- // },
2359
- // 'avgCost': 115000,
2360
- // 'totalStock': 850,
2361
- // 'movingStock': 58,
2362
- // 'unshippedStock': 29,
2363
- // '본사 창고': {
2364
- // total: 42000,
2365
- // scheduled: 1700,
2366
- // },
2367
- // },
2368
- // {
2369
- // 'id': 86,
2370
- // 'productInfo': {
2371
- // name: 'Joggers',
2372
- // property: '블랙, XL',
2373
- // barcode: [{ code: '123456789013456864' }],
2374
- // code: 'JOG001BLKXL',
2375
- // category: '의류 > 하의 > 조거팬츠',
2376
- // season: '2025 (F/W)',
2377
- // },
2378
- // 'avgCost': 65000,
2379
- // 'totalStock': 1800,
2380
- // 'movingStock': 125,
2381
- // 'unshippedStock': 62,
2382
- // '본사 창고': {
2383
- // total: 62000,
2384
- // scheduled: 2600,
2385
- // },
2386
- // },
2387
- // {
2388
- // 'id': 87,
2389
- // 'productInfo': {
2390
- // name: 'Anklet',
2391
- // property: '실버, OS',
2392
- // barcode: [{ code: '123456789013456865' }],
2393
- // code: 'ANKL001SLV',
2394
- // category: '액세서리 > 발찌 > 체인',
2395
- // season: '2025 (S/S)',
2396
- // },
2397
- // 'avgCost': 35000,
2398
- // 'totalStock': 720,
2399
- // 'movingStock': 52,
2400
- // 'unshippedStock': 26,
2401
- // '본사 창고': {
2402
- // total: 38000,
2403
- // scheduled: 1600,
2404
- // },
2405
- // },
2406
- // {
2407
- // 'id': 88,
2408
- // 'productInfo': {
2409
- // name: 'Field Jacket',
2410
- // property: '올리브, L',
2411
- // barcode: [{ code: '123456789013456866' }],
2412
- // code: 'FIELD001OLVL',
2413
- // category: '의류 > 아우터 > 필드재킷',
2414
- // season: '2025 (F/W)',
2415
- // },
2416
- // 'avgCost': 155000,
2417
- // 'totalStock': 680,
2418
- // 'movingStock': 45,
2419
- // 'unshippedStock': 22,
2420
- // '본사 창고': {
2421
- // total: 35000,
2422
- // scheduled: 1400,
2423
- // },
2424
- // },
2425
- // {
2426
- // 'id': 89,
2427
- // 'productInfo': {
2428
- // name: 'Mary Jane Shoes',
2429
- // property: '블랙, 245',
2430
- // barcode: [{ code: '123456789013456867' }],
2431
- // code: 'MARY001BLK245',
2432
- // category: '신발 > 메리제인 > 가죽',
2433
- // season: '2025 (S/S)',
2434
- // },
2435
- // 'avgCost': 95000,
2436
- // 'totalStock': 1200,
2437
- // 'movingStock': 85,
2438
- // 'unshippedStock': 42,
2439
- // '본사 창고': {
2440
- // total: 52000,
2441
- // scheduled: 2200,
2442
- // },
2443
- // },
2444
- // {
2445
- // 'id': 90,
2446
- // 'productInfo': {
2447
- // name: 'Skater Dress',
2448
- // property: '블랙, M',
2449
- // barcode: [{ code: '123456789013456868' }],
2450
- // code: 'DRESS001BLKM',
2451
- // category: '의류 > 원피스 > 스케이터드레스',
2452
- // season: '2025 (S/S)',
2453
- // },
2454
- // 'avgCost': 95000,
2455
- // 'totalStock': 900,
2456
- // 'movingStock': 60,
2457
- // 'unshippedStock': 30,
2458
- // '본사 창고': {
2459
- // total: 45000,
2460
- // scheduled: 2000,
2461
- // },
2462
- // },
2463
- // {
2464
- // 'id': 91,
2465
- // 'productInfo': {
2466
- // name: 'Pencil Skirt',
2467
- // property: '네이비, S',
2468
- // barcode: [{ code: '123456789013456869' }],
2469
- // code: 'SKIRT001NAVS',
2470
- // category: '의류 > 하의 > 펜슬스커트',
2471
- // season: '2025 (F/W)',
2472
- // },
2473
- // 'avgCost': 78000,
2474
- // 'totalStock': 1100,
2475
- // 'movingStock': 75,
2476
- // 'unshippedStock': 37,
2477
- // '본사 창고': {
2478
- // total: 50000,
2479
- // scheduled: 2500,
2480
- // },
2481
- // },
2482
- // {
2483
- // 'id': 92,
2484
- // 'productInfo': {
2485
- // name: 'Harem Pants',
2486
- // property: '블랙, L',
2487
- // barcode: [{ code: '123456789013456870' }],
2488
- // code: 'PANTS001BLKL',
2489
- // category: '의류 > 하의 > 해리팬츠',
2490
- // season: '2025 (S/S)',
2491
- // },
2492
- // 'avgCost': 68000,
2493
- // 'totalStock': 1300,
2494
- // 'movingStock': 90,
2495
- // 'unshippedStock': 45,
2496
- // '본사 창고': {
2497
- // total: 55000,
2498
- // scheduled: 3000,
2499
- // },
2500
- // },
2501
- // {
2502
- // 'id': 93,
2503
- // 'productInfo': {
2504
- // name: 'Kimono Jacket',
2505
- // property: '플로럴, M',
2506
- // barcode: [{ code: '123456789013456871' }],
2507
- // code: 'JACKET001FLRM',
2508
- // category: '의류 > 아우터 > 기모노재킷',
2509
- // season: '2025 (F/W)',
2510
- // },
2511
- // 'avgCost': 135000,
2512
- // 'totalStock': 700,
2513
- // 'movingStock': 50,
2514
- // 'unshippedStock': 25,
2515
- // '본사 창고': {
2516
- // total: 40000,
2517
- // scheduled: 1800,
2518
- // },
2519
- // },
2520
- // {
2521
- // 'id': 94,
2522
- // 'productInfo': {
2523
- // name: 'Puffer Jacket',
2524
- // property: '레드, L',
2525
- // barcode: [{ code: '123456789013456872' }],
2526
- // code: 'PUFFER001REDL',
2527
- // category: '의류 > 아우터 > 패딩자켓',
2528
- // season: '2025 (F/W)',
2529
- // },
2530
- // 'avgCost': 198000,
2531
- // 'totalStock': 600,
2532
- // 'movingStock': 40,
2533
- // 'unshippedStock': 20,
2534
- // '본사 창고': {
2535
- // total: 35000,
2536
- // scheduled: 1500,
2537
- // },
2538
- // },
2539
- // {
2540
- // 'id': 95,
2541
- // 'productInfo': {
2542
- // name: 'Turtleneck Sweater',
2543
- // property: '아이보리, M',
2544
- // barcode: [{ code: '123456789013456873' }],
2545
- // code: 'KNIT002IVRM',
2546
- // category: '의류 > 상의 > 터틀넥니트',
2547
- // season: '2025 (F/W)',
2548
- // },
2549
- // 'avgCost': 85000,
2550
- // 'totalStock': 800,
2551
- // 'movingStock': 55,
2552
- // 'unshippedStock': 28,
2553
- // '본사 창고': {
2554
- // total: 45000,
2555
- // scheduled: 2000,
2556
- // },
2557
- // },
2558
- // {
2559
- // 'id': 96,
2560
- // 'productInfo': {
2561
- // name: 'Cargo Pants',
2562
- // property: '카키, XL',
2563
- // barcode: [{ code: '123456789013456874' }],
2564
- // code: 'PANTS002KHIXL',
2565
- // category: '의류 > 하의 > 카고팬츠',
2566
- // season: '2025 (S/S)',
2567
- // },
2568
- // 'avgCost': 78000,
2569
- // 'totalStock': 900,
2570
- // 'movingStock': 60,
2571
- // 'unshippedStock': 30,
2572
- // '본사 창고': {
2573
- // total: 50000,
2574
- // scheduled: 2500,
2575
- // },
2576
- // },
2577
- // {
2578
- // 'id': 97,
2579
- // 'productInfo': {
2580
- // name: 'Belted Coat',
2581
- // property: '브라운, M',
2582
- // barcode: [{ code: '123456789013456875' }],
2583
- // code: 'COAT002BRNM',
2584
- // category: '의류 > 아우터 > 벨트코트',
2585
- // season: '2025 (F/W)',
2586
- // },
2587
- // 'avgCost': 198000,
2588
- // 'totalStock': 550,
2589
- // 'movingStock': 37,
2590
- // 'unshippedStock': 18,
2591
- // '본사 창고': {
2592
- // total: 38000,
2593
- // scheduled: 1600,
2594
- // },
2595
- // },
2596
- // {
2597
- // 'id': 98,
2598
- // 'productInfo': {
2599
- // name: 'Double-breasted Blazer',
2600
- // property: '네이비, L',
2601
- // barcode: [{ code: '123456789013456876' }],
2602
- // code: 'BLAZ002NAVL',
2603
- // category: '의류 > 아우터 > 더블재킷',
2604
- // season: '2025 (F/W)',
2605
- // },
2606
- // 'avgCost': 185000,
2607
- // 'totalStock': 700,
2608
- // 'movingStock': 45,
2609
- // 'unshippedStock': 22,
2610
- // '본사 창고': {
2611
- // total: 40000,
2612
- // scheduled: 1800,
2613
- // },
2614
- // },
2615
- // {
2616
- // 'id': 99,
2617
- // 'productInfo': {
2618
- // name: 'Peacoat',
2619
- // property: '블랙, M',
2620
- // barcode: [{ code: '123456789013456877' }],
2621
- // code: 'PEA002BLKM',
2622
- // category: '의류 > 아우터 > 피코트',
2623
- // season: '2025 (F/W)',
2624
- // },
2625
- // 'avgCost': 225000,
2626
- // 'totalStock': 600,
2627
- // 'movingStock': 40,
2628
- // 'unshippedStock': 20,
2629
- // '본사 창고': {
2630
- // total: 35000,
2631
- // scheduled: 1500,
2632
- // },
2633
- // },
2634
- // {
2635
- // 'id': 100,
2636
- // 'productInfo': {
2637
- // name: 'Trench Coat',
2638
- // property: '베이지, L',
2639
- // barcode: [{ code: '123456789013456878' }],
2640
- // code: 'TRENCH002BGEL',
2641
- // category: '의류 > 아우터 > 트렌치코트',
2642
- // season: '2025 (F/W)',
2643
- // },
2644
- // 'avgCost': 245000,
2645
- // 'totalStock': 480,
2646
- // 'movingStock': 32,
2647
- // 'unshippedStock': 16,
2648
- // '본사 창고': {
2649
- // total: 25000,
2650
- // scheduled: 1100,
2651
- // },
2652
- // },
2653
- // ];
2654
- // table.columns = [
2655
- // {
2656
- // name: 'productInfo',
2657
- // label: '품목명 / 품목 속성',
2658
- // field: 'productInfo',
2659
- // align: 'left',
2660
- // width: '220',
2661
- // },
2662
- // {
2663
- // name: 'productCode',
2664
- // label: '품목 코드 / 품목 분류',
2665
- // field: 'email',
2666
- // align: 'center',
2667
- // width: '160',
2668
- // },
2669
- // {
2670
- // name: 'avgCost',
2671
- // label: '평균 원가',
2672
- // field: 'avgCost',
2673
- // align: 'center',
2674
- // width: '100',
2675
- // format: value => `${value.toLocaleString()} 원`,
2676
- // },
2677
- // {
2678
- // name: 'totalStock',
2679
- // label: '총 재고',
2680
- // field: 'totalStock',
2681
- // align: 'center',
2682
- // width: '100',
2683
- // format: value => `${value.toLocaleString()} 개`,
2684
- // },
2685
- // {
2686
- // name: 'movingStock',
2687
- // label: '이동 중',
2688
- // field: 'movingStock',
2689
- // align: 'center',
2690
- // width: '100',
2691
- // format: value => `${value.toLocaleString()} 개`,
2692
- // tooltip: [
2693
- // '이동 중 재고는 출발지에서 출고 되었으나,',
2694
- // '도착지로 아직 입고되지 않은 수량입니다.',
2695
- // ],
2696
- // tooltipOptions: { placement: 'bottom' },
2697
- // },
2698
- // {
2699
- // name: 'unshippedStock',
2700
- // label: '미발송',
2701
- // field: 'unshippedStock',
2702
- // align: 'center',
2703
- // width: '100',
2704
- // format: value => `${value.toLocaleString()} 개`,
2705
- // },
2706
- // ];
2707
- // table.height = '600px';
2708
- // function handlePagination(page) {
2709
- // const pagination = table.pagination || { page: 1, rowsPerPage: 10 };
2710
- // const res = getMockStockData(page, pagination.rowsPerPage);
2711
- // console.log(res);
2712
- // table.pagination = res.pagination;
2713
- // table.rows = res.data;
2714
- // }
2715
- // table.addEventListener('sdPageChange', event => {
2716
- // handlePagination(event.detail);
2717
- // });
2718
- // function getMockStockData(page = 1, rowsPerPage = 10) {
2719
- // const startIndex = (page - 1) * rowsPerPage;
2720
- // const endIndex = startIndex + rowsPerPage;
2721
- // const paginatedData = ROWS.slice(startIndex, endIndex);
2722
- // return {
2723
- // data: paginatedData,
2724
- // pagination: {
2725
- // page,
2726
- // rowsPerPage,
2727
- // totalItems: ROWS.length,
2728
- // lastPage: Math.ceil(ROWS.length / rowsPerPage),
2729
- // },
2730
- // };
2731
- // }
2732
- // function fetchData() {
2733
- // const pagination = table.pagination || { page: 1, rowsPerPage: 10 };
2734
- // const res = getMockStockData(pagination.page, pagination.rowsPerPage);
2735
- // console.log(res);
2736
- // table.pagination = res.pagination;
2737
- // table.rows = res.data;
2738
- // }
2739
- // test.addEventListener('click', () => {
2740
- // fetchData();
2741
- // });
2742
- // });
2743
- //# sourceMappingURL=sd-table-backup.js.map