gm-printer 10.41.6-beta.1 → 10.41.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/demo.js +7 -7
- package/package.json +1 -1
- package/src/common/common_context_menu.js +4 -6
- package/src/common/component.js +8 -64
- package/src/common/editor_edit_field.js +1 -6
- package/src/common/editor_store.js +1 -7
- package/src/common/hoc_with_store.js +0 -9
- package/src/common/style.lesss +0 -43
- package/src/editor/store.js +0 -13
- package/src/index.js +0 -2
- package/src/printer/block.js +4 -147
- package/src/printer/printer.js +9 -1
package/package.json
CHANGED
|
@@ -109,7 +109,7 @@ class CommonContextMenu extends React.Component {
|
|
|
109
109
|
})
|
|
110
110
|
}
|
|
111
111
|
|
|
112
|
-
handleInsertBlock = (type, link
|
|
112
|
+
handleInsertBlock = (type, link) => {
|
|
113
113
|
const { editStore } = this.props
|
|
114
114
|
const { name, block } = this.state
|
|
115
115
|
|
|
@@ -120,8 +120,7 @@ class CommonContextMenu extends React.Component {
|
|
|
120
120
|
left: block.left + 'px',
|
|
121
121
|
top: block.top + 'px'
|
|
122
122
|
},
|
|
123
|
-
link
|
|
124
|
-
ratio
|
|
123
|
+
link
|
|
125
124
|
)
|
|
126
125
|
|
|
127
126
|
this.setState({
|
|
@@ -161,8 +160,8 @@ class CommonContextMenu extends React.Component {
|
|
|
161
160
|
})
|
|
162
161
|
}
|
|
163
162
|
|
|
164
|
-
handleInsertImage =
|
|
165
|
-
this.handleInsertBlock('image', imgURL
|
|
163
|
+
handleInsertImage = imgURL => {
|
|
164
|
+
this.handleInsertBlock('image', imgURL)
|
|
166
165
|
}
|
|
167
166
|
|
|
168
167
|
handleRemove = () => {
|
|
@@ -328,7 +327,6 @@ class CommonContextMenu extends React.Component {
|
|
|
328
327
|
onSuccess={this.handleInsertImage}
|
|
329
328
|
key={v.value}
|
|
330
329
|
text={v.text}
|
|
331
|
-
imageConfig={this.props.editStore.imageConfig}
|
|
332
330
|
/>
|
|
333
331
|
) : (
|
|
334
332
|
<div
|
package/src/common/component.js
CHANGED
|
@@ -391,26 +391,12 @@ Line.propTypes = {
|
|
|
391
391
|
|
|
392
392
|
class Size extends React.Component {
|
|
393
393
|
handleChange = (type, value) => {
|
|
394
|
-
const { onChange, style
|
|
394
|
+
const { onChange, style } = this.props
|
|
395
395
|
|
|
396
|
-
|
|
396
|
+
onChange({
|
|
397
397
|
...style,
|
|
398
398
|
[type]: value
|
|
399
|
-
}
|
|
400
|
-
|
|
401
|
-
// 电子签章:有原始比例时宽高联动,不允许拉变形
|
|
402
|
-
if (ratio && value !== '' && !value.endsWith('%')) {
|
|
403
|
-
const num = parseFloat(value)
|
|
404
|
-
if (!_.isNaN(num) && num > 0) {
|
|
405
|
-
if (type === 'width') {
|
|
406
|
-
next.height = num / ratio + 'px'
|
|
407
|
-
} else {
|
|
408
|
-
next.width = num * ratio + 'px'
|
|
409
|
-
}
|
|
410
|
-
}
|
|
411
|
-
}
|
|
412
|
-
|
|
413
|
-
onChange(next)
|
|
399
|
+
})
|
|
414
400
|
}
|
|
415
401
|
|
|
416
402
|
render() {
|
|
@@ -434,8 +420,7 @@ class Size extends React.Component {
|
|
|
434
420
|
|
|
435
421
|
Size.propTypes = {
|
|
436
422
|
style: PropTypes.object.isRequired,
|
|
437
|
-
onChange: PropTypes.func.isRequired
|
|
438
|
-
ratio: PropTypes.number
|
|
423
|
+
onChange: PropTypes.func.isRequired
|
|
439
424
|
}
|
|
440
425
|
|
|
441
426
|
class ImageUploader extends React.Component {
|
|
@@ -452,26 +437,7 @@ class ImageUploader extends React.Component {
|
|
|
452
437
|
: event.target.files
|
|
453
438
|
const file = droppedFiles[0]
|
|
454
439
|
|
|
455
|
-
if (
|
|
456
|
-
|
|
457
|
-
const { imageConfig } = this.props
|
|
458
|
-
|
|
459
|
-
if (imageConfig) {
|
|
460
|
-
// 增强模式(电子签章):校验类型与大小,提示文案由配置方给出
|
|
461
|
-
const acceptTypes = imageConfig.acceptTypes || [
|
|
462
|
-
'image/jpeg',
|
|
463
|
-
'image/jpg',
|
|
464
|
-
'image/png'
|
|
465
|
-
]
|
|
466
|
-
if (!_.includes(acceptTypes, file.type)) {
|
|
467
|
-
Tip.warning(imageConfig.wrongTypeTip)
|
|
468
|
-
return
|
|
469
|
-
}
|
|
470
|
-
if (file.size > imageConfig.maxSize) {
|
|
471
|
-
Tip.warning(imageConfig.overSizeTip)
|
|
472
|
-
return
|
|
473
|
-
}
|
|
474
|
-
} else if (file.size > 512 * 1024) {
|
|
440
|
+
if (file.size > 512 * 1024) {
|
|
475
441
|
Tip.warning(i18next.t('图片大小不能超过500Kb'))
|
|
476
442
|
return
|
|
477
443
|
}
|
|
@@ -497,21 +463,7 @@ class ImageUploader extends React.Component {
|
|
|
497
463
|
.post()
|
|
498
464
|
.then(json => {
|
|
499
465
|
const imgURL = `${url.imgUrl}/${json.data.img_path_id}`
|
|
500
|
-
|
|
501
|
-
// 增强模式下加载原图尺寸,记录原始比例供锁比例使用
|
|
502
|
-
if (imageConfig) {
|
|
503
|
-
const img = document.createElement('img')
|
|
504
|
-
img.onload = () => {
|
|
505
|
-
this.props.onSuccess(imgURL, img.naturalWidth / img.naturalHeight)
|
|
506
|
-
}
|
|
507
|
-
img.onerror = () => {
|
|
508
|
-
// 拿不到尺寸时降级:只插入不锁比例
|
|
509
|
-
this.props.onSuccess(imgURL)
|
|
510
|
-
}
|
|
511
|
-
img.src = imgURL
|
|
512
|
-
} else {
|
|
513
|
-
this.props.onSuccess(imgURL)
|
|
514
|
-
}
|
|
466
|
+
this.props.onSuccess(imgURL)
|
|
515
467
|
})
|
|
516
468
|
}
|
|
517
469
|
|
|
@@ -521,23 +473,16 @@ class ImageUploader extends React.Component {
|
|
|
521
473
|
}
|
|
522
474
|
|
|
523
475
|
render() {
|
|
524
|
-
const { imageConfig } = this.props
|
|
525
|
-
|
|
526
476
|
return (
|
|
527
477
|
<>
|
|
528
478
|
<div onClick={this.handleClick} onDrop={this.handleUpload}>
|
|
529
479
|
{this.props.text}
|
|
530
|
-
{imageConfig && imageConfig.acceptHint && (
|
|
531
|
-
<div className='gm-printer-contextmenu-hint'>
|
|
532
|
-
{imageConfig.acceptHint}
|
|
533
|
-
</div>
|
|
534
|
-
)}
|
|
535
480
|
</div>
|
|
536
481
|
<input
|
|
537
482
|
style={{ display: 'none' }}
|
|
538
483
|
type='file'
|
|
539
484
|
ref={this.input}
|
|
540
|
-
accept=
|
|
485
|
+
accept='image/*'
|
|
541
486
|
onChange={this.handleUpload}
|
|
542
487
|
/>
|
|
543
488
|
</>
|
|
@@ -547,8 +492,7 @@ class ImageUploader extends React.Component {
|
|
|
547
492
|
|
|
548
493
|
ImageUploader.propTypes = {
|
|
549
494
|
onSuccess: PropTypes.func.isRequired,
|
|
550
|
-
text: PropTypes.string.isRequired
|
|
551
|
-
imageConfig: PropTypes.object
|
|
495
|
+
text: PropTypes.string.isRequired
|
|
552
496
|
}
|
|
553
497
|
|
|
554
498
|
class InputWithUnit extends React.Component {
|
|
@@ -100,7 +100,7 @@ class EditorField extends React.Component {
|
|
|
100
100
|
|
|
101
101
|
renderBlocks() {
|
|
102
102
|
const { editStore, showNewDate } = this.props
|
|
103
|
-
const { type, text, style, link
|
|
103
|
+
const { type, text, style, link } = editStore.computedSelectedInfo
|
|
104
104
|
|
|
105
105
|
return (
|
|
106
106
|
<div>
|
|
@@ -149,11 +149,6 @@ class EditorField extends React.Component {
|
|
|
149
149
|
<Size
|
|
150
150
|
style={style}
|
|
151
151
|
onChange={this.handleChangeBlock.bind(this, 'style')}
|
|
152
|
-
ratio={
|
|
153
|
-
editStore.imageConfig && editStore.imageConfig.resizable
|
|
154
|
-
? ratio
|
|
155
|
-
: undefined
|
|
156
|
-
}
|
|
157
152
|
/>
|
|
158
153
|
<Gap />
|
|
159
154
|
|
|
@@ -17,10 +17,6 @@ class EditorStore {
|
|
|
17
17
|
@observable
|
|
18
18
|
tableCustomStyle = 'default'
|
|
19
19
|
|
|
20
|
-
// 插入图片增强配置(电子签章),null 时保持旧行为(500Kb/image/*)
|
|
21
|
-
// { maxSize, maxSizeLabel, accept, acceptHint, resizable }
|
|
22
|
-
imageConfig = null
|
|
23
|
-
|
|
24
20
|
@observable
|
|
25
21
|
emptyTableData = []
|
|
26
22
|
|
|
@@ -560,7 +556,7 @@ class EditorStore {
|
|
|
560
556
|
}
|
|
561
557
|
|
|
562
558
|
@action
|
|
563
|
-
addConfigBlock(name, type, pos = {}, link = ''
|
|
559
|
+
addConfigBlock(name, type, pos = {}, link = '') {
|
|
564
560
|
let blocks
|
|
565
561
|
const arr = name.split('.')
|
|
566
562
|
|
|
@@ -604,8 +600,6 @@ class EditorStore {
|
|
|
604
600
|
blocks.push({
|
|
605
601
|
type: 'image',
|
|
606
602
|
link: link,
|
|
607
|
-
// 电子签章:记录原图宽高比,锁比例用;旧数据无此字段则不锁
|
|
608
|
-
ratio: ratio,
|
|
609
603
|
style: {
|
|
610
604
|
position: 'absolute',
|
|
611
605
|
left: pos.left || '0px',
|
|
@@ -1,22 +1,13 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
|
-
import PropTypes from 'prop-types'
|
|
3
2
|
import { Provider } from 'mobx-react'
|
|
4
3
|
import { getStyleWithDiff } from '../util'
|
|
5
4
|
|
|
6
5
|
const withStore = store => WrapComponent =>
|
|
7
6
|
class extends React.Component {
|
|
8
|
-
static propTypes = {
|
|
9
|
-
config: PropTypes.object,
|
|
10
|
-
mockData: PropTypes.object,
|
|
11
|
-
imageConfig: PropTypes.object
|
|
12
|
-
}
|
|
13
|
-
|
|
14
7
|
constructor(props) {
|
|
15
8
|
super(props)
|
|
16
9
|
this.store = store
|
|
17
10
|
this.store.init(props.config, props.mockData)
|
|
18
|
-
// 插入图片增强配置(电子签章):由业务侧 props 传入,不传为 null 保持旧行为
|
|
19
|
-
this.store.imageConfig = props.imageConfig || null
|
|
20
11
|
}
|
|
21
12
|
|
|
22
13
|
componentDidMount() {
|
package/src/common/style.lesss
CHANGED
|
@@ -166,18 +166,6 @@
|
|
|
166
166
|
color: white;
|
|
167
167
|
background: rgb(82, 146, 247);
|
|
168
168
|
}
|
|
169
|
-
|
|
170
|
-
// 电子签章:插入图片菜单项下的格式提示小字
|
|
171
|
-
.gm-printer-contextmenu-hint {
|
|
172
|
-
font-size: 10px;
|
|
173
|
-
color: #f5222d;
|
|
174
|
-
line-height: 1.4;
|
|
175
|
-
padding: 0;
|
|
176
|
-
&:hover {
|
|
177
|
-
color: #f5222d;
|
|
178
|
-
background: transparent;
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
169
|
}
|
|
182
170
|
}
|
|
183
171
|
|
|
@@ -256,37 +244,6 @@
|
|
|
256
244
|
outline: 1px solid rgb(82, 146, 247);
|
|
257
245
|
z-index: 11;
|
|
258
246
|
}
|
|
259
|
-
|
|
260
|
-
// 电子签章:图片四角黑色加粗拖拽手柄
|
|
261
|
-
.gm-printer-resize-handle {
|
|
262
|
-
position: absolute;
|
|
263
|
-
width: 10px;
|
|
264
|
-
height: 10px;
|
|
265
|
-
background: #000;
|
|
266
|
-
border: 2px solid #fff;
|
|
267
|
-
z-index: 12;
|
|
268
|
-
|
|
269
|
-
&.gm-printer-resize-lt {
|
|
270
|
-
left: -6px;
|
|
271
|
-
top: -6px;
|
|
272
|
-
cursor: nwse-resize;
|
|
273
|
-
}
|
|
274
|
-
&.gm-printer-resize-rt {
|
|
275
|
-
right: -6px;
|
|
276
|
-
top: -6px;
|
|
277
|
-
cursor: nesw-resize;
|
|
278
|
-
}
|
|
279
|
-
&.gm-printer-resize-lb {
|
|
280
|
-
left: -6px;
|
|
281
|
-
bottom: -6px;
|
|
282
|
-
cursor: nesw-resize;
|
|
283
|
-
}
|
|
284
|
-
&.gm-printer-resize-rb {
|
|
285
|
-
right: -6px;
|
|
286
|
-
bottom: -6px;
|
|
287
|
-
cursor: nwse-resize;
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
247
|
}
|
|
291
248
|
|
|
292
249
|
.gm-printer-table {
|
package/src/editor/store.js
CHANGED
|
@@ -1,19 +1,6 @@
|
|
|
1
1
|
import EditorStore from '../common/editor_store'
|
|
2
2
|
import i18next from '../../locales'
|
|
3
3
|
|
|
4
|
-
// 配送单"电子签章"插入图片增强预设(1056076):2M/指定格式/锁比例/四角拖拽
|
|
5
|
-
// 由业务侧显式传入 <Editor imageConfig={imageConfigDelivery} /> 才生效,不传保持旧行为
|
|
6
|
-
export const imageConfigDelivery = {
|
|
7
|
-
maxSize: 2 * 1024 * 1024,
|
|
8
|
-
maxSizeLabel: '2M',
|
|
9
|
-
accept: 'image/jpeg,image/jpg,image/png',
|
|
10
|
-
acceptTypes: ['image/jpeg', 'image/jpg', 'image/png'],
|
|
11
|
-
acceptHint: i18next.t('支持插入2M以内的jpg、jpeg、png格式图片'),
|
|
12
|
-
overSizeTip: i18next.t('图片大小不能超过2M'),
|
|
13
|
-
wrongTypeTip: i18next.t('仅支持jpg、jpeg、png格式的图片'),
|
|
14
|
-
resizable: true
|
|
15
|
-
}
|
|
16
|
-
|
|
17
4
|
class Store extends EditorStore {
|
|
18
5
|
// 复写父类方法
|
|
19
6
|
setTableDataKeyEffect(target, dataKey) {
|
package/src/index.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
// ‼️优先初始化语言设置(必须先初始化语言)
|
|
2
2
|
import '../locales'
|
|
3
3
|
import Editor, { Editor2 } from './editor'
|
|
4
|
-
import { imageConfigDelivery } from './editor/store'
|
|
5
4
|
|
|
6
5
|
import EditorPurchase from './editor_purchase'
|
|
7
6
|
import EditorExaminingReport from './examining_report_editor'
|
|
@@ -31,7 +30,6 @@ export { setLocale } from '../locales'
|
|
|
31
30
|
export {
|
|
32
31
|
Editor,
|
|
33
32
|
Editor2,
|
|
34
|
-
imageConfigDelivery,
|
|
35
33
|
EditorStockIn,
|
|
36
34
|
EditorStockOut,
|
|
37
35
|
EditorPurchase,
|
package/src/printer/block.js
CHANGED
|
@@ -8,7 +8,7 @@ import BarCode from './barcode'
|
|
|
8
8
|
import QrCode from './qrcode'
|
|
9
9
|
import Tag from './tag'
|
|
10
10
|
|
|
11
|
-
@inject('printerStore'
|
|
11
|
+
@inject('printerStore')
|
|
12
12
|
@observer
|
|
13
13
|
class Block extends React.Component {
|
|
14
14
|
constructor(props) {
|
|
@@ -16,10 +16,8 @@ class Block extends React.Component {
|
|
|
16
16
|
this.state = {
|
|
17
17
|
clientX: null,
|
|
18
18
|
clientY: null,
|
|
19
|
-
isEdit: false
|
|
20
|
-
isResizing: false
|
|
19
|
+
isEdit: false
|
|
21
20
|
}
|
|
22
|
-
this.resizeState = null
|
|
23
21
|
}
|
|
24
22
|
|
|
25
23
|
componentDidMount() {
|
|
@@ -34,7 +32,6 @@ class Block extends React.Component {
|
|
|
34
32
|
'gm-printer-block-edit',
|
|
35
33
|
this.handleBlockEdit
|
|
36
34
|
)
|
|
37
|
-
this.teardownResize()
|
|
38
35
|
}
|
|
39
36
|
|
|
40
37
|
handleBlockEdit = e => {
|
|
@@ -115,116 +112,6 @@ class Block extends React.Component {
|
|
|
115
112
|
})
|
|
116
113
|
}
|
|
117
114
|
|
|
118
|
-
// 电子签章:图片四角等比例拖拽缩放
|
|
119
|
-
handleResizeStart = (direction, e) => {
|
|
120
|
-
// 阻止触发块的选中/拖动
|
|
121
|
-
e.stopPropagation()
|
|
122
|
-
e.preventDefault()
|
|
123
|
-
|
|
124
|
-
const {
|
|
125
|
-
config: { style, ratio }
|
|
126
|
-
} = this.props
|
|
127
|
-
|
|
128
|
-
const initW = parseFloat(style.width) || 0
|
|
129
|
-
const initH = parseFloat(style.height) || 0
|
|
130
|
-
// 旧模板无 ratio 时按当前显示宽高锁定
|
|
131
|
-
this.resizeState = {
|
|
132
|
-
direction,
|
|
133
|
-
startX: e.clientX,
|
|
134
|
-
startY: e.clientY,
|
|
135
|
-
initW,
|
|
136
|
-
initH,
|
|
137
|
-
initL: parseFloat(style.left) || 0,
|
|
138
|
-
initT: parseFloat(style.top) || 0,
|
|
139
|
-
// ratio = 原始宽/高
|
|
140
|
-
ratio: ratio || (initH > 0 ? initW / initH : 1),
|
|
141
|
-
baseStyle: style
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
this.setState({
|
|
145
|
-
isResizing: true
|
|
146
|
-
})
|
|
147
|
-
|
|
148
|
-
window.addEventListener('mousemove', this.handleResizeMove)
|
|
149
|
-
window.addEventListener('mouseup', this.handleResizeEnd)
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
handleResizeMove = e => {
|
|
153
|
-
if (!this.resizeState) return
|
|
154
|
-
|
|
155
|
-
// rAF 节流,避免高频 mousemove 打爆渲染
|
|
156
|
-
if (this.resizePending) return
|
|
157
|
-
this.resizePending = e
|
|
158
|
-
window.requestAnimationFrame(() => {
|
|
159
|
-
const evt = this.resizePending
|
|
160
|
-
this.resizePending = null
|
|
161
|
-
if (!evt || !this.resizeState) return
|
|
162
|
-
this.doResize(evt)
|
|
163
|
-
})
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
doResize = e => {
|
|
167
|
-
const {
|
|
168
|
-
direction,
|
|
169
|
-
startX,
|
|
170
|
-
initW,
|
|
171
|
-
initH,
|
|
172
|
-
initL,
|
|
173
|
-
initT,
|
|
174
|
-
ratio,
|
|
175
|
-
baseStyle
|
|
176
|
-
} = this.resizeState
|
|
177
|
-
const dx = e.clientX - startX
|
|
178
|
-
|
|
179
|
-
// 右侧角向右放大,左侧角向左放大
|
|
180
|
-
let width =
|
|
181
|
-
direction === 'rb' || direction === 'rt' ? initW + dx : initW - dx
|
|
182
|
-
// 最小尺寸兜底,防止翻转
|
|
183
|
-
width = Math.max(width, 10)
|
|
184
|
-
const height = Math.round(width / ratio)
|
|
185
|
-
width = Math.round(width)
|
|
186
|
-
|
|
187
|
-
// 锚定对角:左向角拖拽时右/下边不动,上向角拖拽时下边不动
|
|
188
|
-
let left = initL
|
|
189
|
-
let top = initT
|
|
190
|
-
if (direction === 'lb' || direction === 'lt') {
|
|
191
|
-
left = initL + initW - width
|
|
192
|
-
}
|
|
193
|
-
if (direction === 'rt' || direction === 'lt') {
|
|
194
|
-
top = initT + initH - height
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
dispatchMsg('gm-printer-block-style-set', {
|
|
198
|
-
style: {
|
|
199
|
-
...baseStyle,
|
|
200
|
-
width: width + 'px',
|
|
201
|
-
height: height + 'px',
|
|
202
|
-
left: left + 'px',
|
|
203
|
-
top: top + 'px'
|
|
204
|
-
}
|
|
205
|
-
})
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
handleResizeEnd = () => {
|
|
209
|
-
// 先 flush 掉节流里排队中的最后一帧,避免松手回退
|
|
210
|
-
if (this.resizePending) {
|
|
211
|
-
const evt = this.resizePending
|
|
212
|
-
this.resizePending = null
|
|
213
|
-
this.doResize(evt)
|
|
214
|
-
}
|
|
215
|
-
this.teardownResize()
|
|
216
|
-
this.setState({
|
|
217
|
-
isResizing: false
|
|
218
|
-
})
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
teardownResize = () => {
|
|
222
|
-
window.removeEventListener('mousemove', this.handleResizeMove)
|
|
223
|
-
window.removeEventListener('mouseup', this.handleResizeEnd)
|
|
224
|
-
this.resizeState = null
|
|
225
|
-
this.resizePending = null
|
|
226
|
-
}
|
|
227
|
-
|
|
228
115
|
render() {
|
|
229
116
|
let {
|
|
230
117
|
name,
|
|
@@ -232,7 +119,6 @@ class Block extends React.Component {
|
|
|
232
119
|
pageIndex,
|
|
233
120
|
className,
|
|
234
121
|
printerStore,
|
|
235
|
-
editStore,
|
|
236
122
|
...rest
|
|
237
123
|
} = this.props
|
|
238
124
|
const { isEdit } = this.state
|
|
@@ -300,14 +186,6 @@ class Block extends React.Component {
|
|
|
300
186
|
}
|
|
301
187
|
|
|
302
188
|
const active = name === printerStore.selected
|
|
303
|
-
const { isResizing } = this.state
|
|
304
|
-
const showResizeHandles = !!(
|
|
305
|
-
active &&
|
|
306
|
-
type === 'image' &&
|
|
307
|
-
editStore &&
|
|
308
|
-
editStore.imageConfig &&
|
|
309
|
-
editStore.imageConfig.resizable
|
|
310
|
-
)
|
|
311
189
|
|
|
312
190
|
return (
|
|
313
191
|
<div
|
|
@@ -315,7 +193,7 @@ class Block extends React.Component {
|
|
|
315
193
|
className={classNames('gm-printer-block', className, {
|
|
316
194
|
active
|
|
317
195
|
})}
|
|
318
|
-
draggable
|
|
196
|
+
draggable
|
|
319
197
|
onDragStart={this.handleDragStart}
|
|
320
198
|
onDragEnd={this.handleDragEnd}
|
|
321
199
|
onClick={this.handleClick}
|
|
@@ -343,26 +221,6 @@ class Block extends React.Component {
|
|
|
343
221
|
/>
|
|
344
222
|
)}
|
|
345
223
|
{content}
|
|
346
|
-
{showResizeHandles && (
|
|
347
|
-
<>
|
|
348
|
-
<div
|
|
349
|
-
className='gm-printer-resize-handle gm-printer-resize-lt'
|
|
350
|
-
onMouseDown={this.handleResizeStart.bind(this, 'lt')}
|
|
351
|
-
/>
|
|
352
|
-
<div
|
|
353
|
-
className='gm-printer-resize-handle gm-printer-resize-rt'
|
|
354
|
-
onMouseDown={this.handleResizeStart.bind(this, 'rt')}
|
|
355
|
-
/>
|
|
356
|
-
<div
|
|
357
|
-
className='gm-printer-resize-handle gm-printer-resize-lb'
|
|
358
|
-
onMouseDown={this.handleResizeStart.bind(this, 'lb')}
|
|
359
|
-
/>
|
|
360
|
-
<div
|
|
361
|
-
className='gm-printer-resize-handle gm-printer-resize-rb'
|
|
362
|
-
onMouseDown={this.handleResizeStart.bind(this, 'rb')}
|
|
363
|
-
/>
|
|
364
|
-
</>
|
|
365
|
-
)}
|
|
366
224
|
</div>
|
|
367
225
|
)
|
|
368
226
|
}
|
|
@@ -373,8 +231,7 @@ Block.propTypes = {
|
|
|
373
231
|
config: PropTypes.object.isRequired,
|
|
374
232
|
pageIndex: PropTypes.number.isRequired,
|
|
375
233
|
className: PropTypes.string,
|
|
376
|
-
printerStore: PropTypes.object
|
|
377
|
-
editStore: PropTypes.object
|
|
234
|
+
printerStore: PropTypes.object
|
|
378
235
|
}
|
|
379
236
|
|
|
380
237
|
export default Block
|
package/src/printer/printer.js
CHANGED
|
@@ -333,7 +333,15 @@ class Printer extends React.Component {
|
|
|
333
333
|
|
|
334
334
|
return (
|
|
335
335
|
<MergePage>
|
|
336
|
-
|
|
336
|
+
{/* 批量连续打印(不留白)模式下分页交给浏览器:表头区含绝对定位文字,
|
|
337
|
+
若表头自身或表头与表格的接缝骑在分页边界,Chrome 对 absolute 元素的
|
|
338
|
+
fragmentation 渲染会使表头文字错位/重复,叠到其他单据内容上。
|
|
339
|
+
故禁止表头跨页(breakInside)、并让表头与后续表格同页(breakAfter) */}
|
|
340
|
+
<Header
|
|
341
|
+
config={config.header}
|
|
342
|
+
pageIndex={0}
|
|
343
|
+
style={{ breakInside: 'avoid', breakAfter: 'avoid' }}
|
|
344
|
+
/>
|
|
337
345
|
{_.map(config.contents, (content, index) => {
|
|
338
346
|
switch (content.type) {
|
|
339
347
|
case 'table':
|