uni-answer-sheet 2.1.0 → 2.2.0
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/CHANGELOG.md +7 -0
- package/README.md +16 -8
- package/dist/browser.js +46 -46
- package/dist/chunks/{index-CDvIw14k.js → index-ChLOq9ID.js} +479 -475
- package/dist/chunks/{runtime-C-fdAw2T.js → runtime-QFMZtUfH.js} +7895 -7796
- package/dist/index.js +1 -1
- package/dist/style.css +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# 更新记录
|
|
2
2
|
|
|
3
|
+
## 2.2.0
|
|
4
|
+
|
|
5
|
+
- 所有版式固定一张纸,只在纸内换栏。超过容量的内容保留在草稿中,纸面和题块列表显示提示,可打开完整内容窗口继续编辑。
|
|
6
|
+
- 超限时 `save()` / `validate()` 返回 `CONTENT_OVERFLOW`,`getRecognitionData()` 拒绝导出不完整坐标。删减后自动回排,全部容纳后恢复保存。
|
|
7
|
+
- 支持载入原先多纸面的草稿,保留题目和富文本;须调整到一张纸内再保存。
|
|
8
|
+
- 公共挂载 API、文档版本与富文本插件协议保持兼容,继续配合宿主显式安装的 `uni-editor@0.2.1` 使用。
|
|
9
|
+
|
|
3
10
|
## 2.1.0
|
|
4
11
|
|
|
5
12
|
- 新增 `getRecognitionData()`,`save()` 成功数据新增 `recognitionData`;等待字体、图片及分页稳定后测量。
|
package/README.md
CHANGED
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
|
|
5
5
|
`2.0.0` 使用全新的 DOM 插件 API,与原 `1.x` Vue 组件版接口不兼容。升级时请按本文重新挂载和注册富文本插件,旧版数据需转换为本文说明的文档格式。
|
|
6
6
|
|
|
7
|
-
`2.
|
|
7
|
+
`2.2.0` 将所有版式固定为一张物理纸面,新增超出内容的完整编辑窗口,并在保存及坐标导出时校验容量。升级后,原先多纸面的数据可作为草稿回显,但必须调整到一张纸内才能保存。挂载 API、文档版本和插件协议保持兼容。详见 [更新记录](./CHANGELOG.md)。
|
|
8
8
|
|
|
9
9
|
## 安装与依赖
|
|
10
10
|
|
|
11
11
|
```sh
|
|
12
|
-
npm install uni-answer-sheet@^2.
|
|
12
|
+
npm install uni-answer-sheet@^2.2.0
|
|
13
13
|
# 富文本由业务方单独安装,不会随制卡包自动安装。
|
|
14
14
|
npm install uni-editor@^0.2.1
|
|
15
15
|
```
|
|
@@ -19,7 +19,7 @@ npm install uni-editor@^0.2.1
|
|
|
19
19
|
本地验证未发布的版本时,从仓库根目录分别安装构建生成的 `.tgz` 文件:
|
|
20
20
|
|
|
21
21
|
```sh
|
|
22
|
-
npm install ./artifacts/uni-answer-sheet-2.
|
|
22
|
+
npm install ./artifacts/uni-answer-sheet-2.2.0.tgz ./artifacts/uni-editor-0.2.1.tgz
|
|
23
23
|
```
|
|
24
24
|
|
|
25
25
|
## 原生 JavaScript / TypeScript
|
|
@@ -191,8 +191,8 @@ interface ValidationIssue {
|
|
|
191
191
|
- 少选得分、选做数量、断句评分、作文格数/行数等题型约束。
|
|
192
192
|
- 富文本结构、空公式、图片地址和可见图片加载失败。
|
|
193
193
|
- 题卡合一的题干、材料、选项内容,以及所选填涂位置的对应关系。普通答题卡不要求填写题干,也不要求提供正确答案。
|
|
194
|
-
-
|
|
195
|
-
-
|
|
194
|
+
- 纸面标题、单张纸容量、不可拆分内容的纵向溢出,以及未分片编辑区域的横向溢出。
|
|
195
|
+
- 定位点及识别区域是否在纸面内、标记是否重叠、二维码 ID 和学科识别编码是否有效。
|
|
196
196
|
|
|
197
197
|
无法在 8 秒内完成输入/上传或稳定测量时返回 `EDITOR_BUSY` / `LAYOUT_PENDING`;容器隐藏或未设置有效尺寸时返回 `LAYOUT_UNAVAILABLE`,不会跳过布局校验。校验是当前数据和实际渲染的完整性检查,不判断学科内容或答案是否正确。外部图片/字体稍后失效仍需业务方管理。
|
|
198
198
|
|
|
@@ -200,7 +200,15 @@ interface ValidationIssue {
|
|
|
200
200
|
|
|
201
201
|
## 定位标记与识别坐标
|
|
202
202
|
|
|
203
|
-
新建后的纸面自动显示四角定位点,上方 26×13 px、下方 13×26 px
|
|
203
|
+
新建后的纸面自动显示四角定位点,上方 26×13 px、下方 13×26 px。从 `2.2.0` 起,所有版式固定 **1 个物理纸面**,两栏和三栏都在同一张纸内换栏。学科标记沿用参考项目 15 个标准学科的四方格映射。二维码编码内容为 `creation.exampaperId` 本身。
|
|
204
|
+
|
|
205
|
+
A3 双栏、三栏仍有 2、3 个栏页码,均属于同一张纸;保存成功时 `recognitionData.pages.length === 1`。
|
|
206
|
+
|
|
207
|
+
### 单张纸容量
|
|
208
|
+
|
|
209
|
+
内容超限时不新增纸面。纸面仅显示能排下的部分,边界和题块列表显示“未排入纸张”提示;点击“查看完整内容”打开可拖拽窗口,查看、编辑完整草稿。窗口标出未排入的内容,修改后实时重排。单独答题卡的题干及合并填涂区使用不同打印投影时,提示整个受影响题块,避免标注错误的正文截断位置。
|
|
210
|
+
|
|
211
|
+
`getDocument()` 和 `onChange` 始终保留完整草稿,包括未排入的内容。`save()` / `validate()` 返回带 `blockId` 的 `CONTENT_OVERFLOW`,不提供可保存数据;`getRecognitionData()` 抛出 `AnswerSheetDataError`。完整内容窗口不参与纸面坐标测量。所有内容排入纸张后恢复保存及 PDF 导出。旧版多纸面文档可作为草稿回显,但同样必须调整到一张纸内才能保存。
|
|
204
212
|
|
|
205
213
|
```ts
|
|
206
214
|
await sheet.initialize({
|
|
@@ -227,7 +235,7 @@ if (saved.ok) {
|
|
|
227
235
|
- 每面包含 `pageSize`、`anchorOrigin`、`anchorSize`、`panelSize`、四个 `anchors` 和 `regions[]`。`anchorOrigin` 仅记录左上定位点在纸面上的位置,与 `anchors.topLeft.x/y` 一致;它不再充当坐标原点。
|
|
228
236
|
- **所有区域、单元格及四个定位点都使用所在物理纸面左上角 `(0, 0)` 的全局坐标**,向右为 X 正方向、向下为 Y 正方向。`rect: { x, y, width, height }` 已包含纸面边距和栏位置,可直接使用,不需要累加定位点或父区域偏移。
|
|
229
237
|
- 每张物理纸面独立从 `(0, 0)` 开始;不包含视口缩放、滚动、上一张纸的高度或纸张之间的展示间距。密封线条码、顶部二维码仍在纸张内,坐标无需使用负值。
|
|
230
|
-
- 区域通过 `blockId`、`questionId`、`partId`、`answerId`、`optionId` 关联源数据;`role` 区分 `region`、`cell`、`line
|
|
238
|
+
- 区域通过 `blockId`、`questionId`、`partId`、`answerId`、`optionId` 关联源数据;`role` 区分 `region`、`cell`、`line`。跨栏区域分开记录并保留相同题目 ID,选做共享区域另有 `questionIds`。
|
|
231
239
|
- `sectionType` 包括 `ClassId`、`StudentId`、`IgnoreFlag`、`MultiChoice`、`Checkbox`、`FrameOnly`、`ScoreBox`、`QuestionChoice`、`Blank`、`PageCode`、`SubjectCode`、`ExamQrCode`、`ReferencePoint`。填涂区域包含实际单元格坐标,不依赖等宽假设。
|
|
232
240
|
|
|
233
241
|
读取单元格示例:
|
|
@@ -270,7 +278,7 @@ await sheet.initialize({
|
|
|
270
278
|
|
|
271
279
|
“添加题块”弹窗的纸面区域入口,普通答题卡显示“禁止答题区”,题卡合一显示“空白答题区”。区域可编辑文字、拖动调整高度、复制、删除和调整顺序。源数据存为 `kind: 'area'`、`areaType: 'forbiden' | 'editArea'`、`answerHeight`、`document`,保留参考项目 `forbiden` 的拼写。
|
|
272
280
|
|
|
273
|
-
默认禁答区高 100 px,空白答题区高 200 px
|
|
281
|
+
默认禁答区高 100 px,空白答题区高 200 px。禁答区与参考项目一致,不能拆分,高度不超过一栏,剩余空间不足时整块换栏;空白答题区可连续跨栏,超出单张纸的部分保留在草稿中。它们不属于题目,不进入 `sectionInfoList`,需用完整保存数据回显。切换题卡合一时,与参考项目一样删除不适用的纸面区域。仅含纸面区域的卡不能作为完整试卷保存。
|
|
274
282
|
|
|
275
283
|
## 回显已保存的题卡
|
|
276
284
|
|