hoeditor-web 3.3.7-beta.1 → 3.3.7-beta.2

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/lib/hoeditor.mjs CHANGED
@@ -1,12 +1,13 @@
1
1
  import "vue";
2
- import { H as i, d as r, b as e, a as l, e as t, T as H, f as d, i as f } from "./index-CIhVB8qQ.mjs";
2
+ import { B as e, H as i, d as r, b as t, a as l, e as H, T as d, f as n, i as B } from "./index-bO7fevfh.mjs";
3
3
  export {
4
+ e as BusinessDataKeys,
4
5
  i as HoDocs,
5
6
  r as HoEditorProvide,
6
- e as HoMedicalExpression,
7
+ t as HoMedicalExpression,
7
8
  l as HoRightMenu,
8
- t as HoToolBar,
9
- H as ToolBar,
10
- d as default,
11
- f as install
9
+ H as HoToolBar,
10
+ d as ToolBar,
11
+ n as default,
12
+ B as install
12
13
  };
@@ -23031,7 +23031,7 @@ WebPDecoder.prototype.getData = function() {
23031
23031
  (function(a) {
23032
23032
  function t() {
23033
23033
  return function() {
23034
- return globalObject.canvg ? Promise.resolve(globalObject.canvg) : import("./index.es-B46IkhKu.mjs");
23034
+ return globalObject.canvg ? Promise.resolve(globalObject.canvg) : import("./index.es-DHit0CXU.mjs");
23035
23035
  }().catch(function(r) {
23036
23036
  return Promise.reject(new Error("Could not load canvg: " + r));
23037
23037
  }).then(function(r) {
@@ -24626,7 +24626,7 @@ class DrawSignNode extends DrawCombineNode {
24626
24626
  }
24627
24627
  }
24628
24628
  }
24629
- const version = "3.3.7-beta.1";
24629
+ const version = "3.3.7-beta.2";
24630
24630
  var FingerPosition = /* @__PURE__ */ ((a) => (a[a.left = 0] = "left", a[a.center = 1] = "center", a[a.right = 2] = "right", a))(FingerPosition || {});
24631
24631
  class SignNode extends BaseNode {
24632
24632
  constructor(hoEditorFactoryID, rootNodes, pNode, nodeType, number, type, name, signType, signFormat, signor, signTime, signTimeFormat, imgSrc, imgWidth, imgHeight, customProperty, isTemplate, styleIndex, connectMode, isFront, allowEditSignTime, fingerPrintSrc, fingerPosition, attribute, connectChar, otherProperties, dataId, associatedElement, associatedPatientElement, isTemp, innerIdentifier) {
@@ -52116,7 +52116,7 @@ class HTMLconverter2 {
52116
52116
  }
52117
52117
  const f = (g) => {
52118
52118
  let y = 0, w = g.style.width;
52119
- return (w == "0px" || w == "0pt" || w == "0") && (w = "30px"), w && (w.indexOf("pt") >= 0 ? (y = parseFloat(w.substring(0, w.indexOf("pt"))), y = n.unitConvert.fontPt2Pix(y)) : w.indexOf("px") >= 0 ? y = parseFloat(w.substring(0, w.indexOf("px"))) : y = parseFloat(w)), y;
52119
+ return (w == "0px" || w == "0pt" || w == "0") && (w = "30px"), w && (w.indexOf("%") >= 0 ? y = Math.round(parseFloat(w) / 100 * o.getParentWidth()) : w.indexOf("pt") >= 0 ? (y = parseFloat(w.substring(0, w.indexOf("pt"))), y = n.unitConvert.fontPt2Pix(y)) : w.indexOf("px") >= 0 ? y = parseFloat(w.substring(0, w.indexOf("px"))) : y = parseFloat(w)), y;
52120
52120
  };
52121
52121
  for (let g = 0; g < r[u].length; g++) {
52122
52122
  let y = 0;
@@ -58898,7 +58898,7 @@ class TOHTMLConverter {
58898
58898
  } else if (t.nodeType == NodeType$1[NodeType$1.ntCell]) {
58899
58899
  r += "margin: 0;";
58900
58900
  let l = 0;
58901
- if (o.colWidth && n.unitConvert.pxToPt(o.colWidth), r += o.colWidth ? `width:${l}pt;` : "", o.crossLineType)
58901
+ if (o.colWidth && (l = n.unitConvert.pxToPt(o.colWidth)), r += o.colWidth ? `width:${l}pt;` : "", o.crossLineType)
58902
58902
  switch (o.crossLineType) {
58903
58903
  case CrossLineType[CrossLineType.ct02]: {
58904
58904
  r += "mso-diagonal-down: 0.5pt solid windowtext;";
@@ -60297,6 +60297,28 @@ class VueController {
60297
60297
  commonParamList.set(o, r[o]);
60298
60298
  });
60299
60299
  }
60300
+ /**
60301
+ * 取业务数据(通用入口)
60302
+ * 编辑器不直接调接口,由宿主通过 setHoEditorFactoryParams 注入 onFetchBusinessData,按 key 分发
60303
+ * 未注入、超时、异常 一律返回 null,由调用方按「无数据」处理
60304
+ * @param key 业务数据标识,见 src/businessDataKeys.ts
60305
+ * @param params 透传给宿主的附加参数
60306
+ * @param timeout 超时时间(ms),防止宿主回调不 resolve 导致调用方一直等待
60307
+ */
60308
+ async getBusinessData(t, r, o = 5e3) {
60309
+ const n = HOEditorFactorys.instance().getFactory(this._hoEditorFactoryID), s = n == null ? void 0 : n.onFetchBusinessData;
60310
+ if (typeof s != "function") return null;
60311
+ try {
60312
+ return await Promise.race([
60313
+ Promise.resolve(s(t, r)),
60314
+ new Promise((l, c) => {
60315
+ setTimeout(() => c(new Error(`onFetchBusinessData timeout: ${t}`)), o);
60316
+ })
60317
+ ]);
60318
+ } catch {
60319
+ return null;
60320
+ }
60321
+ }
60300
60322
  /**
60301
60323
  * 设置页面属性
60302
60324
  */
@@ -73176,6 +73198,14 @@ class HOEditorFactory {
73176
73198
  // 绘制模式 1: Unicode 转义 2: 字形
73177
73199
  /** 编辑器指令回调:宿主可通过 setHoEditorFactoryParams 绑定,接收编辑器发出的指令及参数 */
73178
73200
  b(this, "onEditorCommand", null);
73201
+ /**
73202
+ * 业务数据取数回调:宿主可通过 setHoEditorFactoryParams 绑定
73203
+ * 编辑器不直接调接口,各处需要外部数据时统一走这里,用 key 区分取哪份数据
73204
+ * @param key 业务数据标识,见 src/businessDataKeys.ts
73205
+ * @param params 透传给宿主的附加参数
73206
+ * @returns 取到的数据;取数失败可直接抛错或返回空值,编辑器按「无数据」处理
73207
+ */
73208
+ b(this, "onFetchBusinessData", null);
73179
73209
  this._hoEditorFactoryId = t;
73180
73210
  }
73181
73211
  /**
@@ -74104,7 +74134,62 @@ const QrCode = __component__$16.exports, lBZ11 = "data:image/png;base64,iVBORw0K
74104
74134
  }, Symbol.toStringTag, { value: "Module" })), rTZ81 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAE4AAACXCAYAAAC7m236AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAHOmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxOS0wNS0wNlQxNTo0NDoxOSswODowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0wNS0wNlQxNTo0NjozMyswODowMCIgeG1wOk1vZGlmeURhdGU9IjIwMTktMDUtMDZUMTU6NDY6MzMrMDg6MDAiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6YjUzZTEzNjYtMDcyNC1iODQxLTg1ZDItNWZhNDA0ZjBmYzE5IiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6NTVjMjUzMTItNDZkNC03YjRhLWE1NmQtNTk0MWJkMWJiMjI1IiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6ZjZkM2FmYWItZDdlZS05NjRiLWJhYTYtNTE0MWZhNzE3NTA4IiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpmNmQzYWZhYi1kN2VlLTk2NGItYmFhNi01MTQxZmE3MTc1MDgiIHN0RXZ0OndoZW49IjIwMTktMDUtMDZUMTU6NDQ6MTkrMDg6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjNmZjMzZjg2LTIyZDktYjk0NC1hYjc4LWZiZDA2M2EyZWVhMCIgc3RFdnQ6d2hlbj0iMjAxOS0wNS0wNlQxNTo0NDoxOSswODowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6YjUzZTEzNjYtMDcyNC1iODQxLTg1ZDItNWZhNDA0ZjBmYzE5IiBzdEV2dDp3aGVuPSIyMDE5LTA1LTA2VDE1OjQ2OjMzKzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8cGhvdG9zaG9wOkRvY3VtZW50QW5jZXN0b3JzPiA8cmRmOkJhZz4gPHJkZjpsaT5ENjYwM0U3RTFGMERCQTY4RTQ1MUExQjFCQUVDQjY2Qzwv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", __vite_glob_0_31 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
74105
74135
  __proto__: null,
74106
74136
  default: rTZ81
74107
- }, Symbol.toStringTag, { value: "Module" })), ywtImages = /* @__PURE__ */ Object.assign({ "/src/assets/images/ywt/l-b-z-1-1.png": __vite_glob_0_0, "/src/assets/images/ywt/l-b-z-2-1.png": __vite_glob_0_1, "/src/assets/images/ywt/l-b-z-3-1.png": __vite_glob_0_2, "/src/assets/images/ywt/l-b-z-4-1.png": __vite_glob_0_3, "/src/assets/images/ywt/l-b-z-5-1.png": __vite_glob_0_4, "/src/assets/images/ywt/l-b-z-6-1.png": __vite_glob_0_5, "/src/assets/images/ywt/l-b-z-7-1.png": __vite_glob_0_6, "/src/assets/images/ywt/l-b-z-8-1.png": __vite_glob_0_7, "/src/assets/images/ywt/l-t-z-1-1.png": __vite_glob_0_8, "/src/assets/images/ywt/l-t-z-2-1.png": __vite_glob_0_9, "/src/assets/images/ywt/l-t-z-3-1.png": __vite_glob_0_10, "/src/assets/images/ywt/l-t-z-4-1.png": __vite_glob_0_11, "/src/assets/images/ywt/l-t-z-5-1.png": __vite_glob_0_12, "/src/assets/images/ywt/l-t-z-6-1.png": __vite_glob_0_13, "/src/assets/images/ywt/l-t-z-7-1.png": __vite_glob_0_14, "/src/assets/images/ywt/l-t-z-8-1.png": __vite_glob_0_15, "/src/assets/images/ywt/r-b-z-1-1.png": __vite_glob_0_16, "/src/assets/images/ywt/r-b-z-2-1.png": __vite_glob_0_17, "/src/assets/images/ywt/r-b-z-3-1.png": __vite_glob_0_18, "/src/assets/images/ywt/r-b-z-4-1.png": __vite_glob_0_19, "/src/assets/images/ywt/r-b-z-5-1.png": __vite_glob_0_20, "/src/assets/images/ywt/r-b-z-6-1.png": __vite_glob_0_21, "/src/assets/images/ywt/r-b-z-7-1.png": __vite_glob_0_22, "/src/assets/images/ywt/r-b-z-8-1.png": __vite_glob_0_23, "/src/assets/images/ywt/r-t-z-1-1.png": __vite_glob_0_24, "/src/assets/images/ywt/r-t-z-2-1.png": __vite_glob_0_25, "/src/assets/images/ywt/r-t-z-3-1.png": __vite_glob_0_26, "/src/assets/images/ywt/r-t-z-4-1.png": __vite_glob_0_27, "/src/assets/images/ywt/r-t-z-5-1.png": __vite_glob_0_28, "/src/assets/images/ywt/r-t-z-6-1.png": __vite_glob_0_29, "/src/assets/images/ywt/r-t-z-7-1.png": __vite_glob_0_30, "/src/assets/images/ywt/r-t-z-8-1.png": __vite_glob_0_31 }), _sfc_main$15 = defineComponent({
74137
+ }, Symbol.toStringTag, { value: "Module" })), PERMANENT_QUADRANT_TO_KEY = {
74138
+ 1: "topLeft",
74139
+ // 患者右上
74140
+ 2: "topRight",
74141
+ // 患者左上
74142
+ 3: "bottomRight",
74143
+ // 患者左下
74144
+ 4: "bottomLeft"
74145
+ // 患者右下
74146
+ }, PRIMARY_QUADRANT_TO_KEY = {
74147
+ 5: "topLeft",
74148
+ 6: "topRight",
74149
+ 7: "bottomRight",
74150
+ 8: "bottomLeft"
74151
+ }, PRIMARY_TOOTH_LETTERS = ["A", "B", "C", "D", "E"], PRIMARY_LETTER_TO_PERMANENT = {
74152
+ A: "1",
74153
+ B: "2",
74154
+ C: "3",
74155
+ D: "4",
74156
+ E: "5"
74157
+ };
74158
+ function convertFdiTeethToQuadrants(a) {
74159
+ if (!Array.isArray(a) || a.length === 0) return null;
74160
+ const t = {
74161
+ topLeft: [],
74162
+ topRight: [],
74163
+ bottomLeft: [],
74164
+ bottomRight: []
74165
+ };
74166
+ return a.forEach((r) => {
74167
+ const o = String((r == null ? void 0 : r.vfc09) ?? "").trim();
74168
+ if (!/^[1-8][1-8]$/.test(o)) return;
74169
+ const n = o[0], s = Number(o[1]), l = n in PERMANENT_QUADRANT_TO_KEY, c = l ? PERMANENT_QUADRANT_TO_KEY[n] : PRIMARY_QUADRANT_TO_KEY[n];
74170
+ if (!c) return;
74171
+ let d;
74172
+ if (l)
74173
+ d = o[1];
74174
+ else if (s >= 1 && s <= 5)
74175
+ d = PRIMARY_TOOTH_LETTERS[s - 1];
74176
+ else
74177
+ return;
74178
+ t[c].includes(d) || t[c].push(d);
74179
+ }), Object.keys(t).forEach((r) => {
74180
+ t[r] = t[r].filter((o) => {
74181
+ const n = PRIMARY_LETTER_TO_PERMANENT[o];
74182
+ return !n || !t[r].includes(n);
74183
+ });
74184
+ }), t;
74185
+ }
74186
+ const BusinessDataKeys = {
74187
+ /**
74188
+ * style10 牙位图:医生站牙位数据
74189
+ * 返回 FDI 两位编码的记录数组,每项取 vfc09 字段(如 "11" 右上中切牙、"52" 右上乳侧切牙)
74190
+ */
74191
+ teethMap: "teethMap"
74192
+ }, ywtImages = /* @__PURE__ */ Object.assign({ "/src/assets/images/ywt/l-b-z-1-1.png": __vite_glob_0_0, "/src/assets/images/ywt/l-b-z-2-1.png": __vite_glob_0_1, "/src/assets/images/ywt/l-b-z-3-1.png": __vite_glob_0_2, "/src/assets/images/ywt/l-b-z-4-1.png": __vite_glob_0_3, "/src/assets/images/ywt/l-b-z-5-1.png": __vite_glob_0_4, "/src/assets/images/ywt/l-b-z-6-1.png": __vite_glob_0_5, "/src/assets/images/ywt/l-b-z-7-1.png": __vite_glob_0_6, "/src/assets/images/ywt/l-b-z-8-1.png": __vite_glob_0_7, "/src/assets/images/ywt/l-t-z-1-1.png": __vite_glob_0_8, "/src/assets/images/ywt/l-t-z-2-1.png": __vite_glob_0_9, "/src/assets/images/ywt/l-t-z-3-1.png": __vite_glob_0_10, "/src/assets/images/ywt/l-t-z-4-1.png": __vite_glob_0_11, "/src/assets/images/ywt/l-t-z-5-1.png": __vite_glob_0_12, "/src/assets/images/ywt/l-t-z-6-1.png": __vite_glob_0_13, "/src/assets/images/ywt/l-t-z-7-1.png": __vite_glob_0_14, "/src/assets/images/ywt/l-t-z-8-1.png": __vite_glob_0_15, "/src/assets/images/ywt/r-b-z-1-1.png": __vite_glob_0_16, "/src/assets/images/ywt/r-b-z-2-1.png": __vite_glob_0_17, "/src/assets/images/ywt/r-b-z-3-1.png": __vite_glob_0_18, "/src/assets/images/ywt/r-b-z-4-1.png": __vite_glob_0_19, "/src/assets/images/ywt/r-b-z-5-1.png": __vite_glob_0_20, "/src/assets/images/ywt/r-b-z-6-1.png": __vite_glob_0_21, "/src/assets/images/ywt/r-b-z-7-1.png": __vite_glob_0_22, "/src/assets/images/ywt/r-b-z-8-1.png": __vite_glob_0_23, "/src/assets/images/ywt/r-t-z-1-1.png": __vite_glob_0_24, "/src/assets/images/ywt/r-t-z-2-1.png": __vite_glob_0_25, "/src/assets/images/ywt/r-t-z-3-1.png": __vite_glob_0_26, "/src/assets/images/ywt/r-t-z-4-1.png": __vite_glob_0_27, "/src/assets/images/ywt/r-t-z-5-1.png": __vite_glob_0_28, "/src/assets/images/ywt/r-t-z-6-1.png": __vite_glob_0_29, "/src/assets/images/ywt/r-t-z-7-1.png": __vite_glob_0_30, "/src/assets/images/ywt/r-t-z-8-1.png": __vite_glob_0_31 }), _sfc_main$15 = defineComponent({
74108
74193
  name: "ExpressionForm",
74109
74194
  data() {
74110
74195
  return {
@@ -74113,6 +74198,8 @@ const QrCode = __component__$16.exports, lBZ11 = "data:image/png;base64,iVBORw0K
74113
74198
  isUseDate: !1,
74114
74199
  useText: !1,
74115
74200
  useDateFormat: "yyyy-MM-DD",
74201
+ // style10 牙位图「同步牙位图数据」:弹窗初始化时取一次并缓存,只用于判断按钮是否置灰,不回填
74202
+ teethMapData: null,
74116
74203
  names: {
74117
74204
  style1: i18nHelper("04-001-009-EMR.3.3.550", null, "经期史"),
74118
74205
  style2: i18nHelper("04-001-009-EMR.3.3.550", null, "经期史"),
@@ -74448,6 +74535,10 @@ const QrCode = __component__$16.exports, lBZ11 = "data:image/png;base64,iVBORw0K
74448
74535
  expressStyle() {
74449
74536
  return this.hoEditorProvider.expressStyle;
74450
74537
  },
74538
+ /** 医生站数据是否有效:数组为空、接口超时/失败(取数返回 null)都算「无数据」,同步按钮置灰 */
74539
+ hasTeethMapData() {
74540
+ return Array.isArray(this.teethMapData) && this.teethMapData.length > 0;
74541
+ },
74451
74542
  menoPauseAgeText() {
74452
74543
  return this.expressStyle === "style1" ? this.showAgeUnit ? i18nHelper("04-001-009-EMR.3.3.551", null, "岁") : "" : i18nHelper("04-001-009-EMR.3.3.551", null, "岁");
74453
74544
  }
@@ -74498,12 +74589,11 @@ const QrCode = __component__$16.exports, lBZ11 = "data:image/png;base64,iVBORw0K
74498
74589
  this.style13.age = t ? t[1] : "";
74499
74590
  }
74500
74591
  }
74592
+ this.expressStyle === "style10" && this.loadTeethMapData();
74501
74593
  },
74502
74594
  methods: {
74503
74595
  getImageUrl(a) {
74504
- const t = Object.keys(ywtImages).find(
74505
- (r) => r.endsWith(`/ywt/${a}`)
74506
- );
74596
+ const t = Object.keys(ywtImages).find((r) => r.endsWith(`/ywt/${a}`));
74507
74597
  return t ? ywtImages[t].default : "";
74508
74598
  },
74509
74599
  useDateChange() {
@@ -74553,6 +74643,19 @@ const QrCode = __component__$16.exports, lBZ11 = "data:image/png;base64,iVBORw0K
74553
74643
  bottomRight: a ? [] : [...this.style8.bottomRight]
74554
74644
  };
74555
74645
  },
74646
+ /** 取医生站牙位数据并缓存:只用于判断「同步牙位图数据」按钮是否置灰,不回填 */
74647
+ async loadTeethMapData() {
74648
+ this.teethMapData = await this.vueController.getBusinessData(BusinessDataKeys.teethMap);
74649
+ },
74650
+ /**
74651
+ * 同步牙位图数据:用初始化时缓存的那份数据完全覆盖当前选择,并直接提交落库
74652
+ * 映射结果已按「恒牙优先」消解掉恒牙/乳牙的同位置互斥,可直接赋值;
74653
+ * 不能再走 handleStyle10Value,那个是依赖数据顺序的「后覆盖前」逻辑
74654
+ */
74655
+ syncFromClinicData() {
74656
+ const a = convertFdiTeethToQuadrants(this.teethMapData);
74657
+ a && (this.style89 = { ...this.style89, ...a }, this.sure());
74658
+ },
74556
74659
  /** 反选 */
74557
74660
  reverse() {
74558
74661
  this.reverseOrSort("reverse");
@@ -74858,7 +74961,7 @@ var _sfc_render$15 = function a() {
74858
74961
  t.$set(t.style89, "bottomRight", o);
74859
74962
  }, expression: "style89.bottomRight" } }, t._l(["I", "II", "III", "IV", "V"], function(o) {
74860
74963
  return r("a-checkbox", { key: o + "d", attrs: { value: o } }, [t._v(t._s(o))]);
74861
- }), 1)], 1)])] : t._e(), t.expressStyle === "style10" ? [r("div", { staticClass: "style89 style10", staticStyle: { position: "relative" } }, [r("div", { staticClass: "style10-half-select-wrap" }, [r("a-button", { staticClass: "style10-half-select", on: { click: t.toggleAllTop } }, [t._v("横向全选")]), r("a-button", { staticClass: "style10-half-select", on: { click: t.toggleAllBottom } }, [t._v("横向全选")])], 1), r("p", { staticStyle: { position: "absolute", width: "1px", height: "100%", background: "#ccc", left: "429px", "z-index": "11" } }), r("div", { staticClass: "ho-emr-checkbox-expression" }, [r("a-checkbox-group", { staticClass: "ho-emr-checkbox-button ho-emr-checkbox-button-right", attrs: { value: t.style89.topLeft, size: "small" }, on: { change: t.topLeftChange } }, [r("ul", { staticStyle: { "justify-content": "right" } }, t._l(t.style10Right, function(o) {
74964
+ }), 1)], 1)])] : t._e(), t.expressStyle === "style10" ? [r("div", { staticClass: "style89 style10", staticStyle: { position: "relative" } }, [r("div", { staticClass: "style10-half-select-wrap" }, [r("a-button", { staticClass: "style10-half-select", on: { click: t.toggleAllTop } }, [t._v("横向全选")]), r("a-button", { staticClass: "style10-half-select", on: { click: t.toggleAllBottom } }, [t._v("横向全选")])], 1), r("p", { staticStyle: { position: "absolute", width: "1px", height: "100%", background: "#ccc", left: "419px", "z-index": "11" } }), r("div", { staticClass: "ho-emr-checkbox-expression" }, [r("a-checkbox-group", { staticClass: "ho-emr-checkbox-button ho-emr-checkbox-button-right", attrs: { value: t.style89.topLeft, size: "small" }, on: { change: t.topLeftChange } }, [r("ul", { staticStyle: { "justify-content": "right" } }, t._l(t.style10Right, function(o) {
74862
74965
  return r("li", { key: o + "a", class: { selected: t.style89.topLeft.includes(o[0]) || t.style89.topLeft.includes(o[1]) }, on: { click: function(n) {
74863
74966
  return t.topLeftClick(o[0]);
74864
74967
  } } }, [r("div", { class: "img-box" }, [r("img", { attrs: { src: t.getImageUrl("r-t-z-" + o[0] + "-1.png"), alt: "" } })])]);
@@ -74922,7 +75025,7 @@ var _sfc_render$15 = function a() {
74922
75025
  t.$set(t.style13, "scr", o);
74923
75026
  }, expression: "style13.scr" } })], 1)], 1), r("a-col", { attrs: { span: 12 } }, [r("a-form-model-item", { attrs: { label: "AUC(可选)", prop: "auc" } }, [r("a-input", { staticStyle: { width: "100%" }, attrs: { placeholder: "AUC", suffix: "" }, model: { value: t.style13.auc, callback: function(o) {
74924
75027
  t.$set(t.style13, "auc", o);
74925
- }, expression: "style13.auc" } })], 1)], 1)], 1)], 1), r("div", { staticClass: "style12-card", staticStyle: { "margin-top": "6px" } }, [t._m(7), r("div", { staticClass: "style12-card-content" }, [t.style13.ccr ? r("p", [t._v("CCR(肌酐清除率) = " + t._s(t.style13.ccr) + " mL/min")]) : t._e(), t.style13.dose ? r("p", [t._v("Carboplatin(卡铂剂量) = " + t._s(t.style13.dose) + " mg")]) : t._e()])])], 1)] : t._e()], 2), r("footer", { staticClass: "dialog-footer" }, [r("a-button", { staticStyle: { margin: "0 20px 0 0" }, attrs: { type: "primary" }, on: { click: t.sure } }, [t._v(i18nHelper("04-001-009-EMR.3.3.347", null, "确定"))]), t.expressStyle === "style8" || t.expressStyle === "style9" || t.expressStyle === "style10" ? r("a-button", { staticStyle: { margin: "0 20px 0 0" }, on: { click: t.reset } }, [t._v(i18nHelper("04-001-009-EMR.3.3.203", null, "重置"))]) : t._e(), t.expressStyle === "style8" || t.expressStyle === "style9" ? r("a-button", { staticStyle: { margin: "0 20px 0 0" }, on: { click: t.reverse } }, [t._v(i18nHelper("04-001-009-EMR.3.3.202", null, "反选"))]) : t._e(), t.expressStyle === "style8" || t.expressStyle === "style9" || t.expressStyle === "style10" ? r("a-button", { staticStyle: { margin: "0 20px 0 0" }, on: { click: t.all } }, [t._v(i18nHelper("04-001-009-EMR.3.3.201", null, "全选"))]) : t._e(), r("a-button", { on: { click: t.cancel } }, [t._v(i18nHelper("04-001-009-EMR.3.3.346", null, "取消"))])], 1)]);
75028
+ }, expression: "style13.auc" } })], 1)], 1)], 1)], 1), r("div", { staticClass: "style12-card", staticStyle: { "margin-top": "6px" } }, [t._m(7), r("div", { staticClass: "style12-card-content" }, [t.style13.ccr ? r("p", [t._v("CCR(肌酐清除率) = " + t._s(t.style13.ccr) + " mL/min")]) : t._e(), t.style13.dose ? r("p", [t._v("Carboplatin(卡铂剂量) = " + t._s(t.style13.dose) + " mg")]) : t._e()])])], 1)] : t._e()], 2), r("footer", { staticClass: "dialog-footer" }, [r("a-button", { staticStyle: { margin: "0 20px 0 0" }, attrs: { type: "primary" }, on: { click: t.sure } }, [t._v(i18nHelper("04-001-009-EMR.3.3.347", null, "确定"))]), t.expressStyle === "style10" ? r("a-tooltip", { attrs: { placement: "top", title: "牙位图数据来自诊断/医嘱" } }, [r("span", { staticStyle: { display: "inline-block", margin: "0 20px 0 0" } }, [r("a-button", { attrs: { disabled: !t.hasTeethMapData }, on: { click: t.syncFromClinicData } }, [t._v("同步牙位图数据")])], 1)]) : t._e(), t.expressStyle === "style8" || t.expressStyle === "style9" || t.expressStyle === "style10" ? r("a-button", { staticStyle: { margin: "0 20px 0 0" }, on: { click: t.reset } }, [t._v(i18nHelper("04-001-009-EMR.3.3.203", null, "重置"))]) : t._e(), t.expressStyle === "style8" || t.expressStyle === "style9" ? r("a-button", { staticStyle: { margin: "0 20px 0 0" }, on: { click: t.reverse } }, [t._v(i18nHelper("04-001-009-EMR.3.3.202", null, "反选"))]) : t._e(), t.expressStyle === "style8" || t.expressStyle === "style9" || t.expressStyle === "style10" ? r("a-button", { staticStyle: { margin: "0 20px 0 0" }, on: { click: t.all } }, [t._v(i18nHelper("04-001-009-EMR.3.3.201", null, "全选"))]) : t._e(), r("a-button", { on: { click: t.cancel } }, [t._v(i18nHelper("04-001-009-EMR.3.3.346", null, "取消"))])], 1)]);
74926
75029
  }, _sfc_staticRenderFns$15 = [function() {
74927
75030
  var a = this, t = a._self._c;
74928
75031
  return a._self._setupProxy, t("ul", { staticClass: "titles" }, [t("li", [a._v(i18nHelper("04-001-009-EMR.3.3.215", null, "第三磨牙"))]), t("li", [a._v(i18nHelper("04-001-009-EMR.3.3.214", null, "第二磨牙"))]), t("li", [a._v(i18nHelper("04-001-009-EMR.3.3.213", null, "第一磨牙"))]), t("li", [a._v(i18nHelper("04-001-009-EMR.3.3.212", null, "第二前磨牙"))]), t("li", [a._v(i18nHelper("04-001-009-EMR.3.3.211", null, "第一前磨牙"))]), t("li", [a._v(i18nHelper("04-001-009-EMR.3.3.210", null, "尖牙"))]), t("li", [a._v(i18nHelper("04-001-009-EMR.3.3.209", null, "侧切牙"))]), t("li", [a._v(i18nHelper("04-001-009-EMR.3.3.208", null, "中切牙"))]), t("li", [a._v(i18nHelper("04-001-009-EMR.3.3.208", null, "中切牙"))]), t("li", [a._v(i18nHelper("04-001-009-EMR.3.3.209", null, "侧切牙"))]), t("li", [a._v(i18nHelper("04-001-009-EMR.3.3.210", null, "尖牙"))]), t("li", [a._v(i18nHelper("04-001-009-EMR.3.3.211", null, "第一前磨牙"))]), t("li", [a._v(i18nHelper("04-001-009-EMR.3.3.212", null, "第二前磨牙"))]), t("li", [a._v(i18nHelper("04-001-009-EMR.3.3.213", null, "第一磨牙"))]), t("li", [a._v(i18nHelper("04-001-009-EMR.3.3.214", null, "第二磨牙"))]), t("li", [a._v(i18nHelper("04-001-009-EMR.3.3.215", null, "第三磨牙"))])]);
@@ -88536,6 +88639,7 @@ const _default = {
88536
88639
  $Rarewords
88537
88640
  };
88538
88641
  export {
88642
+ BusinessDataKeys as B,
88539
88643
  HoDocs as H,
88540
88644
  ToolBar as T,
88541
88645
  _typeof$2 as _,
@@ -1,4 +1,4 @@
1
- import { c as Da, _ as Va, g as il } from "./index-CIhVB8qQ.mjs";
1
+ import { c as Da, _ as Va, g as il } from "./index-bO7fevfh.mjs";
2
2
  var fn = {}, cn = {}, cr, vn;
3
3
  function Q() {
4
4
  if (vn) return cr;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hoeditor-web",
3
- "version": "3.3.7-beta.1",
3
+ "version": "3.3.7-beta.2",
4
4
  "private": false,
5
5
  "main": "lib/hoeditor.mjs",
6
6
  "typings": "types/index.d.ts",