@gct-paas/word 0.1.47-beta.3 → 0.1.47-beta.5

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.
@@ -3,6 +3,7 @@ import { Doc } from '../../view/Doc';
3
3
  import { Wr, Wp, Wtbl, Wtr, Wtc } from '../../model/document';
4
4
  import { RawElement } from '../../model/types/raw';
5
5
  import { CursorManager } from '../../cursor/CursorManager';
6
+ import { LayoutNode } from '../../view/base/LayoutNode';
6
7
  export declare const SelectionMode: {
7
8
  readonly PP: "PP";
8
9
  readonly PTr: "PTr";
@@ -209,5 +210,7 @@ export declare abstract class CommandBase<T extends CommandType = CommandType> i
209
210
  modelIndex: number;
210
211
  modelParent: Wp;
211
212
  } | undefined;
213
+ /** 设计态删除字段组件后,清理 DataManager 中该字段的 defaults / rawData / 依赖 */
214
+ protected cleanupDesignFieldBinding(run?: LayoutNode): void;
212
215
  }
213
216
  export {};
@@ -290,6 +290,18 @@ export declare class DataManager {
290
290
  * 获取父路径
291
291
  */
292
292
  private getParentPath;
293
+ /**
294
+ * 设计态删除字段后,清理该字段在 DataManager 中的绑定数据
295
+ * @param designValuePath 设计时 valuePath(可含 [n] / [n_y][n_x] 通配符)
296
+ * @param runtimeValuePath 版面解析后的具体路径(可选)
297
+ */
298
+ removeFieldBindingData(designValuePath: JsonPath, runtimeValuePath?: JsonPath): void;
299
+ /** 收集与字段绑定相关的路径(含 value / label / href 及通配符变体) */
300
+ private collectFieldBindingPaths;
301
+ /** 收集可从 rawData 删除的具体路径(跳过含通配符的设计路径) */
302
+ private collectConcreteRawDataPaths;
303
+ /** 移除字段注册的组件依赖 */
304
+ private removeFieldDependencies;
293
305
  /**
294
306
  * 设置默认值
295
307
  * @param path jsonpath 路径 (支持 [n] 数组索引和 [n] 通配符)
package/dist/index.es.js CHANGED
@@ -31535,6 +31535,14 @@ class CommandBase {
31535
31535
  modelParent: wp
31536
31536
  };
31537
31537
  }
31538
+ /** 设计态删除字段组件后,清理 DataManager 中该字段的 defaults / rawData / 依赖 */
31539
+ cleanupDesignFieldBinding(run) {
31540
+ if (!run?.isWidgetRun) return;
31541
+ const textWidget = run;
31542
+ const designValuePath = textWidget.widgetMeta?.field?.valuePath;
31543
+ if (!designValuePath) return;
31544
+ this.doc.dataManager.removeFieldBindingData(designValuePath, textWidget.valuePath);
31545
+ }
31538
31546
  }
31539
31547
  class Backspace extends CommandBase {
31540
31548
  constructor(doc, payload) {
@@ -31730,6 +31738,7 @@ class Backspace extends CommandBase {
31730
31738
  const wrPrev = modelWr.getPrev();
31731
31739
  const wrNext = modelWr.getNext();
31732
31740
  modelWr.remove();
31741
+ this.cleanupDesignFieldBinding(run);
31733
31742
  return this.buildResultAfterEmpty(wrPrev, wrNext, modelWp, run);
31734
31743
  }
31735
31744
  if (position === -1) {
@@ -32150,6 +32159,7 @@ class Delete extends CommandBase {
32150
32159
  return null;
32151
32160
  }
32152
32161
  modelWr.remove();
32162
+ this.cleanupDesignFieldBinding(run);
32153
32163
  const wrPrev = modelWr.getPrev();
32154
32164
  const wrNext = modelWr.getNext();
32155
32165
  return this.buildResultAfterEmpty(wrPrev, wrNext, modelWp);
@@ -33027,7 +33037,7 @@ const _hoisted_2$1r = { class: "gct-dtp-date" };
33027
33037
  const _hoisted_3$17 = { class: "gct-dtp-header" };
33028
33038
  const _hoisted_4$Q = { class: "text" };
33029
33039
  const _hoisted_5$E = { class: "gct-dtp-head" };
33030
- const _hoisted_6$q = { class: "gct-dtp-rows-wrapper" };
33040
+ const _hoisted_6$r = { class: "gct-dtp-rows-wrapper" };
33031
33041
  const _hoisted_7$n = ["onClick"];
33032
33042
  const _hoisted_8$h = { class: "dtp-day-label" };
33033
33043
  const _hoisted_9$b = {
@@ -33243,7 +33253,7 @@ const _sfc_main$3o = /* @__PURE__ */ defineComponent({
33243
33253
  }, toDisplayString(d), 1);
33244
33254
  }), 128))
33245
33255
  ]),
