gm-printer 10.41.2 → 10.41.3
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 +2 -2
- package/package.json +1 -1
- package/src/common/editor_edit_field.js +109 -37
- package/src/common/editor_store.js +197 -14
- package/src/editor/context_menu.js +17 -0
- package/src/printer/table_special_tr.js +17 -2
- package/src/printer/table_subtotal_tr.js +87 -0
|
@@ -134,6 +134,93 @@ const SubtotalTr = props => {
|
|
|
134
134
|
</tr>
|
|
135
135
|
)
|
|
136
136
|
} else {
|
|
137
|
+
// 单元格拆分展示:第一格(左侧文案+数值)拆分为两个单元格,对齐复用每页合计设置的 textAlign;
|
|
138
|
+
// 与打印账户总计金额支持共存(2026-09 交互确认):拆分只作用于第一格,其余格按原 colSpan 渲染(与导出侧 paintSubtotal 行为一致)
|
|
139
|
+
if (get(subtotal, 'isSplitCells')) {
|
|
140
|
+
const item = fields[0]
|
|
141
|
+
// 第一格总 colSpan 拆一半给左侧文案,剩余给数值(colSpan 缺省 99 表示整行);
|
|
142
|
+
// 宽度分配沿用原有逻辑:各格按 store 侧 fields[n].colSpan 照画,渲染端不调宽度
|
|
143
|
+
const totalColSpan = item.colSpan ?? 99
|
|
144
|
+
const leftColSpan = Math.floor(totalColSpan / 2)
|
|
145
|
+
const cellStyle = {
|
|
146
|
+
fontWeight: 'bold',
|
|
147
|
+
justifyContent: flexStyle[subtotal.style?.textAlign],
|
|
148
|
+
...subtotal.style
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
return (
|
|
152
|
+
<tr>
|
|
153
|
+
<td colSpan={leftColSpan}>
|
|
154
|
+
<div style={cellStyle} className='gm-flex-page'>
|
|
155
|
+
{item.name}
|
|
156
|
+
</div>
|
|
157
|
+
</td>
|
|
158
|
+
<td colSpan={totalColSpan - leftColSpan}>
|
|
159
|
+
<div style={cellStyle} className='gm-flex-page'>
|
|
160
|
+
<div
|
|
161
|
+
className={classNames('gm-flex-page', {
|
|
162
|
+
'gm-flex-justify-between-page': isUpperLowerCaseSeparate,
|
|
163
|
+
'gm-flex-grow-page': isUpperLowerCaseSeparate
|
|
164
|
+
})}
|
|
165
|
+
>
|
|
166
|
+
<span
|
|
167
|
+
className={
|
|
168
|
+
isUpperCaseBefore
|
|
169
|
+
? 'gm-printer-subtotal-isUpperCaseBefore-inter'
|
|
170
|
+
: ''
|
|
171
|
+
}
|
|
172
|
+
>
|
|
173
|
+
{item.type === 'useSummarize'
|
|
174
|
+
? getData(item.valueField)
|
|
175
|
+
: sumData2(list, item.valueField)}
|
|
176
|
+
</span>
|
|
177
|
+
{subtotal?.needUpperCase && (
|
|
178
|
+
<span>
|
|
179
|
+
{item.type === 'useSummarize'
|
|
180
|
+
? '大写:' +
|
|
181
|
+
coverDigit2Uppercase(getData(item.valueField))
|
|
182
|
+
: '大写:' +
|
|
183
|
+
coverDigit2Uppercase(sumData2(list, item.valueField))}
|
|
184
|
+
</span>
|
|
185
|
+
)}
|
|
186
|
+
</div>
|
|
187
|
+
</div>
|
|
188
|
+
</td>
|
|
189
|
+
{/* 拆分只拆第一格;其余格(打印账户总计金额等)沿用普通多格渲染语义 */}
|
|
190
|
+
{_.map(fields.slice(1), (extra, extraIndex) => (
|
|
191
|
+
<td
|
|
192
|
+
colSpan={extra.colSpan ?? 99}
|
|
193
|
+
key={`split_extra_${extraIndex}`}
|
|
194
|
+
>
|
|
195
|
+
<div style={cellStyle} className='gm-flex-page'>
|
|
196
|
+
{extra.name}
|
|
197
|
+
<div
|
|
198
|
+
className={classNames('gm-flex-page', {
|
|
199
|
+
'gm-flex-justify-between-page': isUpperLowerCaseSeparate,
|
|
200
|
+
'gm-flex-grow-page': isUpperLowerCaseSeparate
|
|
201
|
+
})}
|
|
202
|
+
>
|
|
203
|
+
<span>
|
|
204
|
+
{/* 账户总计金额等固定取数字段走 useSummarize;拆分场景其余格不参与当页求和 */}
|
|
205
|
+
{extra.type === 'useSummarize'
|
|
206
|
+
? getData(extra.valueField)
|
|
207
|
+
: ''}
|
|
208
|
+
</span>
|
|
209
|
+
{subtotal?.needUpperCase &&
|
|
210
|
+
extra.type === 'useSummarize' && (
|
|
211
|
+
<span>
|
|
212
|
+
{'大写:' +
|
|
213
|
+
coverDigit2Uppercase(getData(extra.valueField))}
|
|
214
|
+
</span>
|
|
215
|
+
)}
|
|
216
|
+
</div>
|
|
217
|
+
</div>
|
|
218
|
+
</td>
|
|
219
|
+
))}
|
|
220
|
+
</tr>
|
|
221
|
+
)
|
|
222
|
+
}
|
|
223
|
+
|
|
137
224
|
return (
|
|
138
225
|
<tr>
|
|
139
226
|
{_.map(fields, (item, index) => {
|