gm-printer 10.27.7 → 10.28.0-beta.1

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gm-printer",
3
- "version": "10.27.7",
3
+ "version": "10.28.0-beta.1",
4
4
  "description": "diy printer",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -114,4 +114,4 @@
114
114
  "dependencies": {
115
115
  "qrcode.react": "^0.9.2"
116
116
  }
117
- }
117
+ }
@@ -191,7 +191,8 @@ class CommonContextMenu extends React.Component {
191
191
  const arr = name.split('.')
192
192
  const { className } = editStore.config.contents[arr[2]]
193
193
  const isActive = c => className === c
194
-
194
+ const { config } = editStore
195
+ const isLongPrint = config?.page?.type === 'longPrint'
195
196
  return (
196
197
  <>
197
198
  {renderTableAction && (
@@ -204,7 +205,7 @@ class CommonContextMenu extends React.Component {
204
205
  <div onClick={this.handleRemove}>{i18next.t('移除列')}</div>
205
206
  <Hr />
206
207
 
207
- {_.map(tableClassNameList, o => (
208
+ {!isLongPrint && <> {_.map(tableClassNameList, o => (
208
209
  <div
209
210
  onClick={this.handleSetTableConfig.bind(this, o.value)}
210
211
  key={o.value}
@@ -212,9 +213,9 @@ class CommonContextMenu extends React.Component {
212
213
  >
213
214
  {o.text}
214
215
  </div>
215
- ))}
216
+ ))} <Hr /></>}
217
+
216
218
 
217
- <Hr />
218
219
  <div onClick={this.handleAddContent.bind(this, 0, '')}>
219
220
  {i18next.t('向上插入区域块')}
220
221
  </div>
@@ -51,7 +51,7 @@ class EditorSelector extends React.Component {
51
51
  selectedRegion
52
52
  } = this.props.editStore
53
53
  const isDIY = page.type === 'DIY'
54
-
54
+ const isLongPrint = page.type === 'longPrint'
55
55
  return (
56
56
  <div>
57
57
  <Flex alignCenter>
@@ -79,7 +79,7 @@ class EditorSelector extends React.Component {
79
79
  </Select>
80
80
  </Flex>
81
81
 
82
- {isDIY && (
82
+ {(isDIY || isLongPrint) && (
83
83
  <Flex alignCenter className='gm-padding-top-5'>
84
84
  <div>{i18next.t('纸张宽度')}:</div>
85
85
  <InputWithUnit
@@ -102,8 +102,7 @@ class EditorSelector extends React.Component {
102
102
  />
103
103
  </Flex>
104
104
  )}
105
-
106
- <Flex alignCenter className='gm-padding-top-5'>
105
+ {!isLongPrint && <Flex alignCenter className='gm-padding-top-5'>
107
106
  <div>{i18next.t('打印布局')}:</div>
108
107
  <Select
109
108
  className='gm-printer-edit-select'
@@ -116,7 +115,7 @@ class EditorSelector extends React.Component {
116
115
  </Option>
117
116
  ))}
118
117
  </Select>
119
- </Flex>
118
+ </Flex>}
120
119
 
121
120
  <Flex alignCenter className='gm-padding-top-5'>
122
121
  <div>{i18next.t('选择区域')}:</div>
@@ -159,18 +158,18 @@ class EditorSelector extends React.Component {
159
158
 
160
159
  {
161
160
  showDiyOverAllOrder !== undefined && <Flex alignCenter className='gm-padding-top-5'>
162
- <label htmlFor={1}>{'是否固定末页签名和页脚区域:'}</label>
163
- <RadioGroup
164
- name='isFixFooter'
165
- value={isFixLastFooter}
166
- inline
167
- onChange={this.handleConfigIsFixLastFooter}
168
- className="gm-flex"
169
- >
170
- <Radio value={true} style={{ display: 'flex', marginRight: 10}}><span style={{ marginLeft: 5}}>是</span></Radio>
171
- <Radio value={false} style={{ display: 'flex'}}><span style={{ marginLeft: 5}}>否</span></Radio>
172
- </RadioGroup>
173
- </Flex>
161
+ <label htmlFor={1}>{'是否固定末页签名和页脚区域:'}</label>
162
+ <RadioGroup
163
+ name='isFixFooter'
164
+ value={isFixLastFooter}
165
+ inline
166
+ onChange={this.handleConfigIsFixLastFooter}
167
+ className="gm-flex"
168
+ >
169
+ <Radio value={true} style={{ display: 'flex', marginRight: 10 }}><span style={{ marginLeft: 5 }}>是</span></Radio>
170
+ <Radio value={false} style={{ display: 'flex' }}><span style={{ marginLeft: 5 }}>否</span></Radio>
171
+ </RadioGroup>
172
+ </Flex>
174
173
  }
175
174
 
176
175
  <Flex className='gm-padding-top-5 gm-text-red' column>
@@ -263,6 +263,13 @@
263
263
  top: calc(50% - 0.5em);
264
264
  }
265
265
 
266
+ .long_print_table_row{
267
+ cursor: move;
268
+ &.active{
269
+ outline: 1px solid rgb(82, 146, 247);
270
+ }
271
+ }
272
+
266
273
  table {
267
274
  // 不被 before 遮挡
268
275
  position: relative;
package/src/config.js CHANGED
@@ -78,6 +78,21 @@ export const pageTypeMap = {
78
78
  paddingLeft: '16mm'
79
79
  }
80
80
  },
81
+ // 新增长条打印配置选项
82
+ 'longPrint': {
83
+ name: i18next.t('长条打印'),
84
+ size: {
85
+ width: '80mm',
86
+ height: '100mm'
87
+ },
88
+ printDirection: 'vertical',
89
+ gap: {
90
+ paddingTop: '5mm',
91
+ paddingRight: '5mm',
92
+ paddingBottom: '5mm',
93
+ paddingLeft: '5mm'
94
+ }
95
+ },
81
96
  DIY: {
82
97
  name: i18next.t('自定义纸张'),
83
98
  size: {
@@ -122,17 +122,19 @@ class ContextMenu extends React.Component {
122
122
  const isSubtotalActive = subtotal.show
123
123
  const isOverallOrder = overallOrder?.show
124
124
  const isDiyOverallOrder = diyOverallOrder?.show
125
+ // 长条打印
126
+ const isLongPrint = type === 'longPrint'
125
127
 
126
128
  return (
127
129
  <>
128
- <div
130
+ {!isLongPrint && <div
129
131
  onClick={this.handleChangeTableDataKey.bind(this, 'multi', name)}
130
132
  className={isMultiActive ? 'active' : ''}
131
133
  >
132
134
  {i18next.t('双栏商品')}
133
- </div>
135
+ </div>}
134
136
  {/* 三分纸高度太小,做不了三栏,会死循环 */}
135
- {type !== 'A4/3' && (
137
+ {type !== 'A4/3' && !isLongPrint && (
136
138
  <div
137
139
  onClick={this.handleChangeTableDataKey.bind(this, 'multi3', name)}
138
140
  className={isThreeActive ? 'active' : ''}
@@ -0,0 +1,382 @@
1
+ import React from 'react'
2
+ import PropTypes from 'prop-types'
3
+ import _ from 'lodash'
4
+ import {
5
+ dispatchMsg,
6
+ getDataKey,
7
+ getHeight,
8
+ getTableColumnName,
9
+ getWidth,
10
+ } from '../../util'
11
+ import { inject, observer } from 'mobx-react'
12
+ import classNames from 'classnames'
13
+ import SpecialTr from '../table_special_tr'
14
+ import CategoryTr from '../table_category_tr'
15
+ import SubtotalTr from '../table_subtotal_tr'
16
+ import PageSummary from '../page_summary'
17
+ import OverallOrder from '../table_overallOrder_tr'
18
+ import DiyOverallOrder from '../table_diy_overallOrder_tr'
19
+
20
+ @inject('printerStore')
21
+ @observer
22
+ class Table extends React.Component {
23
+ constructor(props) {
24
+ super(props)
25
+ this.ref = React.createRef()
26
+ this.state = {
27
+ index: null
28
+ }
29
+ }
30
+
31
+ componentDidMount() {
32
+ const { name, printerStore } = this.props
33
+
34
+ if (!printerStore.ready) {
35
+ const $table = this.ref.current.querySelector('table')
36
+ const tHead = $table.querySelector('thead')
37
+ const ths = tHead.querySelectorAll('th') || []
38
+ const trs = $table.querySelectorAll('tbody tr') || []
39
+ const detailsDiv = $table.querySelectorAll('tr td .b-table-details')
40
+
41
+ printerStore.setHeight(name, getHeight($table))
42
+
43
+ printerStore.setTable(name, {
44
+ head: {
45
+ height: getHeight(tHead),
46
+ widths: _.map(ths, th => getWidth(th))
47
+ },
48
+ body: {
49
+ heights: _.map(trs, tr => getHeight(tr)),
50
+ children: _.map(detailsDiv, div => getHeight(div))
51
+ }
52
+ })
53
+ }
54
+ }
55
+
56
+ handleClick = e => {
57
+ const { name } = this.props
58
+ const { index } = e.target.dataset
59
+ dispatchMsg('gm-printer-select', {
60
+ selected: getTableColumnName(name, index)
61
+ })
62
+ }
63
+
64
+ handleDragStart = e => {
65
+ const { name } = this.props
66
+ const { index } = e.target.dataset
67
+
68
+ this.setState({
69
+ index
70
+ })
71
+
72
+ dispatchMsg('gm-printer-select', {
73
+ selected: getTableColumnName(name, index)
74
+ })
75
+ }
76
+
77
+ handleSelectedRegion = () => {
78
+ const { name } = this.props
79
+
80
+ dispatchMsg('gm-printer-select-region', { selected: name })
81
+ }
82
+
83
+ handleDrop = e => {
84
+ const { index } = e.target.dataset
85
+ console.log(this.state.index, index);
86
+ if (this.state.index !== index) {
87
+ dispatchMsg('gm-printer-table-drag', {
88
+ source: this.state.index,
89
+ target: index
90
+ })
91
+ }
92
+ }
93
+
94
+ handleDragOver = e => {
95
+ e.preventDefault()
96
+ }
97
+
98
+ getColumns = () => {
99
+ const {
100
+ config: { columns, dataKey }
101
+ } = this.props
102
+ const columns1 = columns.map((val, index) => ({ ...val, index }))
103
+ return columns1
104
+ }
105
+
106
+ renderDefault() {
107
+ let {
108
+ config,
109
+ config: { dataKey, arrange, customerRowHeight = 23 },
110
+ name,
111
+ range,
112
+ pageIndex,
113
+ printerStore,
114
+ isSomeSubtotalTr
115
+ } = this.props
116
+ // 数据
117
+ dataKey = getDataKey(dataKey, arrange)
118
+ const tableData = printerStore.data._table[dataKey] || []
119
+
120
+ // 列
121
+ const columns = this.getColumns()
122
+ // 每页合计在前
123
+ const subtotalTrPageSummary = () => {
124
+ return (
125
+ <>
126
+ <SubtotalTr
127
+ range={range}
128
+ config={config}
129
+ printerStore={printerStore}
130
+ isSomeSubtotalTr={isSomeSubtotalTr}
131
+ />
132
+ <PageSummary {...this.props} />
133
+ </>
134
+ )
135
+ }
136
+ // 合计在前
137
+ const PageSummarySubtotalTr = () => {
138
+ return (
139
+ <>
140
+ <PageSummary {...this.props} />
141
+ <SubtotalTr
142
+ range={range}
143
+ config={config}
144
+ printerStore={printerStore}
145
+ isSomeSubtotalTr={isSomeSubtotalTr}
146
+ />
147
+ </>
148
+ )
149
+ }
150
+
151
+ return (<div style={{ tableLayout: 'inherit', wordBreak: 'break-all' }}>
152
+ {_.map(_.range(range.begin, range.end), i => {
153
+ const _special = tableData[i] && tableData[i]._special
154
+ const _specialText = tableData[i] && tableData[i]._specialText
155
+ if (_specialText)
156
+ return <CategoryTr key={i} config={config} data={_specialText} />
157
+ if (_special)
158
+ return <SpecialTr key={i} config={config} data={_special} />
159
+ // 如果项为空对象展现一个占满一行的td
160
+ const isItemNone = !_.keys(tableData[i]).length
161
+ console.log(columns, "columns");
162
+ return (
163
+ <div key={i} style={{ borderTop: '1px dashed black' }}>
164
+ {isItemNone ? (
165
+ null
166
+ ) : (
167
+ _.map(columns, (col, j) => {
168
+ return (
169
+ <div
170
+ key={j}
171
+ data-name={getTableColumnName(name, col.index)}
172
+ data-index={col.index}
173
+ onClick={this.handleClick}
174
+ draggable
175
+ onDragStart={this.handleDragStart}
176
+ onDrop={this.handleDrop}
177
+ onDragOver={this.handleDragOver}
178
+ style={{ padding: "2px 0" }}
179
+ className={classNames("long_print_table_row", {
180
+ active:
181
+ getTableColumnName(name, col.index) ===
182
+ printerStore.selected
183
+ })}>
184
+ <span
185
+ data-name={getTableColumnName(name, col.index)}
186
+ data-index={col.index}
187
+ onClick={this.handleClick}
188
+ style={{ ...col.headStyle }}>{col.head}:</span>
189
+ <span
190
+ style={{
191
+ ...col.style
192
+ }}
193
+ data-name={getTableColumnName(name, col.index)}
194
+ data-index={col.index}
195
+ onClick={this.handleClick}
196
+ dangerouslySetInnerHTML={{
197
+ __html: col.isSpecialColumn
198
+ ? printerStore.templateSpecialDetails(
199
+ col,
200
+ dataKey,
201
+ i
202
+ )
203
+ : printerStore
204
+ .templateTable(col.text, dataKey, i, pageIndex)
205
+ .replace(/\(\)/g, '')
206
+ }}
207
+ />
208
+ </div>
209
+ )
210
+ })
211
+ )}
212
+ </div>
213
+ )
214
+ })}
215
+ {this.props.config.subtotal.isCommutationPlace
216
+ ? PageSummarySubtotalTr()
217
+ : subtotalTrPageSummary()}
218
+ <OverallOrder
219
+ range={range}
220
+ config={config}
221
+ printerStore={printerStore}
222
+ />
223
+ <DiyOverallOrder
224
+ range={range}
225
+ config={config}
226
+ printerStore={printerStore}
227
+ pageIndex={pageIndex}
228
+ />
229
+ </div>)
230
+
231
+ return (
232
+ <table
233
+ style={{
234
+ // td会撑开table的宽度
235
+ tableLayout: 'inherit',
236
+ wordBreak: 'break-all'
237
+ }}
238
+ >
239
+ <thead>
240
+ <tr style={{ height: `${customerRowHeight}px` }}>
241
+ {_.map(columns, (col, i) => (
242
+ <th
243
+ key={i}
244
+ data-index={col.index}
245
+ data-name={getTableColumnName(name, col.index)}
246
+ draggable
247
+ style={{
248
+ ...getTdStyle(i, col.headStyle),
249
+ ...col.headStyle
250
+ }}
251
+ className={classNames({
252
+ active:
253
+ getTableColumnName(name, col.index) ===
254
+ printerStore.selected
255
+ })}
256
+ onClick={this.handleClick}
257
+ onDragStart={this.handleDragStart}
258
+ onDrop={this.handleDrop}
259
+ onDragOver={this.handleDragOver}
260
+ >
261
+ {col.head}
262
+ </th>
263
+ ))}
264
+ </tr>
265
+ </thead>
266
+ <tbody>
267
+ {_.map(_.range(range.begin, range.end), i => {
268
+ const _special = tableData[i] && tableData[i]._special
269
+ const _specialText = tableData[i] && tableData[i]._specialText
270
+ if (_specialText)
271
+ return <CategoryTr key={i} config={config} data={_specialText} />
272
+ if (_special)
273
+ return <SpecialTr key={i} config={config} data={_special} />
274
+ // 如果项为空对象展现一个占满一行的td
275
+ const isItemNone = !_.keys(tableData[i]).length
276
+
277
+ return (
278
+ <tr style={{ height: `${customerRowHeight}px` }} key={i}>
279
+ {isItemNone ? (
280
+ <td colSpan='99' />
281
+ ) : (
282
+ _.map(columns, (col, j) => {
283
+ return (
284
+ <td
285
+ key={j}
286
+ data-name={getTableColumnName(name, col.index)}
287
+ style={{
288
+ ...getTdStyle(j, col.style),
289
+ ...col.style
290
+ }}
291
+ className={classNames({
292
+ active:
293
+ getTableColumnName(name, col.index) ===
294
+ printerStore.selected
295
+ })}
296
+ dangerouslySetInnerHTML={{
297
+ __html: col.isSpecialColumn
298
+ ? printerStore.templateSpecialDetails(
299
+ col,
300
+ dataKey,
301
+ i
302
+ )
303
+ : printerStore
304
+ .templateTable(col.text, dataKey, i, pageIndex)
305
+ .replace(/\(\)/g, '')
306
+ }}
307
+ />
308
+ )
309
+ })
310
+ )}
311
+ </tr>
312
+ )
313
+ })}
314
+ {this.props.config.subtotal.isCommutationPlace
315
+ ? PageSummarySubtotalTr()
316
+ : subtotalTrPageSummary()}
317
+ <OverallOrder
318
+ range={range}
319
+ config={config}
320
+ printerStore={printerStore}
321
+ />
322
+ <DiyOverallOrder
323
+ range={range}
324
+ config={config}
325
+ printerStore={printerStore}
326
+ pageIndex={pageIndex}
327
+ />
328
+ </tbody>
329
+ </table>
330
+ )
331
+ }
332
+
333
+ renderEmptyTable() {
334
+ return (
335
+ <table>
336
+ <thead />
337
+ <tbody>
338
+ <tr />
339
+ </tbody>
340
+ </table>
341
+ )
342
+ }
343
+
344
+ render() {
345
+ let {
346
+ config: { className, dataKey, arrange },
347
+ name,
348
+ placeholder,
349
+ printerStore
350
+ } = this.props
351
+ dataKey = getDataKey(dataKey, arrange)
352
+ const tableData = printerStore.data._table[dataKey] || []
353
+ const active = printerStore.selectedRegion === name
354
+ return (
355
+ <div
356
+ ref={this.ref}
357
+ className={classNames(
358
+ 'gm-printer-table',
359
+ 'gm-printer-table-classname-' + (className || 'default'),
360
+ { active }
361
+ )}
362
+ data-name={name}
363
+ data-placeholder={placeholder}
364
+ onClick={this.handleSelectedRegion}
365
+ >
366
+ {tableData.length ? this.renderDefault() : this.renderEmptyTable()}
367
+ </div>
368
+ )
369
+ }
370
+ }
371
+
372
+ Table.propTypes = {
373
+ config: PropTypes.object.isRequired,
374
+ name: PropTypes.string.isRequired,
375
+ range: PropTypes.object.isRequired,
376
+ pageIndex: PropTypes.number.isRequired,
377
+ placeholder: PropTypes.string,
378
+ printerStore: PropTypes.object,
379
+ isSomeSubtotalTr: PropTypes.bool
380
+ }
381
+
382
+ export default Table
@@ -29,9 +29,9 @@ class Page extends React.Component {
29
29
 
30
30
  const {
31
31
  size: { width, height },
32
- pageStyle
32
+ pageStyle,
33
+ type
33
34
  } = printerStore.config.page
34
-
35
35
  // 统一减2毫米,防止计算误差溢出
36
36
  const x = '- 2mm'
37
37
  return (
@@ -44,7 +44,7 @@ class Page extends React.Component {
44
44
  ...pageStyle,
45
45
  boxSizing: 'content-box',
46
46
  width: `calc(${width} - ${paddingLeft} - ${paddingRight})`,
47
- height: `calc(${height} - ${paddingTop} - ${paddingBottom} ${x})`,
47
+ [type == "longPrint" ? "minHeight" : "height"]: `calc(${height} - ${paddingTop} - ${paddingBottom} ${x})`,
48
48
  padding: `${paddingTop} ${paddingRight} ${paddingBottom} ${paddingLeft}`
49
49
  }}
50
50
  >
@@ -52,7 +52,7 @@ class Page extends React.Component {
52
52
  className='gm-printer-page-inner'
53
53
  style={{
54
54
  width: `calc(${width} - ${paddingLeft} - ${paddingRight})`,
55
- height: `calc(${height} - ${paddingTop} - ${paddingBottom} ${x})`
55
+ [type == "longPrint" ? "minHeight" : "height"]: `calc(${height} - ${paddingTop} - ${paddingBottom} ${x})`
56
56
  }}
57
57
  >
58
58
  {children}
@@ -3,11 +3,12 @@ import React from 'react'
3
3
  import classNames from 'classnames'
4
4
  import { inject, observer, Provider } from 'mobx-react'
5
5
  import PropTypes from 'prop-types'
6
- import PrinterStore, { TR_BASE_HEIGHT } from './store'
6
+ import PrinterStore from './store'
7
7
  import Page from './page'
8
8
  import _ from 'lodash'
9
9
  import Panel from './panel'
10
10
  import Table from './table'
11
+ import LongPrintTable from "./long_print_table"
11
12
  import MergePage from './merge_page'
12
13
 
13
14
  // Header Sign Footer 相对特殊,要单独处理
@@ -161,6 +162,42 @@ class Printer extends React.Component {
161
162
  )
162
163
  }
163
164
 
165
+ renderLongPage() {
166
+ const { printerStore } = this.props
167
+ const { config } = printerStore
168
+ return <Page>
169
+ <Header config={config.header} pageIndex={0} />
170
+ {_.map(config.contents, (content, index) => {
171
+ switch (content.type) {
172
+ case 'table':
173
+ // eslint-disable-next-line no-case-declarations
174
+ const list = printerStore.data._table[content.dataKey]
175
+ return (
176
+ <LongPrintTable
177
+ key={`contents.table.${index}`}
178
+ name={`contents.table.${index}`}
179
+ config={content}
180
+ range={{ begin: 0, end: list?.length || 0 }}
181
+ pageIndex={0}
182
+ placeholder={`${i18next.t('区域')} ${index}`}
183
+ />
184
+ )
185
+
186
+ default:
187
+ return (
188
+ <Panel
189
+ key={`contents.panel.${index}`}
190
+ name={`contents.panel.${index}`}
191
+ config={content}
192
+ pageIndex={0}
193
+ placeholder={`${i18next.t('区域')} ${index}`}
194
+ />
195
+ )
196
+ }
197
+ })}
198
+ </Page>
199
+ }
200
+
164
201
  renderPage() {
165
202
  const { printerStore, isSomeSubtotalTr } = this.props
166
203
  const { config, remainPageHeight, isAutoFilling } = printerStore
@@ -184,10 +221,10 @@ class Printer extends React.Component {
184
221
 
185
222
  const end = isAutofillConfig
186
223
  ? panel.end +
187
- Math.floor(
188
- remainPageHeight /
189
- printerStore.computedTableCustomerRowHeight
190
- )
224
+ Math.floor(
225
+ remainPageHeight /
226
+ printerStore.computedTableCustomerRowHeight
227
+ )
191
228
  : panel.end
192
229
  switch (panel.type) {
193
230
  case 'table':
@@ -283,6 +320,9 @@ class Printer extends React.Component {
283
320
  const { printerStore, config } = this.props
284
321
  // batchPrintConfig: 1 不连续打印(纸张会间断)2 连续打印(纸张连续打,不间断)
285
322
  const batchPrintConfig = config.batchPrintConfig
323
+ if (config.page.type === "longPrint") {
324
+ return !printerStore.ready ? this.renderBefore() : this.renderLongPage()
325
+ }
286
326
  if (batchPrintConfig === 2) {
287
327
  return this.renderMerge()
288
328
  } else {
package/.eslintcache DELETED
@@ -1 +0,0 @@
1
- [{"/Users/min/Documents/GMFE/gm-util/gm-printer/src/util.js":"1","/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/get_css.js":"2","/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/barcode.js":"3","/Users/min/Documents/GMFE/gm-util/gm-printer/src/index.js":"4","/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_stockout/context_menu.js":"5","/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_stockin/context_menu.js":"6","/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_statement/context_menu.js":"7","/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_settle/context_menu.js":"8","/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_salemenus/context_menu.js":"9","/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_purchase/editor_special_table.js":"10","/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_purchase/context_menu.js":"11","/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_account/context_menu.js":"12","/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor/context_menu.js":"13","/Users/min/Documents/GMFE/gm-util/gm-printer/src/config.js":"14","/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/hoc_with_store.js":"15","/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/hoc_with_shadow_dom.js":"16","/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/get_editor_css.js":"17","/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/editor_title.js":"18","/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/editor_store.js":"19","/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/editor_select.js":"20","/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/editor_edit_field.js":"21","/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/component.js":"22","/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_stockout/editor.js":"23","/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_stockin/editor.js":"24","/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_statement/editor.js":"25","/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_settle/editor.js":"26","/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_salemenus/editor.js":"27","/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_purchase/editor.js":"28","/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_account_statement/editor.js":"29","/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_account/editor.js":"30","/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor/editor.js":"31","/Users/min/Documents/GMFE/gm-util/gm-printer/src/components/tooltip/index.js":"32","/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/editor_special_field.js":"33","/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/store.js":"34","/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/index.js":"35","/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/do_print.js":"36","/Users/min/Documents/GMFE/gm-util/gm-printer/src/finance_voucher/finance_printer.js":"37","/Users/min/Documents/GMFE/gm-util/gm-printer/src/finance_voucher/components/table_subtotal_tr.js":"38","/Users/min/Documents/GMFE/gm-util/gm-printer/src/finance_voucher/components/table.js":"39","/Users/min/Documents/GMFE/gm-util/gm-printer/src/finance_voucher/components/finance_batch_printer.js":"40","/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/page.js":"41","/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/table_subtotal_tr.js":"42","/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/table.js":"43","/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/printer.js":"44","/Users/min/Documents/GMFE/gm-util/gm-printer/src/components/flex/index.js":"45","/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/table_overallOrder_tr.js":"46","/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/util.js":"47","/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/editor_add_field.js":"48","/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/counter.js":"49","/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/common_context_menu.js":"50","/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/table_diy_overallOrder_tr.js":"51"},{"size":7813,"mtime":1648799098282,"results":"52","hashOfConfig":"53"},{"size":291,"mtime":1638935573926,"results":"54","hashOfConfig":"55"},{"size":523,"mtime":1638935549030,"results":"56","hashOfConfig":"55"},{"size":1139,"mtime":1644572548725,"results":"57","hashOfConfig":"58"},{"size":2293,"mtime":1638948548042,"results":"59","hashOfConfig":"55"},{"size":2292,"mtime":1638948522492,"results":"60","hashOfConfig":"55"},{"size":1078,"mtime":1638948543271,"results":"61","hashOfConfig":"55"},{"size":2067,"mtime":1648466228565,"results":"62","hashOfConfig":"53"},{"size":2991,"mtime":1638948535719,"results":"63","hashOfConfig":"55"},{"size":4379,"mtime":1638935458586,"results":"64","hashOfConfig":"55"},{"size":2428,"mtime":1648466380496,"results":"65","hashOfConfig":"53"},{"size":2955,"mtime":1647850650993,"results":"66","hashOfConfig":"58"},{"size":5660,"mtime":1695026529575,"results":"67","hashOfConfig":"68"},{"size":2833,"mtime":1638861837310,"results":"69","hashOfConfig":"55"},{"size":4212,"mtime":1638935746667,"results":"70","hashOfConfig":"55"},{"size":861,"mtime":1638931446915,"results":"71","hashOfConfig":"55"},{"size":178,"mtime":1638931439249,"results":"72","hashOfConfig":"55"},{"size":3272,"mtime":1648713847909,"results":"73","hashOfConfig":"53"},{"size":46636,"mtime":1695028084459,"results":"74","hashOfConfig":"68"},{"size":4898,"mtime":1639992402586,"results":"75","hashOfConfig":"55"},{"size":21854,"mtime":1695028069713,"results":"76","hashOfConfig":"68"},{"size":15155,"mtime":1657626470824,"results":"77","hashOfConfig":"78"},{"size":2165,"mtime":1638949854481,"results":"79","hashOfConfig":"55"},{"size":2165,"mtime":1638949840121,"results":"80","hashOfConfig":"55"},{"size":2223,"mtime":1638949823846,"results":"81","hashOfConfig":"55"},{"size":2356,"mtime":1650083974574,"results":"82","hashOfConfig":"53"},{"size":3367,"mtime":1638949855771,"results":"83","hashOfConfig":"55"},{"size":2305,"mtime":1638949843817,"results":"84","hashOfConfig":"55"},{"size":3294,"mtime":1638949855131,"results":"85","hashOfConfig":"55"},{"size":2850,"mtime":1638949842017,"results":"86","hashOfConfig":"55"},{"size":4157,"mtime":1638949853726,"results":"87","hashOfConfig":"55"},{"size":605,"mtime":1638949882777,"results":"88","hashOfConfig":"55"},{"size":1175,"mtime":1638949720500,"results":"89","hashOfConfig":"55"},{"size":19364,"mtime":1728010871551,"results":"90","hashOfConfig":"91"},{"size":332,"mtime":1644573509040,"results":"92","hashOfConfig":"58"},{"size":4080,"mtime":1648536160221,"results":"93","hashOfConfig":"53"},{"size":8842,"mtime":1646363892377,"results":"94","hashOfConfig":"58"},{"size":4317,"mtime":1646376602197,"results":"95","hashOfConfig":"58"},{"size":9440,"mtime":1644993553716,"results":"96","hashOfConfig":"58"},{"size":724,"mtime":1644808940649,"results":"97","hashOfConfig":"58"},{"size":1717,"mtime":1648466368772,"results":"98","hashOfConfig":"53"},{"size":5563,"mtime":1658392065200,"results":"99","hashOfConfig":"78"},{"size":10376,"mtime":1695025236432,"results":"100","hashOfConfig":"68"},{"size":9001,"mtime":1648713828033,"results":"101","hashOfConfig":"53"},{"size":3152,"mtime":1648713745966},{"size":1901,"mtime":1650082399244,"results":"102","hashOfConfig":"53"},{"size":600,"mtime":1657507507231,"results":"103","hashOfConfig":"78"},{"size":1945,"mtime":1657624830918,"results":"104","hashOfConfig":"78"},{"size":2009,"mtime":1659343100368,"results":"105","hashOfConfig":"78"},{"size":9861,"mtime":1659343100367,"results":"106","hashOfConfig":"78"},{"size":2513,"mtime":1695028123275,"results":"107","hashOfConfig":"68"},{"filePath":"108","messages":"109","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"1h9xfdh",{"filePath":"110","messages":"111","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"jpc0be",{"filePath":"112","messages":"113","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"114","messages":"115","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"1qaimc",{"filePath":"116","messages":"117","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"118","messages":"119","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"120","messages":"121","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"122","messages":"123","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"124","messages":"125","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"126","messages":"127","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"128","messages":"129","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"130","messages":"131","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"132","messages":"133","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"yfiwrq",{"filePath":"134","messages":"135","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"136","messages":"137","errorCount":2,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"138","messages":"139","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"140","messages":"141","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"142","messages":"143","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"144","messages":"145","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"146","messages":"147","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"148","messages":"149","errorCount":1,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"150","messages":"151","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"su5mnm",{"filePath":"152","messages":"153","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"154","messages":"155","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"156","messages":"157","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"158","messages":"159","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"160","messages":"161","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"162","messages":"163","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"164","messages":"165","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"166","messages":"167","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"168","messages":"169","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"170","messages":"171","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"172","messages":"173","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"174","messages":"175","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"2f4922",{"filePath":"176","messages":"177","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"178","messages":"179","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"180","messages":"181","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"182","messages":"183","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"184","messages":"185","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"186","messages":"187","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"188","messages":"189","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"190","messages":"191","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"192","messages":"193","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"194","messages":"195","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"196","messages":"197","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"198","messages":"199","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"200","messages":"201","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"202","messages":"203","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"204","messages":"205","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"206","messages":"207","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},"/Users/min/Documents/GMFE/gm-util/gm-printer/src/util.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/get_css.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/barcode.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/index.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_stockout/context_menu.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_stockin/context_menu.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_statement/context_menu.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_settle/context_menu.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_salemenus/context_menu.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_purchase/editor_special_table.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_purchase/context_menu.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_account/context_menu.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor/context_menu.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/config.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/hoc_with_store.js",["208","209"],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/hoc_with_shadow_dom.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/get_editor_css.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/editor_title.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/editor_store.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/editor_select.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/editor_edit_field.js",["210","211","212","213","214"],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/component.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_stockout/editor.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_stockin/editor.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_statement/editor.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_settle/editor.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_salemenus/editor.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_purchase/editor.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_account_statement/editor.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_account/editor.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor/editor.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/components/tooltip/index.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/editor_special_field.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/store.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/index.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/do_print.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/finance_voucher/finance_printer.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/finance_voucher/components/table_subtotal_tr.js",["215"],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/finance_voucher/components/table.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/finance_voucher/components/finance_batch_printer.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/page.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/table_subtotal_tr.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/table.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/printer.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/table_overallOrder_tr.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/util.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/editor_add_field.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/counter.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/common_context_menu.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/table_diy_overallOrder_tr.js",["216"],{"ruleId":"217","severity":2,"message":"218","line":10,"column":29,"nodeType":"219","endLine":10,"endColumn":35},{"ruleId":"217","severity":2,"message":"220","line":145,"column":63,"nodeType":"219","endLine":145,"endColumn":71},{"ruleId":"221","severity":1,"message":"222","line":344,"column":13,"nodeType":"223","endLine":344,"endColumn":49},{"ruleId":"221","severity":1,"message":"222","line":362,"column":13,"nodeType":"223","endLine":362,"endColumn":56},{"ruleId":"221","severity":1,"message":"222","line":519,"column":15,"nodeType":"223","endLine":519,"endColumn":53},{"ruleId":"221","severity":1,"message":"222","line":568,"column":11,"nodeType":"223","endLine":568,"endColumn":53},{"ruleId":"224","severity":2,"message":"225","line":669,"column":22,"nodeType":"226","messageId":"227","endLine":669,"endColumn":31},{"ruleId":"224","severity":2,"message":"225","line":120,"column":14,"nodeType":"226","messageId":"227","endLine":120,"endColumn":23},{"ruleId":"228","severity":2,"message":"229","line":13,"column":5,"nodeType":"219","endLine":13,"endColumn":11},"react/prop-types","'config' is missing in props validation","Identifier","'mockData' is missing in props validation","react/jsx-handler-names","Handler function for onChange prop key must begin with 'handle'","JSXAttribute","gmfe/i18n-check","t函数的key只能为字符串常量(Literal),请使用单引号或双引号包裹","MemberExpression","isVariable","no-unused-vars","'config' is assigned a value but never used."]