33246
- createElementVNode("div", _hoisted_6$q, [
33256
+ createElementVNode("div", _hoisted_6$r, [
33247
33257
  createVNode(Transition, {
33248
33258
  name: transitionName.value,
33249
33259
  mode: "out-in"
@@ -33440,7 +33450,7 @@ const _hoisted_3$15 = {
33440
33450
  };
33441
33451
  const _hoisted_4$P = ["onClick"];
33442
33452
  const _hoisted_5$D = { class: "option-label" };
33443
- const _hoisted_6$p = { class: "option-right" };
33453
+ const _hoisted_6$q = { class: "option-right" };
33444
33454
  const _hoisted_7$m = {
33445
33455
  key: 1,
33446
33456
  class: "divider"
@@ -33559,7 +33569,7 @@ const _sfc_main$3k = /* @__PURE__ */ defineComponent({
33559
33569
  ]),
33560
33570
  _: 2
33561
33571
  }, 1032, ["disabled"]),
33562
- createElementVNode("div", _hoisted_6$p, [
33572
+ createElementVNode("div", _hoisted_6$q, [
33563
33573
  withDirectives(createVNode(unref(GctIcon), {
33564
33574
  class: "edit-icon",
33565
33575
  icon: "icon-sheji-2",
@@ -33871,7 +33881,7 @@ const _hoisted_5$C = {
33871
33881
  key: 2,
33872
33882
  class: "upload-loading"
33873
33883
  };
33874
- const _hoisted_6$o = ["accept"];
33884
+ const _hoisted_6$p = ["accept"];
33875
33885
  const _hoisted_7$l = ["src"];
33876
33886
  const _sfc_main$3f = /* @__PURE__ */ defineComponent({
33877
33887
  __name: "image-upload",
@@ -33972,7 +33982,7 @@ const _sfc_main$3f = /* @__PURE__ */ defineComponent({
33972
33982
  class: "gct-upload-hidden-input",
33973
33983
  accept: __props.accept,
33974
33984
  onChange: handleChange
33975
- }, null, 40, _hoisted_6$o),
33985
+ }, null, 40, _hoisted_6$p),
33976
33986
  previewUrl.value ? (openBlock(), createElementBlock("div", {
33977
33987
  key: 0,
33978
33988
  class: "preview-mask",
@@ -33999,7 +34009,7 @@ const _hoisted_4$N = {
33999
34009
  class: "gct-input-count"
34000
34010
  };
34001
34011
  const _hoisted_5$B = { key: 0 };
34002
- const _hoisted_6$n = {
34012
+ const _hoisted_6$o = {
34003
34013
  key: 3,
34004
34014
  class: "gct-input-suffix"
34005
34015
  };
@@ -34208,7 +34218,7 @@ const _sfc_main$3e = /* @__PURE__ */ defineComponent({
34208
34218
  createTextVNode(toDisplayString(countValue.value), 1),
34209
34219
  props.maxLength ? (openBlock(), createElementBlock("span", _hoisted_5$B, " / " + toDisplayString(props.maxLength), 1)) : createCommentVNode("", true)
34210
34220
  ])) : createCommentVNode("", true),
34211
- props.suffix ? (openBlock(), createElementBlock("span", _hoisted_6$n, [
34221
+ props.suffix ? (openBlock(), createElementBlock("span", _hoisted_6$o, [
34212
34222
  createElementVNode("span", _hoisted_7$k, toDisplayString(__props.suffix), 1)
34213
34223
  ])) : createCommentVNode("", true)
34214
34224
  ], 2)
@@ -36044,7 +36054,7 @@ const _hoisted_5$z = {
36044
36054
  key: 2,
36045
36055
  class: "empty"
36046
36056
  };
36047
- const _hoisted_6$m = ["title"];
36057
+ const _hoisted_6$n = ["title"];
36048
36058
  const _hoisted_7$j = { class: "selection-tag-content" };
36049
36059
  const _hoisted_8$f = {
36050
36060
  key: 2,
@@ -36260,7 +36270,7 @@ const _sfc_main$33 = /* @__PURE__ */ defineComponent({
36260
36270
  key: 0,
36261
36271
  class: "select-selection-item",
36262
36272
  title: selectedOptions.value[0].label
36263
- }, toDisplayString(selectedOptions.value[0].label), 9, _hoisted_6$m)) : createCommentVNode("", true),
36273
+ }, toDisplayString(selectedOptions.value[0].label), 9, _hoisted_6$n)) : createCommentVNode("", true),
36264
36274
  __props.multiple ? (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(selectedOptions.value, (item, idx) => {
36265
36275
  return openBlock(), createElementBlock("span", {
36266
36276
  class: "select-selection-tag",
@@ -37314,7 +37324,7 @@ const _hoisted_3$S = {
37314
37324
  };
37315
37325
  const _hoisted_4$G = ["title"];
37316
37326
  const _hoisted_5$v = { class: "rdo-tree-select__value-text" };
37317
- const _hoisted_6$l = {
37327
+ const _hoisted_6$m = {
37318
37328
  key: 0,
37319
37329
  class: "rdo-tree-select__value-tag"
37320
37330
  };
@@ -37540,7 +37550,7 @@ const _sfc_main$2Y = /* @__PURE__ */ defineComponent({
37540
37550
  title: selectedDisplay.value.text
37541
37551
  }, [
37542
37552
  createElementVNode("span", _hoisted_5$v, toDisplayString(selectedDisplay.value.text), 1),
37543
- selectedDisplay.value.showDefaultTag ? (openBlock(), createElementBlock("span", _hoisted_6$l, "默认")) : createCommentVNode("", true)
37553
+ selectedDisplay.value.showDefaultTag ? (openBlock(), createElementBlock("span", _hoisted_6$m, "默认")) : createCommentVNode("", true)
37544
37554
  ], 8, _hoisted_4$G)) : (openBlock(), createElementBlock("span", _hoisted_7$i, toDisplayString(__props.placeholder), 1)),
37545
37555
  innerValue.value && __props.allowClear && !__props.disabled ? (openBlock(), createBlock(unref(GctIcon), {
37546
37556
  key: 2,
@@ -49856,6 +49866,78 @@ class DataManager {
49856
49866
  const lastSeparatorIndex = Math.max(lastDotIndex, lastBracketIndex);
49857
49867
  return path2.substring(0, lastSeparatorIndex);
49858
49868
  }
49869
+ /**
49870
+ * 设计态删除字段后,清理该字段在 DataManager 中的绑定数据
49871
+ * @param designValuePath 设计时 valuePath(可含 [n] / [n_y][n_x] 通配符)
49872
+ * @param runtimeValuePath 版面解析后的具体路径(可选)
49873
+ */
49874
+ removeFieldBindingData(designValuePath, runtimeValuePath) {
49875
+ if (!designValuePath) return;
49876
+ const bindingPaths = this.collectFieldBindingPaths(designValuePath);
49877
+ for (const path2 of bindingPaths) {
49878
+ this.defaults.delete(path2);
49879
+ this.fieldRuntimeConfigByPath.delete(path2);
49880
+ this.subscriptions.delete(path2);
49881
+ }
49882
+ for (const path2 of this.collectConcreteRawDataPaths(designValuePath, runtimeValuePath)) {
49883
+ this.delete(path2);
49884
+ }
49885
+ this.removeFieldDependencies(designValuePath);
49886
+ }
49887
+ /** 收集与字段绑定相关的路径(含 value / label / href 及通配符变体) */
49888
+ collectFieldBindingPaths(designValuePath) {
49889
+ const bases = [
49890
+ designValuePath,
49891
+ getLabelPath(designValuePath),
49892
+ getHrefPath(designValuePath)
49893
+ ];
49894
+ const wildcardKeys = new Set(bases.map((path2) => this.convertPathToWildcard(path2)));
49895
+ const result = new Set(bases);
49896
+ const scanTargets = [
49897
+ ...this.defaults.keys(),
49898
+ ...this.fieldRuntimeConfigByPath.keys(),
49899
+ ...this.subscriptions.keys()
49900
+ ];
49901
+ for (const path2 of scanTargets) {
49902
+ if (wildcardKeys.has(this.convertPathToWildcard(path2))) {
49903
+ result.add(path2);
49904
+ }
49905
+ }
49906
+ return result;
49907
+ }
49908
+ /** 收集可从 rawData 删除的具体路径(跳过含通配符的设计路径) */
49909
+ collectConcreteRawDataPaths(designValuePath, runtimeValuePath) {
49910
+ const paths = /* @__PURE__ */ new Set();
49911
+ for (const path2 of [designValuePath, runtimeValuePath]) {
49912
+ if (!path2 || path2.includes("[n")) continue;
49913
+ paths.add(path2);
49914
+ paths.add(getLabelPath(path2));
49915
+ paths.add(getHrefPath(path2));
49916
+ }
49917
+ return [...paths];
49918
+ }
49919
+ /** 移除字段注册的组件依赖 */
49920
+ removeFieldDependencies(designValuePath) {
49921
+ const wildcardKeys = new Set(
49922
+ [designValuePath, getLabelPath(designValuePath), getHrefPath(designValuePath)].map(
49923
+ (path2) => this.convertPathToWildcard(path2)
49924
+ )
49925
+ );
49926
+ const nodes = this.collectDepNodes();
49927
+ const removedKeys = /* @__PURE__ */ new Set();
49928
+ const remaining = [];
49929
+ for (const node of nodes.values()) {
49930
+ if (wildcardKeys.has(this.convertPathToWildcard(node.targetPath))) {
49931
+ removedKeys.add(node.key);
49932
+ continue;
49933
+ }
49934
+ remaining.push(node);
49935
+ }
49936
+ for (const key of removedKeys) {
49937
+ this.ranImmediateDepKeys.delete(key);
49938
+ }
49939
+ this.rebuildDepGraphIndex(remaining);
49940
+ }
49859
49941
  /**
49860
49942
  * 设置默认值
49861
49943
  * @param path jsonpath 路径 (支持 [n] 数组索引和 [n] 通配符)
@@ -53875,7 +53957,7 @@ const apiFetchers = {
53875
53957
  const { isLinkQuery, ...otherQueryData } = queryData || {};
53876
53958
  let result;
53877
53959
  if (isLinkQuery) {
53878
- const { dataIds, refModelChain } = otherQueryData || {};
53960
+ const { dataIds, refModelChain, ...searchQuery } = otherQueryData || {};
53879
53961
  result = await api.apaas.modelComprehensive.postQueryRefChainDataModelCategory(
53880
53962
  { modelCategory: API_CONFIG.ENTITY_CATEGORY },
53881
53963
  {
@@ -53884,7 +53966,8 @@ const apiFetchers = {
53884
53966
  dataIds,
53885
53967
  refModelChain,
53886
53968
  pageSize,
53887
- pageNo
53969
+ pageNo,
53970
+ ...exp ? { exp, query: searchQuery } : {}
53888
53971
  }
53889
53972
  );
53890
53973
  } else {
@@ -107292,7 +107375,7 @@ const _hoisted_2$15 = ["onMouseenter"];
107292
107375
  const _hoisted_3$O = ["onClick"];
107293
107376
  const _hoisted_4$E = ["onMousedown"];
107294
107377
  const _hoisted_5$t = { class: "row-headers" };
107295
- const _hoisted_6$k = ["onMouseenter"];
107378
+ const _hoisted_6$l = ["onMouseenter"];
107296
107379
  const _hoisted_7$h = ["onClick"];
107297
107380
  const _hoisted_8$e = ["onMousedown"];
107298
107381
  const _sfc_main$2v = /* @__PURE__ */ defineComponent({
@@ -107618,7 +107701,7 @@ const _sfc_main$2v = /* @__PURE__ */ defineComponent({
107618
107701
  size: "14"
107619
107702
  }, null, 8, ["class"])
107620
107703
  ], 32)) : createCommentVNode("", true)
107621
- ], 40, _hoisted_6$k),
107704
+ ], 40, _hoisted_6$l),
107622
107705
  !unref(isTableAllSelected)(__props.widget.id) && unref(isTableRowSelected)(__props.widget.id, rowIndex) ? (openBlock(), createElementBlock("div", {
107623
107706
  key: 0,
107624
107707
  class: "row-remove-btn",
@@ -107881,7 +107964,7 @@ const _hoisted_2$14 = { class: "action-group" };
107881
107964
  const _hoisted_3$N = { class: "insert-row-container" };
107882
107965
  const _hoisted_4$D = { class: "insert-row-item" };
107883
107966
  const _hoisted_5$s = { class: "insert-row-item" };
107884
- const _hoisted_6$j = { class: "sub-table-btn" };
107967
+ const _hoisted_6$k = { class: "sub-table-btn" };
107885
107968
  const _hoisted_7$g = { class: "sub-table-action-bar" };
107886
107969
  const _hoisted_8$d = { class: "sub-table-btn" };
107887
107970
  const _sfc_main$2r = /* @__PURE__ */ defineComponent({
@@ -108036,7 +108119,7 @@ const _sfc_main$2r = /* @__PURE__ */ defineComponent({
108036
108119
  ])
108037
108120
  ]),
108038
108121
  default: withCtx(() => [
108039
- createElementVNode("div", _hoisted_6$j, [
108122
+ createElementVNode("div", _hoisted_6$k, [
108040
108123
  createVNode(unref(GctIcon), {
108041
108124
  icon: "icon-gengduo1",
108042
108125
  color: "#fff"
@@ -109813,7 +109896,7 @@ const _hoisted_2$$ = { class: "color-content-auto" };
109813
109896
  const _hoisted_3$L = { class: "color-content-theme" };
109814
109897
  const _hoisted_4$C = ["onClick"];
109815
109898
  const _hoisted_5$r = { class: "color-content-standard" };
109816
- const _hoisted_6$i = { class: "items" };
109899
+ const _hoisted_6$j = { class: "items" };
109817
109900
  const _hoisted_7$f = ["onClick"];
109818
109901
  const _hoisted_8$c = { class: "color-content-used" };
109819
109902
  const _hoisted_9$9 = { class: "items" };
@@ -109904,7 +109987,7 @@ const _sfc_main$2i = /* @__PURE__ */ defineComponent({
109904
109987
  ]),
109905
109988
  createElementVNode("div", _hoisted_5$r, [
109906
109989
  _cache[4] || (_cache[4] = createElementVNode("div", { class: "title" }, "标准色", -1)),
109907
- createElementVNode("div", _hoisted_6$i, [
109990
+ createElementVNode("div", _hoisted_6$j, [
109908
109991
  (openBlock(true), createElementBlock(Fragment, null, renderList(unref(colorUtils).standard, (c2, idx) => {
109909
109992
  return openBlock(), createBlock(unref(_sfc_main$2$), {
109910
109993
  distance: 12,
@@ -110388,7 +110471,7 @@ const _hoisted_2$_ = { class: "ribbon-tab-item" };
110388
110471
  const _hoisted_3$K = { class: "ribbon-tab-item" };
110389
110472
  const _hoisted_4$B = { class: "ribbon-tab-item" };
110390
110473
  const _hoisted_5$q = { class: "ribbon-tab-item" };
110391
- const _hoisted_6$h = { class: "ribbon-tab-item" };
110474
+ const _hoisted_6$i = { class: "ribbon-tab-item" };
110392
110475
  const _hoisted_7$e = { class: "ribbon-tab-item" };
110393
110476
  const _sfc_main$2e = /* @__PURE__ */ defineComponent({
110394
110477
  __name: "word-tab",
@@ -110747,7 +110830,7 @@ const _sfc_main$2e = /* @__PURE__ */ defineComponent({
110747
110830
  }, null, 8, ["active"])
110748
110831
  ]),
110749
110832
  _cache[28] || (_cache[28] = createElementVNode("div", { class: "split-divider" }, null, -1)),
110750
- createElementVNode("div", _hoisted_6$h, [
110833
+ createElementVNode("div", _hoisted_6$i, [
110751
110834
  createVNode(ButtonIcon, {
110752
110835
  tooltip: "表格",
110753
110836
  iconExtraProps: { icon: "icon-dongtaibiao" },
@@ -111061,7 +111144,7 @@ const _hoisted_5$o = {
111061
111144
  key: 0,
111062
111145
  class: "field-list-wrap"
111063
111146
  };
111064
- const _hoisted_6$g = { class: "field-list" };
111147
+ const _hoisted_6$h = { class: "field-list" };
111065
111148
  const _hoisted_7$d = ["draggable", "onDragstart"];
111066
111149
  const _hoisted_8$b = ["innerHTML", "title"];
111067
111150
  const _hoisted_9$8 = {
@@ -111168,7 +111251,7 @@ const _sfc_main$2b = /* @__PURE__ */ defineComponent({
111168
111251
  filteredFields.value.length ? (openBlock(), createElementBlock("div", _hoisted_5$o, [
111169
111252
  createVNode(unref(GctScrollbar), null, {
111170
111253
  default: withCtx(() => [
111171
- createElementVNode("div", _hoisted_6$g, [
111254
+ createElementVNode("div", _hoisted_6$h, [
111172
111255
  (openBlock(true), createElementBlock(Fragment, null, renderList(filteredFields.value, (f) => {
111173
111256
  return openBlock(), createElementBlock("div", {
111174
111257
  key: f.field.id,
@@ -111968,6 +112051,21 @@ const _sfc_main$23 = /* @__PURE__ */ defineComponent({
111968
112051
  };
111969
112052
  }
111970
112053
  });
112054
+ function resolveTableModelId(table) {
112055
+ return table?.raw?.modelRef?.id ?? table?.id;
112056
+ }
112057
+ function resolveTableRowModelIndex(tableRow) {
112058
+ const realRowIndex = tableRow?.raw?.realRowIndex;
112059
+ if (typeof realRowIndex === "number" && realRowIndex >= 0) {
112060
+ return realRowIndex;
112061
+ }
112062
+ const fallback = tableRow?.line?.tableRowIndex ?? tableRow?.pathIndex?.at(-1);
112063
+ return fallback === void 0 ? void 0 : fallback;
112064
+ }
112065
+ function resolveTableColModelIndex(tableCell) {
112066
+ const colIndex = tableCell?.line?.tableCellIndex ?? tableCell?.pathIndex?.at(-1);
112067
+ return colIndex === void 0 ? void 0 : colIndex;
112068
+ }
111971
112069
  const _hoisted_1$1q = { class: "item-suffix" };
111972
112070
  const _hoisted_2$U = { class: "item-suffix" };
111973
112071
  const _hoisted_3$F = { class: "item-suffix" };
@@ -111983,9 +112081,9 @@ const _sfc_main$22 = /* @__PURE__ */ defineComponent({
111983
112081
  const { docInst } = useDocPubApiContext();
111984
112082
  const { interaction } = useTableSelection();
111985
112083
  const props = __props;
111986
- const tableId = props.table?.id;
111987
- const rowIndex = props.tableRow?.pathIndex.at(-1);
111988
- const colIndex = props.tableCell?.pathIndex.at(-1);
112084
+ const tableId = computed(() => resolveTableModelId(props.table));
112085
+ const rowIndex = computed(() => resolveTableRowModelIndex(props.tableRow));
112086
+ const colIndex = computed(() => resolveTableColModelIndex(props.tableCell));
111989
112087
  const insertBeforeColCount = ref(1);
111990
112088
  const insertAfterColCount = ref(1);
111991
112089
  const insertBeforeRowCount = ref(1);
@@ -112012,35 +112110,35 @@ const _sfc_main$22 = /* @__PURE__ */ defineComponent({
112012
112110
  const handleAction = (type4, options) => {
112013
112111
  switch (type4) {
112014
112112
  case "add-col":
112015
- if (!tableId || colIndex === void 0) return;
112113
+ if (!tableId.value || colIndex.value === void 0) return;
112016
112114
  docInst?.value?.execute(CommandType.insertCol, {
112017
- tableId,
112018
- colIndex,
112115
+ tableId: tableId.value,
112116
+ colIndex: colIndex.value,
112019
112117
  position: options,
112020
112118
  count: options === "before" ? insertBeforeColCount.value : insertAfterColCount.value
112021
112119
  });
112022
112120
  break;
112023
112121
  case "delete-col":
112024
- if (!tableId || colIndex === void 0) return;
112122
+ if (!tableId.value || colIndex.value === void 0) return;
112025
112123
  docInst.value.execute(CommandType.deleteCol, {
112026
- tableId,
112027
- colIndex
112124
+ tableId: tableId.value,
112125
+ colIndex: colIndex.value
112028
112126
  });
112029
112127
  break;
112030
112128
  case "add-row":
112031
- if (!tableId || rowIndex === void 0) return;
112129
+ if (!tableId.value || rowIndex.value === void 0) return;
112032
112130
  docInst?.value?.execute(CommandType.insertRow, {
112033
- tableId,
112034
- rowIndex,
112131
+ tableId: tableId.value,
112132
+ rowIndex: rowIndex.value,
112035
112133
  position: options,
112036
112134
  count: options === "before" ? insertBeforeRowCount.value : insertAfterRowCount.value
112037
112135
  });
112038
112136
  break;
112039
112137
  case "delete-row":
112040
- if (!tableId || rowIndex === void 0) return;
112138
+ if (!tableId.value || rowIndex.value === void 0) return;
112041
112139
  docInst?.value?.execute(CommandType.deleteRow, {
112042
- tableId,
112043
- rowIndex
112140
+ tableId: tableId.value,
112141
+ rowIndex: rowIndex.value
112044
112142
  });
112045
112143
  break;
112046
112144
  case "data-group":
@@ -112195,7 +112293,7 @@ const _sfc_main$22 = /* @__PURE__ */ defineComponent({
112195
112293
  };
112196
112294
  }
112197
112295
  });
112198
- const TableMenu = /* @__PURE__ */ _export_sfc(_sfc_main$22, [["__scopeId", "data-v-8bfe3f32"]]);
112296
+ const TableMenu = /* @__PURE__ */ _export_sfc(_sfc_main$22, [["__scopeId", "data-v-243eee50"]]);
112199
112297
  const OFFSET = 4;
112200
112298
  const _sfc_main$21 = /* @__PURE__ */ defineComponent({
112201
112299
  __name: "index",
@@ -112210,6 +112308,7 @@ const _sfc_main$21 = /* @__PURE__ */ defineComponent({
112210
112308
  const contextMenuRef = ref(null);
112211
112309
  const menuProps = ref({});
112212
112310
  const menuComponent = ref(null);
112311
+ const menuKey = ref(0);
112213
112312
  const show = (params) => {
112214
112313
  const {
112215
112314
  x: x2,
@@ -112219,15 +112318,10 @@ const _sfc_main$21 = /* @__PURE__ */ defineComponent({
112219
112318
  tableRow,
112220
112319
  tableCell
112221
112320
  } = params;
112222
- if (type4 === "table") {
112223
- menuProps.value = {
112224
- table,
112225
- tableRow,
112226
- tableCell
112227
- };
112228
- }
112321
+ menuProps.value = type4 === "table" ? { table, tableRow, tableCell } : {};
112229
112322
  pos.value = { x: x2, y: y2 };
112230
112323
  menuComponent.value = menuMap[type4];
112324
+ menuKey.value += 1;
112231
112325
  menuVisible.value = true;
112232
112326
  nextTick(() => {
112233
112327
  if (!contextMenuRef.value) return;
@@ -112241,17 +112335,18 @@ const _sfc_main$21 = /* @__PURE__ */ defineComponent({
112241
112335
  };
112242
112336
  });
112243
112337
  };
112244
- const container2 = document.querySelector(".render-container");
112338
+ let scrollContainer = null;
112245
112339
  const hide = () => {
112246
112340
  menuVisible.value = false;
112247
112341
  };
112248
112342
  onMounted(() => {
112343
+ scrollContainer = document.querySelector(".render-container");
112249
112344
  window.addEventListener("click", hide);
112250
- container2?.addEventListener("scroll", hide);
112345
+ scrollContainer?.addEventListener("scroll", hide);
112251
112346
  });
112252
112347
  onBeforeUnmount(() => {
112253
112348
  window.removeEventListener("click", hide);
112254
- container2?.removeEventListener("scroll", hide);
112349
+ scrollContainer?.removeEventListener("scroll", hide);
112255
112350
  });
112256
112351
  __expose({
112257
112352
  show,
@@ -112265,7 +112360,7 @@ const _sfc_main$21 = /* @__PURE__ */ defineComponent({
112265
112360
  class: "context-menu",
112266
112361
  style: normalizeStyle({ left: pos.value.x + "px", top: pos.value.y + "px" })
112267
112362
  }, [
112268
- (openBlock(), createBlock(resolveDynamicComponent(menuComponent.value), normalizeProps(guardReactiveProps(menuProps.value)), null, 16))
112363
+ (openBlock(), createBlock(resolveDynamicComponent(menuComponent.value), mergeProps({ key: menuKey.value }, menuProps.value), null, 16))
112269
112364
  ], 4)) : createCommentVNode("", true);
112270
112365
  };
112271
112366
  }
@@ -112275,7 +112370,7 @@ const _hoisted_2$T = { class: "validation-comment-panel-container" };
112275
112370
  const _hoisted_3$E = { class: "comment-header" };
112276
112371
  const _hoisted_4$w = { class: "comment-messages" };
112277
112372
  const _hoisted_5$m = { class: "message-item" };
112278
- const _hoisted_6$f = { class: "field-name" };
112373
+ const _hoisted_6$g = { class: "field-name" };
112279
112374
  const _hoisted_7$c = { class: "error-text" };
112280
112375
  const _sfc_main$20 = /* @__PURE__ */ defineComponent({
112281
112376
  __name: "validation-comment-item",
@@ -112362,7 +112457,7 @@ const _sfc_main$20 = /* @__PURE__ */ defineComponent({
112362
112457
  createElementVNode("div", _hoisted_4$w, [
112363
112458
  (openBlock(true), createElementBlock(Fragment, null, renderList(fieldErrorList.value, (item) => {
112364
112459
  return openBlock(), createElementBlock("div", _hoisted_5$m, [
112365
- createElementVNode("div", _hoisted_6$f, toDisplayString(unref(fieldInfo)?.name) + ":", 1),
112460
+ createElementVNode("div", _hoisted_6$g, toDisplayString(unref(fieldInfo)?.name) + ":", 1),
112366
112461
  createElementVNode("div", _hoisted_7$c, toDisplayString(item.message), 1)
112367
112462
  ]);
112368
112463
  }), 256))
@@ -112465,7 +112560,7 @@ const _hoisted_5$l = {
112465
112560
  key: 0,
112466
112561
  class: "cl__hdr-flag"
112467
112562
  };
112468
- const _hoisted_6$e = { class: "cl__user" };
112563
+ const _hoisted_6$f = { class: "cl__user" };
112469
112564
  const _hoisted_7$b = ["dateTime"];
112470
112565
  const _hoisted_8$a = {
112471
112566
  key: 0,
@@ -112578,7 +112673,7 @@ const _sfc_main$1_ = /* @__PURE__ */ defineComponent({
112578
112673
  createElementVNode("div", _hoisted_4$v, toDisplayString(getHeaderLabel(__props.data.changeType)), 1),
112579
112674
  __props.data.isCurrentChange ? (openBlock(), createElementBlock("div", _hoisted_5$l, "本次变更")) : createCommentVNode("", true)
112580
112675
  ]),
112581
- createElementVNode("div", _hoisted_6$e, [
112676
+ createElementVNode("div", _hoisted_6$f, [
112582
112677
  createVNode(unref(GctAvatar), {
112583
112678
  class: "cl__avatar",
112584
112679
  name: __props.data.userName,
@@ -113177,7 +113272,7 @@ const _hoisted_5$k = {
113177
113272
  key: 1,
113178
113273
  class: "design-footer"
113179
113274
  };
113180
- const _hoisted_6$d = { style: { "padding": "0 12px" } };
113275
+ const _hoisted_6$e = { style: { "padding": "0 12px" } };
113181
113276
  const _hoisted_7$a = { style: { "padding": "0 12px" } };
113182
113277
  const _sfc_main$1W = /* @__PURE__ */ defineComponent({
113183
113278
  __name: "doc-design-layout",
@@ -113269,7 +113364,7 @@ const _sfc_main$1W = /* @__PURE__ */ defineComponent({
113269
113364
  ]),
113270
113365
  !isPreview.value ? (openBlock(), createElementBlock("footer", _hoisted_5$k, [
113271
113366
  createElementVNode("div", null, [
113272
- createElementVNode("span", _hoisted_6$d, " 布局刷新次数:" + toDisplayString(unref(docInfo).updateTick), 1),
113367
+ createElementVNode("span", _hoisted_6$e, " 布局刷新次数:" + toDisplayString(unref(docInfo).updateTick), 1),
113273
113368
  createElementVNode("span", _hoisted_7$a, " 模式:" + toDisplayString(unref(docInst)?.modeLabel), 1)
113274
113369
  ])
113275
113370
  ])) : createCommentVNode("", true)
@@ -117564,7 +117659,7 @@ const _hoisted_5$j = {
117564
117659
  key: 1,
117565
117660
  class: "link"
117566
117661
  };
117567
- const _hoisted_6$c = {
117662
+ const _hoisted_6$d = {
117568
117663
  key: 2,
117569
117664
  class: "body"
117570
117665
  };
@@ -117619,7 +117714,7 @@ const _sfc_main$1y = /* @__PURE__ */ defineComponent({
117619
117714
  color: "#797a7d"
117620
117715
  })
117621
117716
  ])) : createCommentVNode("", true),
117622
- item ? (openBlock(), createElementBlock("div", _hoisted_6$c, [
117717
+ item ? (openBlock(), createElementBlock("div", _hoisted_6$d, [
117623
117718
  createElementVNode("span", _hoisted_7$9, toDisplayString(item.name || "[空]"), 1),
117624
117719
  createVNode(unref(GctIcon), {
117625
117720
  class: "icon",
@@ -120335,7 +120430,7 @@ const _hoisted_2$A = { class: "field-map-container" };
120335
120430
  const _hoisted_3$p = { class: "field-map-content" };
120336
120431
  const _hoisted_4$k = { class: "field-map-item" };
120337
120432
  const _hoisted_5$g = { class: "blank last" };
120338
- const _hoisted_6$b = ["onClick"];
120433
+ const _hoisted_6$c = ["onClick"];
120339
120434
  const _sfc_main$1c = /* @__PURE__ */ defineComponent({
120340
120435
  __name: "data-source-field-map",
120341
120436
  props: {
@@ -120550,7 +120645,7 @@ const _sfc_main$1c = /* @__PURE__ */ defineComponent({
120550
120645
  createElementVNode("i", {
120551
120646
  class: "iconfont icon-shanchu",
120552
120647
  onClick: ($event) => removeFieldItem(field)
120553
- }, null, 8, _hoisted_6$b)
120648
+ }, null, 8, _hoisted_6$c)
120554
120649
  ])
120555
120650
  ]);
120556
120651
  }), 128))
@@ -121032,7 +121127,7 @@ const _hoisted_2$x = { class: "form-row current-component" };
121032
121127
  const _hoisted_3$m = { class: "control" };
121033
121128
  const _hoisted_4$i = { class: "field-icon" };
121034
121129
  const _hoisted_5$e = { class: "form-row" };
121035
- const _hoisted_6$a = { class: "control" };
121130
+ const _hoisted_6$b = { class: "control" };
121036
121131
  const _hoisted_7$8 = { class: "form-row" };
121037
121132
  const _hoisted_8$8 = { class: "control" };
121038
121133
  const _hoisted_9$6 = { class: "form-row current-component" };
@@ -121161,7 +121256,7 @@ const _sfc_main$18 = /* @__PURE__ */ defineComponent({
121161
121256
  ]),
121162
121257
  createElementVNode("div", _hoisted_5$e, [
121163
121258
  _cache[8] || (_cache[8] = createElementVNode("div", { class: "label" }, "组件行为", -1)),
121164
- createElementVNode("div", _hoisted_6$a, [
121259
+ createElementVNode("div", _hoisted_6$b, [
121165
121260
  createVNode(unref(GctRadioGroup), {
121166
121261
  modelValue: formState.type,
121167
121262
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => formState.type = $event),
@@ -121265,7 +121360,7 @@ const _hoisted_2$w = { class: "field-dependency-list" };
121265
121360
  const _hoisted_3$l = { class: "item-header" };
121266
121361
  const _hoisted_4$h = { class: "title" };
121267
121362
  const _hoisted_5$d = { class: "main" };
121268
- const _hoisted_6$9 = {
121363
+ const _hoisted_6$a = {
121269
121364
  key: 0,
121270
121365
  class: "label"
121271
121366
  };
@@ -121408,7 +121503,7 @@ const _sfc_main$17 = /* @__PURE__ */ defineComponent({
121408
121503
  createElementVNode("div", _hoisted_3$l, [
121409
121504
  createElementVNode("div", _hoisted_4$h, [
121410
121505
  createElementVNode("span", _hoisted_5$d, toDisplayString(unref(FieldDependencyTypeCh)[type4]), 1),
121411
- type4 === unref(FieldDependencyTypeConst).Assignment ? (openBlock(), createElementBlock("span", _hoisted_6$9, " 公式计算 ")) : createCommentVNode("", true)
121506
+ type4 === unref(FieldDependencyTypeConst).Assignment ? (openBlock(), createElementBlock("span", _hoisted_6$a, " 公式计算 ")) : createCommentVNode("", true)
121412
121507
  ]),
121413
121508
  createElementVNode("div", _hoisted_7$7, [
121414
121509
  createVNode(unref(GctIcon), {
@@ -122751,7 +122846,7 @@ const _hoisted_2$q = { class: "container" };
122751
122846
  const _hoisted_3$f = { class: "header" };
122752
122847
  const _hoisted_4$d = { class: "header-action" };
122753
122848
  const _hoisted_5$b = { class: "autofill-form" };
122754
- const _hoisted_6$8 = { class: "form-col" };
122849
+ const _hoisted_6$9 = { class: "form-col" };
122755
122850
  const _hoisted_7$6 = {
122756
122851
  key: 0,
122757
122852
  class: "error-text"
@@ -122934,7 +123029,7 @@ const _sfc_main$U = /* @__PURE__ */ defineComponent({
122934
123029
  key: rule.id,
122935
123030
  class: "form-row rule-item"
122936
123031
  }, [
122937
- createElementVNode("div", _hoisted_6$8, [
123032
+ createElementVNode("div", _hoisted_6$9, [
122938
123033
  createVNode(unref(GctSelect), {
122939
123034
  modelValue: rule.fromField,
122940
123035
  "onUpdate:modelValue": ($event) => rule.fromField = $event,
@@ -123188,7 +123283,7 @@ const _hoisted_5$a = {
123188
123283
  key: 1,
123189
123284
  class: "date-format-editor__row"
123190
123285
  };
123191
- const _hoisted_6$7 = { class: "date-format-editor__col" };
123286
+ const _hoisted_6$8 = { class: "date-format-editor__col" };
123192
123287
  const _sfc_main$R = /* @__PURE__ */ defineComponent({
123193
123288
  __name: "date-format-editor",
123194
123289
  props: {
@@ -123248,7 +123343,7 @@ const _sfc_main$R = /* @__PURE__ */ defineComponent({
123248
123343
  }, null, 8, ["modelValue", "options"])
123249
123344
  ])
123250
123345
  ])) : (openBlock(), createElementBlock("div", _hoisted_5$a, [
123251
- createElementVNode("div", _hoisted_6$7, [
123346
+ createElementVNode("div", _hoisted_6$8, [
123252
123347
  createVNode(unref(GctInput), {
123253
123348
  modelValue: unref(customFormatValue),
123254
123349
  "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => isRef(customFormatValue) ? customFormatValue.value = $event : null),
@@ -123704,7 +123799,7 @@ const _hoisted_4$b = {
123704
123799
  class: "error"
123705
123800
  };
123706
123801
  const _hoisted_5$9 = { class: "form-row" };
123707
- const _hoisted_6$6 = { class: "control" };
123802
+ const _hoisted_6$7 = { class: "control" };
123708
123803
  const _hoisted_7$5 = {
123709
123804
  key: 0,
123710
123805
  class: "error"
@@ -123819,7 +123914,7 @@ const _sfc_main$M = /* @__PURE__ */ defineComponent({
123819
123914
  ]),
123820
123915
  createElementVNode("div", _hoisted_5$9, [
123821
123916
  _cache[7] || (_cache[7] = createElementVNode("div", { class: "label" }, "实际值", -1)),
123822
- createElementVNode("div", _hoisted_6$6, [
123917
+ createElementVNode("div", _hoisted_6$7, [
123823
123918
  createVNode(unref(GctInput), {
123824
123919
  modelValue: formState.value,
123825
123920
  "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => formState.value = $event),
@@ -125122,7 +125217,7 @@ const _hoisted_5$8 = {
125122
125217
  key: 0,
125123
125218
  class: "error-text"
125124
125219
  };
125125
- const _hoisted_6$5 = { class: "qrcode-parse-modal__divider" };
125220
+ const _hoisted_6$6 = { class: "qrcode-parse-modal__divider" };
125126
125221
  const _hoisted_7$4 = {
125127
125222
  key: 0,
125128
125223
  class: "error-text"
@@ -125312,7 +125407,7 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
125312
125407
  ]),
125313
125408
  _: 2
125314
125409
  }, 1024),
125315
- createElementVNode("div", _hoisted_6$5, [
125410
+ createElementVNode("div", _hoisted_6$6, [
125316
125411
  createVNode(unref(GctIcon), {
125317
125412
  icon: "icon-lianjie",
125318
125413
  color: "#c6c6c6",
@@ -126416,7 +126511,7 @@ const _hoisted_2$b = { class: "line-direction-item" };
126416
126511
  const _hoisted_3$9 = { class: "line-direction-item" };
126417
126512
  const _hoisted_4$8 = { class: "content" };
126418
126513
  const _hoisted_5$6 = { class: "content" };
126419
- const _hoisted_6$4 = { class: "value" };
126514
+ const _hoisted_6$5 = { class: "value" };
126420
126515
  const _sfc_main$k = /* @__PURE__ */ defineComponent({
126421
126516
  __name: "widget-line-config",
126422
126517
  props: {
@@ -126540,7 +126635,7 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
126540
126635
  ]),
126541
126636
  createElementVNode("div", _hoisted_5$6, [
126542
126637
  _cache[10] || (_cache[10] = createElementVNode("div", { class: "label" }, "线条外观", -1)),
126543
- createElementVNode("div", _hoisted_6$4, [
126638
+ createElementVNode("div", _hoisted_6$5, [
126544
126639
  createVNode(unref(GctSelect), {
126545
126640
  modelValue: formState.value.borderStyle,
126546
126641
  "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => formState.value.borderStyle = $event),
@@ -127043,7 +127138,7 @@ const _hoisted_2$9 = { class: "options-search" };
127043
127138
  const _hoisted_3$7 = { class: "options-dropdown-container" };
127044
127139
  const _hoisted_4$6 = ["onClick"];
127045
127140
  const _hoisted_5$5 = ["innerHTML", "title"];
127046
- const _hoisted_6$3 = { class: "option-right" };
127141
+ const _hoisted_6$4 = { class: "option-right" };
127047
127142
  const _hoisted_7$3 = {
127048
127143
  key: 0,
127049
127144
  class: "empty"
@@ -127202,7 +127297,7 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
127202
127297
  ]),
127203
127298
  _: 2
127204
127299
  }, 1032, ["disabled"]),
127205
- createElementVNode("div", _hoisted_6$3, [
127300
+ createElementVNode("div", _hoisted_6$4, [
127206
127301
  __props.isMultiple && isSelected(item) ? (openBlock(), createBlock(unref(GctIcon), {
127207
127302
  key: 0,
127208
127303
  class: "check-icon",
@@ -127242,7 +127337,7 @@ const optionDropdown$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.de
127242
127337
  __proto__: null,
127243
127338
  default: optionDropdown
127244
127339
  }, Symbol.toStringTag, { value: "Module" }));
127245
- const _hoisted_1$d = { class: "node-label" };
127340
+ const _hoisted_1$d = ["innerHTML"];
127246
127341
  const _hoisted_2$8 = { class: "node-right" };
127247
127342
  const _hoisted_3$6 = { key: 0 };
127248
127343
  const _sfc_main$e = /* @__PURE__ */ defineComponent({
@@ -127251,13 +127346,26 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
127251
127346
  node: {},
127252
127347
  level: {},
127253
127348
  modelValue: {},
127254
- multiple: { type: Boolean }
127349
+ multiple: { type: Boolean },
127350
+ forceExpand: { type: Boolean },
127351
+ highlightName: { type: Function }
127255
127352
  },
127256
127353
  emits: ["select"],
127257
127354
  setup(__props, { emit: __emit }) {
127258
127355
  const props = __props;
127259
127356
  const emit = __emit;
127260
127357
  const expanded = ref(true);
127358
+ watch(
127359
+ () => props.forceExpand,
127360
+ (val) => {
127361
+ if (val) expanded.value = true;
127362
+ },
127363
+ { immediate: true }
127364
+ );
127365
+ const highlightLabel = computed(() => {
127366
+ const label = props.node.label ?? "";
127367
+ return props.highlightName ? props.highlightName(label) : label;
127368
+ });
127261
127369
  const hasChildren = computed(() => {
127262
127370
  return props.node.children?.length;
127263
127371
  });
@@ -127302,7 +127410,10 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
127302
127410
  size: "14"
127303
127411
  }, null, 8, ["icon"])
127304
127412
  ])) : createCommentVNode("", true),
127305
- createElementVNode("span", _hoisted_1$d, toDisplayString(__props.node.label), 1),
127413
+ createElementVNode("span", {
127414
+ class: "node-label",
127415
+ innerHTML: highlightLabel.value
127416
+ }, null, 8, _hoisted_1$d),
127306
127417
  createElementVNode("div", _hoisted_2$8, [
127307
127418
  __props.multiple && isSelected.value ? (openBlock(), createBlock(unref(GctIcon), {
127308
127419
  key: 0,
@@ -127320,26 +127431,29 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
127320
127431
  level: __props.level + 1,
127321
127432
  multiple: __props.multiple,
127322
127433
  "model-value": __props.modelValue,
127434
+ "force-expand": __props.forceExpand,
127435
+ "highlight-name": __props.highlightName,
127323
127436
  onSelect: emitSelect
127324
- }, null, 8, ["node", "level", "multiple", "model-value"]);
127437
+ }, null, 8, ["node", "level", "multiple", "model-value", "force-expand", "highlight-name"]);
127325
127438
  }), 128))
127326
127439
  ])) : createCommentVNode("", true)
127327
127440
  ]);
127328
127441
  };
127329
127442
  }
127330
127443
  });
127331
- const TreeNode = /* @__PURE__ */ _export_sfc(_sfc_main$e, [["__scopeId", "data-v-4bcb0cc3"]]);
127444
+ const TreeNode = /* @__PURE__ */ _export_sfc(_sfc_main$e, [["__scopeId", "data-v-0b367b10"]]);
127332
127445
  const _hoisted_1$c = { class: "tree-dropdown" };
127333
- const _hoisted_2$7 = { class: "tree-dropdown-container" };
127334
- const _hoisted_3$5 = {
127446
+ const _hoisted_2$7 = { class: "tree-search" };
127447
+ const _hoisted_3$5 = { class: "tree-dropdown-container" };
127448
+ const _hoisted_4$5 = {
127335
127449
  key: 0,
127336
127450
  class: "empty"
127337
127451
  };
127338
- const _hoisted_4$5 = {
127452
+ const _hoisted_5$4 = {
127339
127453
  key: 0,
127340
127454
  class: "options-footer"
127341
127455
  };
127342
- const _hoisted_5$4 = {
127456
+ const _hoisted_6$3 = {
127343
127457
  key: 1,
127344
127458
  class: "options-footer"
127345
127459
  };
@@ -127356,6 +127470,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
127356
127470
  const props = __props;
127357
127471
  const emit = __emit;
127358
127472
  const { runtimeValuePath } = useWidgetMeta(props.widget);
127473
+ const { keyword, highlightName } = useHighlightSearch();
127359
127474
  const innerValue = ref(props.modelValue);
127360
127475
  const options = ref([]);
127361
127476
  onBeforeMount(async () => {
@@ -127393,6 +127508,22 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
127393
127508
  deepDept(valueList);
127394
127509
  return valueList;
127395
127510
  });
127511
+ function filterTreeNodes(nodes, kw) {
127512
+ return nodes.reduce((acc, node) => {
127513
+ const children = node.children?.length ? filterTreeNodes(node.children, kw) : [];
127514
+ const fields = [node.label, node.ch_full_path, node._item?.name, node._item?.code].map((v) => String(v ?? "").toLowerCase());
127515
+ const matched = fields.some((v) => v.includes(kw));
127516
+ if (matched || children.length) {
127517
+ acc.push({ ...node, children });
127518
+ }
127519
+ return acc;
127520
+ }, []);
127521
+ }
127522
+ const displayTreeOptions = computed(() => {
127523
+ const kw = keyword.value?.trim().toLowerCase();
127524
+ if (!kw) return treeOptions.value;
127525
+ return filterTreeNodes(treeOptions.value, kw);
127526
+ });
127396
127527
  const flatOptions = computed(() => flattenTree(treeOptions.value));
127397
127528
  const onSelect = (value) => {
127398
127529
  if (props.isMultiple) {
@@ -127421,25 +127552,44 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
127421
127552
  }
127422
127553
  return (_ctx, _cache) => {
127423
127554
  return openBlock(), createElementBlock("div", _hoisted_1$c, [
127555
+ createElementVNode("div", _hoisted_2$7, [
127556
+ createVNode(unref(GctInput), {
127557
+ modelValue: unref(keyword),
127558
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(keyword) ? keyword.value = $event : null),
127559
+ placeholder: "请输入关键字",
127560
+ allowClear: ""
127561
+ }, {
127562
+ prependIcon: withCtx(() => [
127563
+ createVNode(unref(GctIcon), {
127564
+ icon: "icon-sousuo",
127565
+ color: "rgba(0, 0, 0, 0.45)",
127566
+ size: "14"
127567
+ })
127568
+ ]),
127569
+ _: 1
127570
+ }, 8, ["modelValue"])
127571
+ ]),
127424
127572
  createVNode(unref(GctScrollbar), { class: "tree-dropdown-scrollbar" }, {
127425
127573
  default: withCtx(() => [
127426
- createElementVNode("div", _hoisted_2$7, [
127427
- (openBlock(true), createElementBlock(Fragment, null, renderList(treeOptions.value, (item) => {
127574
+ createElementVNode("div", _hoisted_3$5, [
127575
+ (openBlock(true), createElementBlock(Fragment, null, renderList(displayTreeOptions.value, (item) => {
127428
127576
  return openBlock(), createBlock(TreeNode, {
127429
127577
  key: item.value,
127430
127578
  node: item,
127431
127579
  level: 0,
127432
127580
  multiple: __props.isMultiple,
127433
127581
  "model-value": innerValue.value,
127582
+ "force-expand": !!unref(keyword)?.trim(),
127583
+ "highlight-name": unref(highlightName),
127434
127584
  onSelect
127435
- }, null, 8, ["node", "multiple", "model-value"]);
127585
+ }, null, 8, ["node", "multiple", "model-value", "force-expand", "highlight-name"]);
127436
127586
  }), 128)),
127437
- !options.value.length ? (openBlock(), createElementBlock("div", _hoisted_3$5, "暂无数据")) : createCommentVNode("", true)
127587
+ !displayTreeOptions.value.length ? (openBlock(), createElementBlock("div", _hoisted_4$5, "暂无数据")) : createCommentVNode("", true)
127438
127588
  ])
127439
127589
  ]),
127440
127590
  _: 1
127441
127591
  }),
127442
- __props.isMultiple ? (openBlock(), createElementBlock("div", _hoisted_4$5, [
127592
+ __props.isMultiple ? (openBlock(), createElementBlock("div", _hoisted_5$4, [
127443
127593
  createElementVNode("div", {
127444
127594
  class: "btn-item",
127445
127595
  onClick: withModifiers(handleSelectAll, ["stop"])
@@ -127448,7 +127598,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
127448
127598
  class: "btn-item",
127449
127599
  onClick: withModifiers(handleOk, ["stop"])
127450
127600
  }, "确认")
127451
- ])) : innerValue.value ? (openBlock(), createElementBlock("div", _hoisted_5$4, [
127601
+ ])) : innerValue.value ? (openBlock(), createElementBlock("div", _hoisted_6$3, [
127452
127602
  createElementVNode("div", {
127453
127603
  class: "btn-center",
127454
127604
  onClick: withModifiers(handleClear, ["stop"])
@@ -127458,7 +127608,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
127458
127608
  };
127459
127609
  }
127460
127610
  });
127461
- const treeDropdown = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["__scopeId", "data-v-4a40a7ac"]]);
127611
+ const treeDropdown = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["__scopeId", "data-v-733d54b7"]]);
127462
127612
  const treeDropdown$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
127463
127613
  __proto__: null,
127464
127614
  default: treeDropdown
@@ -128045,10 +128195,10 @@ const selectStrategyMap = {
128045
128195
  columnsKey: "scrap-reason",
128046
128196
  fetcher: "ref",
128047
128197
  linkFieldId: "scrap_group_1_",
128048
- buildQuery({ keyword, isLinkQuery }) {
128198
+ buildQuery({ keyword, isLinkQuery, linkDataId }) {
128049
128199
  if (isLinkQuery) {
128050
128200
  const queryData = {
128051
- dataIds: keyword,
128201
+ dataIds: linkDataId,
128052
128202
  refModelChain: [
128053
128203
  { modelKey: "em_scrap_group", modelCategory: "entity", fieldKey: "entries_" },
128054
128204
  {
@@ -128060,6 +128210,10 @@ const selectStrategyMap = {
128060
128210
  ],
128061
128211
  isLinkQuery: true
128062
128212
  };
128213
+ if (keyword?.trim()) {
128214
+ const { queryData: searchQuery, exp } = buildLikeQuery(["name_", "code_"], keyword);
128215
+ return { queryData: { ...queryData, ...searchQuery }, exp };
128216
+ }
128063
128217
  return {
128064
128218
  queryData,
128065
128219
  exp: ""
@@ -128082,10 +128236,10 @@ const selectStrategyMap = {
128082
128236
  columnsKey: "notGood-reason",
128083
128237
  fetcher: "ref",
128084
128238
  linkFieldId: "not_good_group_1_",
128085
- buildQuery({ keyword, isLinkQuery }) {
128239
+ buildQuery({ keyword, isLinkQuery, linkDataId }) {
128086
128240
  if (isLinkQuery) {
128087
128241
  const queryData = {
128088
- dataIds: keyword,
128242
+ dataIds: linkDataId,
128089
128243
  refModelChain: [
128090
128244
  { modelKey: "em_not_good_group", modelCategory: "entity", fieldKey: "entries_" },
128091
128245
  {
@@ -128097,6 +128251,10 @@ const selectStrategyMap = {
128097
128251
  ],
128098
128252
  isLinkQuery: true
128099
128253
  };
128254
+ if (keyword?.trim()) {
128255
+ const { queryData: searchQuery, exp } = buildLikeQuery(["name_", "code_"], keyword);
128256
+ return { queryData: { ...queryData, ...searchQuery }, exp };
128257
+ }
128100
128258
  return {
128101
128259
  queryData,
128102
128260
  exp: ""
@@ -128176,6 +128334,7 @@ function useTableDropdown(props, searchFilters) {
128176
128334
  }
128177
128335
  return "";
128178
128336
  });
128337
+ const showSearch = computed(() => !enableLinkage.value || !!linkDataValue.value);
128179
128338
  const fetcher = async ({
128180
128339
  keyword = "",
128181
128340
  pageNo,
@@ -128200,11 +128359,11 @@ function useTableDropdown(props, searchFilters) {
128200
128359
  }
128201
128360
  const { buildQuery, fetcher: fetcher2, transform } = strategy.value;
128202
128361
  const isLinkQuery = enableLinkage.value;
128203
- const queryKeyword = isLinkQuery ? String(linkDataValue.value ?? "") : keyword;
128204
128362
  const filters = unref(searchFilters);
128205
128363
  const { queryData = {}, exp = "" } = buildQuery?.({
128206
- keyword: queryKeyword,
128364
+ keyword,
128207
128365
  isLinkQuery,
128366
+ linkDataId: isLinkQuery ? String(linkDataValue.value ?? "") : void 0,
128208
128367
  searchField: widgetProps.value.searchField,
128209
128368
  deviceTypeId: deviceTypeId ?? filters?.deviceTypeId
128210
128369
  }) ?? {};
@@ -128232,6 +128391,7 @@ function useTableDropdown(props, searchFilters) {
128232
128391
  fieldInfo,
128233
128392
  strategy,
128234
128393
  message,
128394
+ showSearch,
128235
128395
  enableLinkage,
128236
128396
  clearValuePath,
128237
128397
  allowManualInput,
@@ -128265,9 +128425,9 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
128265
128425
  const deviceTypeId = ref();
128266
128426
  const searchFilters = computed(() => ({ deviceTypeId: deviceTypeId.value }));
128267
128427
  const {
128268
- enableLinkage,
128269
128428
  clearValuePath,
128270
128429
  message,
128430
+ showSearch,
128271
128431
  columns: columns2,
128272
128432
  fetcher: baseFetcher,
128273
128433
  allowManualInput,
@@ -128331,7 +128491,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
128331
128491
  });
128332
128492
  return (_ctx, _cache) => {
128333
128493
  return openBlock(), createElementBlock("div", _hoisted_1$7, [
128334
- !unref(enableLinkage) ? (openBlock(), createElementBlock("div", _hoisted_2$5, [
128494
+ unref(showSearch) ? (openBlock(), createElementBlock("div", _hoisted_2$5, [
128335
128495
  unref(isDeviceField) ? (openBlock(), createElementBlock("div", _hoisted_3$3, [
128336
128496
  _cache[5] || (_cache[5] = createElementVNode("span", { class: "table-search__label" }, "设备类型", -1)),
128337
128497
  createVNode(_sfc_main$9, {
@@ -0,0 +1,9 @@
1
+ /** 从布局元数据解析表格模型 id */
2
+ export declare function resolveTableModelId(table?: any): string | undefined;
3
+ /**
4
+ * 解析表格模型行索引。
5
+ * 分页后 pathIndex / line.tableRowIndex 仅为当前页片段索引,需优先使用 realRowIndex。
6
+ */
7
+ export declare function resolveTableRowModelIndex(tableRow?: any): number | undefined;
8
+ /** 解析表格模型列索引 */
9
+ export declare function resolveTableColModelIndex(tableCell?: any): number | undefined;
@@ -14,6 +14,7 @@ export declare function useTableDropdown(props: any, searchFilters?: MaybeRef<Ta
14
14
  fieldInfo: import('vue').ComputedRef<import('../../../../../../capabilities/model-field-runtime').FieldMeta | null>;
15
15
  strategy: import('vue').ComputedRef<import('../strategy/selectStrategy').SelectStrategy>;
16
16
  message: import('vue').ComputedRef<string>;
17
+ showSearch: import('vue').ComputedRef<boolean>;
17
18
  enableLinkage: import('vue').ComputedRef<boolean>;
18
19
  clearValuePath: import('vue').ComputedRef<string | undefined>;
19
20
  allowManualInput: import('vue').ComputedRef<boolean>;
@@ -3,6 +3,8 @@ import { Doc } from '../../../../../../core';
3
3
  export interface SelectQueryContext {
4
4
  keyword: string;
5
5
  isLinkQuery?: boolean;
6
+ /** 数据联动关联字段的值 */
7
+ linkDataId?: string;
6
8
  /** 设计态配置的快速搜索字段 */
7
9
  searchField?: string[];
8
10
  /** 设备类型 id(设备下拉筛选) */
@@ -6,6 +6,8 @@ type __VLS_Props = {
6
6
  level: number;
7
7
  modelValue?: any;
8
8
  multiple?: boolean;
9
+ forceExpand?: boolean;
10
+ highlightName?: (name?: string) => string;
9
11
  };
10
12
  declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
11
13
  select: (...args: any[]) => void;
package/dist/word.css CHANGED
@@ -9202,7 +9202,7 @@ ul li .widget-icon[data-v-393cb2aa] {
9202
9202
  line-height: 22px;
9203
9203
  }
9204
9204
 
9205
- [data-v-8bfe3f32] .gct-input-number {
9205
+ [data-v-243eee50] .gct-input-number {
9206
9206
  text-align: center;
9207
9207
  width: 48px;
9208
9208
  }
@@ -11866,7 +11866,7 @@ svg.portrait-icon[data-v-8bdb451e] {
11866
11866
  .options-dropdown .options-footer .btn-center[data-v-d81082a4]:hover {
11867
11867
  color: #ff4d4f;
11868
11868
  }
11869
- .tree-node[data-v-4bcb0cc3] {
11869
+ .tree-node[data-v-0b367b10] {
11870
11870
  display: flex;
11871
11871
  align-items: center;
11872
11872
  height: 30px;
@@ -11874,24 +11874,24 @@ svg.portrait-icon[data-v-8bdb451e] {
11874
11874
  cursor: pointer;
11875
11875
  transition: all 0.2s ease;
11876
11876
  }
11877
- .tree-node[data-v-4bcb0cc3]:hover:not(.disabled) {
11877
+ .tree-node[data-v-0b367b10]:hover:not(.disabled) {
11878
11878
  background: rgba(13, 13, 13, 0.06);
11879
11879
  }
11880
- .tree-node.selected[data-v-4bcb0cc3] {
11880
+ .tree-node.selected[data-v-0b367b10] {
11881
11881
  background: #e3eafc;
11882
11882
  }
11883
- .tree-node.disabled[data-v-4bcb0cc3] {
11883
+ .tree-node.disabled[data-v-0b367b10] {
11884
11884
  opacity: 0.3;
11885
11885
  pointer-events: none;
11886
11886
  }
11887
- .tree-node .expand-icon[data-v-4bcb0cc3] {
11887
+ .tree-node .expand-icon[data-v-0b367b10] {
11888
11888
  width: 16px;
11889
11889
  display: inline-flex;
11890
11890
  align-items: center;
11891
11891
  justify-content: center;
11892
11892
  margin-right: 4px;
11893
11893
  }
11894
- .tree-node .node-label[data-v-4bcb0cc3] {
11894
+ .tree-node .node-label[data-v-0b367b10] {
11895
11895
  flex: 1;
11896
11896
  font-size: 13px;
11897
11897
  color: #212528;
@@ -11899,28 +11899,33 @@ svg.portrait-icon[data-v-8bdb451e] {
11899
11899
  overflow: hidden;
11900
11900
  text-overflow: ellipsis;
11901
11901
  }
11902
- .tree-node .node-right[data-v-4bcb0cc3] {
11902
+ .tree-node .node-right[data-v-0b367b10] {
11903
11903
  margin-left: 8px;
11904
11904
  display: inline-flex;
11905
11905
  align-items: center;
11906
11906
  }
11907
- .tree-dropdown[data-v-4a40a7ac] {
11907
+ .tree-dropdown[data-v-733d54b7] {
11908
11908
  position: relative;
11909
11909
  width: 100%;
11910
11910
  height: 100%;
11911
11911
  min-width: 200px;
11912
11912
  max-width: 300px;
11913
11913
  }
11914
- .tree-dropdown .tree-dropdown-scrollbar[data-v-4a40a7ac] {
11914
+ .tree-dropdown .tree-search[data-v-733d54b7] {
11915
+ padding: 8px 6px 4px;
11916
+ min-width: 180px;
11917
+ max-width: 300px;
11918
+ }
11919
+ .tree-dropdown .tree-dropdown-scrollbar[data-v-733d54b7] {
11915
11920
  position: relative;
11916
11921
  padding: 4px;
11917
11922
  }
11918
- .tree-dropdown .tree-dropdown-scrollbar .tree-dropdown-container[data-v-4a40a7ac] {
11923
+ .tree-dropdown .tree-dropdown-scrollbar .tree-dropdown-container[data-v-733d54b7] {
11919
11924
  position: relative;
11920
11925
  width: 100%;
11921
11926
  max-height: 300px;
11922
11927
  }
11923
- .tree-dropdown .tree-dropdown-scrollbar .empty[data-v-4a40a7ac] {
11928
+ .tree-dropdown .tree-dropdown-scrollbar .empty[data-v-733d54b7] {
11924
11929
  width: 100%;
11925
11930
  height: 90px;
11926
11931
  display: flex;
@@ -11929,14 +11934,14 @@ svg.portrait-icon[data-v-8bdb451e] {
11929
11934
  color: #c3c3c3;
11930
11935
  font-size: 13px;
11931
11936
  }
11932
- .tree-dropdown .options-footer[data-v-4a40a7ac] {
11937
+ .tree-dropdown .options-footer[data-v-733d54b7] {
11933
11938
  display: flex;
11934
11939
  justify-content: space-between;
11935
11940
  align-items: center;
11936
11941
  padding: 8px 8px;
11937
11942
  border-top: 1px solid #f0f0f0;
11938
11943
  }
11939
- .tree-dropdown .options-footer .btn-item[data-v-4a40a7ac] {
11944
+ .tree-dropdown .options-footer .btn-item[data-v-733d54b7] {
11940
11945
  width: 36px;
11941
11946
  height: 22px;
11942
11947
  line-height: 22px;
@@ -11946,7 +11951,7 @@ svg.portrait-icon[data-v-8bdb451e] {
11946
11951
  cursor: pointer;
11947
11952
  color: #026ac8;
11948
11953
  }
11949
- .tree-dropdown .options-footer .btn-center[data-v-4a40a7ac] {
11954
+ .tree-dropdown .options-footer .btn-center[data-v-733d54b7] {
11950
11955
  line-height: 22px;
11951
11956
  text-align: center;
11952
11957
  border-radius: 4px;
@@ -11955,7 +11960,7 @@ svg.portrait-icon[data-v-8bdb451e] {
11955
11960
  color: #212528;
11956
11961
  flex: 1;
11957
11962
  }
11958
- .tree-dropdown .options-footer .btn-center[data-v-4a40a7ac]:hover {
11963
+ .tree-dropdown .options-footer .btn-center[data-v-733d54b7]:hover {
11959
11964
  color: #ff4d4f;
11960
11965
  }
11961
11966
  .gct-datetime-dropdown[data-v-f7cd5521] {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gct-paas/word",
3
- "version": "0.1.47-beta.3",
3
+ "version": "0.1.47-beta.5",
4
4
  "description": "GCT 在线 word",
5
5
  "keywords": [
6
6
  "vue",