@gct-paas/word 0.1.35 → 0.1.37

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/README.md CHANGED
@@ -289,6 +289,12 @@ const customPlugin: WordSuitePlugin = {
289
289
  - 检查是否在 `setupPlatformAdapters` 初始化阶段完成注册
290
290
  - 检查 `suiteKey` 与已注册插件 `key` 是否一致
291
291
 
292
+ ## 本仓库开发与发布
293
+
294
+ 维护 `@gct-paas/word` 的分支策略、版本号与 npm 发布约定见仓库根目录文档:
295
+
296
+ [开发与发布流程](../../docs/development-and-release.md)
297
+
292
298
  ## License
293
299
 
294
300
  MIT
@@ -18,6 +18,8 @@ type __VLS_Props = {
18
18
  class?: string;
19
19
  /** 是否只读 */
20
20
  readonly?: boolean;
21
+ /** 是否禁用 */
22
+ disabled?: boolean;
21
23
  /** 不显示右侧箭头 */
22
24
  noArrow?: boolean;
23
25
  /** 是否需要分组展示 */
@@ -64,6 +66,7 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {
64
66
  onEdit?: ((option: DropdownOption) => any) | undefined;
65
67
  "onUpdate:modelValue"?: ((val: string | number | (string | number)[]) => any) | undefined;
66
68
  }>, {
69
+ disabled: boolean;
67
70
  options: DropdownOption[];
68
71
  placeholder: string;
69
72
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
package/dist/index.es.js CHANGED
@@ -35648,6 +35648,7 @@ const _sfc_main$36 = /* @__PURE__ */ defineComponent({
35648
35648
  dropdownExtraProps: {},
35649
35649
  class: {},
35650
35650
  readonly: { type: Boolean },
35651
+ disabled: { type: Boolean, default: false },
35651
35652
  noArrow: { type: Boolean },
35652
35653
  grouped: { type: Boolean }
35653
35654
  },
@@ -35693,7 +35694,7 @@ const _sfc_main$36 = /* @__PURE__ */ defineComponent({
35693
35694
  return props.modelValue === item.value;
35694
35695
  };
35695
35696
  const onSelect = (item) => {
35696
- if (item.disabled) return;
35697
+ if (props.disabled || props.readonly || item.disabled) return;
35697
35698
  if (props.multiple) {
35698
35699
  const arr = Array.isArray(props.modelValue) ? [...props.modelValue] : [];
35699
35700
  const idx = arr.indexOf(item.value);
@@ -35705,13 +35706,13 @@ const _sfc_main$36 = /* @__PURE__ */ defineComponent({
35705
35706
  }
35706
35707
  };
35707
35708
  const removeItem = (idx) => {
35708
- if (!props.multiple) return;
35709
+ if (!props.multiple || props.disabled || props.readonly) return;
35709
35710
  const arr = Array.isArray(props.modelValue) ? [...props.modelValue] : [];
35710
35711
  arr.splice(idx, 1);
35711
35712
  emitChange(arr);
35712
35713
  };
35713
35714
  const removeAll = () => {
35714
- if (!props.multiple) return;
35715
+ if (!props.multiple || props.disabled || props.readonly) return;
35715
35716
  emitChange([]);
35716
35717
  };
35717
35718
  function emitChange(val, item) {
@@ -35731,7 +35732,7 @@ const _sfc_main$36 = /* @__PURE__ */ defineComponent({
35731
35732
  distance: 2,
35732
35733
  placement: "bottom-start"
35733
35734
  }, __props.dropdownExtraProps, {
35734
- disabled: __props.readonly,
35735
+ disabled: __props.readonly || __props.disabled,
35735
35736
  onShow: handleShow,
35736
35737
  onHide: _cache[0] || (_cache[0] = ($event) => isVisible.value = false)
35737
35738
  }), {
@@ -35835,7 +35836,7 @@ const _sfc_main$36 = /* @__PURE__ */ defineComponent({
35835
35836
  createElementVNode("div", {
35836
35837
  ref_key: "triggerRef",
35837
35838
  ref: triggerRef,
35838
- class: normalizeClass(["gct-basic-select-container", { active: isVisible.value, multiple: __props.multiple }])
35839
+ class: normalizeClass(["gct-basic-select-container", { active: isVisible.value, multiple: __props.multiple, disabled: __props.disabled }])
35839
35840
  }, [
35840
35841
  !__props.multiple && selectedOptions.value.length ? (openBlock(), createElementBlock("span", {
35841
35842
  key: 0,
@@ -35881,7 +35882,7 @@ const _sfc_main$36 = /* @__PURE__ */ defineComponent({
35881
35882
  };
35882
35883
  }
35883
35884
  });
35884
- const GctSelect = /* @__PURE__ */ _export_sfc(_sfc_main$36, [["__scopeId", "data-v-1d900502"]]);
35885
+ const GctSelect = /* @__PURE__ */ _export_sfc(_sfc_main$36, [["__scopeId", "data-v-24467fa4"]]);
35885
35886
  const _hoisted_1$1$ = { class: "gct-slider-container" };
35886
35887
  const _sfc_main$35 = /* @__PURE__ */ defineComponent({
35887
35888
  __name: "slider",
@@ -52098,11 +52099,11 @@ const handleCustomDataSource = async (customDataSource, paramsConfig, subTableIn
52098
52099
  joinSqlJson: item.joinSqlJson,
52099
52100
  joinBuiltinConfig: item.joinBuiltinConfig,
52100
52101
  joinIpaasConfig: item.joinIpaasConfig,
52101
- query: item.onExpressions.filter((ex) => ex.fieldKey && ex.operator).map((ex) => {
52102
- return {
52103
- exp: `${ex.fieldKey}.${ex.operator}:${ex.id}`,
52104
- formKey: ex.formKey
52105
- };
52102
+ query: item.onExpressions.filter(({ fieldKey, operator }) => fieldKey && operator).map(({ fieldKey, operator, id, formKey }) => {
52103
+ const exp = `${fieldKey}.${operator}:${id}`;
52104
+ return [LinkOperatorEnum.ISNULL, LinkOperatorEnum.ISNOTNULL].includes(
52105
+ operator
52106
+ ) ? { exp } : { exp, formKey };
52106
52107
  }),
52107
52108
  onFieldMap: item.onFieldMap.map((k) => {
52108
52109
  return {
@@ -52257,8 +52258,10 @@ const handleCustomDataSource = async (customDataSource, paramsConfig, subTableIn
52257
52258
  const results = await Promise.all(promises);
52258
52259
  return results.reduce((merged, map) => merge(merged, map), {});
52259
52260
  };
52260
- const loadDataInitValues = async (dataInitConfig, paramsConfig, subTableInfo, fieldPermission, instanceId, instances, ctx) => {
52261
- if (!dataInitConfig) return { paramMap: {}, dsRawData: {} };
52261
+ const loadDataInitValues = async (fillModeType, dataInitConfig, paramsConfig, subTableInfo, fieldPermission, instanceId, instances, ctx) => {
52262
+ if (fillModeType === DocModeTypeConst.Edit || !dataInitConfig) {
52263
+ return { paramMap: {}, dsRawData: {} };
52264
+ }
52262
52265
  const { parameterMapping = [], customDataSource = [] } = dataInitConfig || {};
52263
52266
  const paramMap = await handleParameterMapping(
52264
52267
  parameterMapping,
@@ -52463,6 +52466,7 @@ async function initializeDocumentEngine(props, payload, result) {
52463
52466
  );
52464
52467
  console.log("默认值集合 ===>", defaultDataMap);
52465
52468
  const { paramMap, dsMap } = await loadDataInitValues(
52469
+ fillModeType,
52466
52470
  cloneRuntimeJson?.document?.config?.dataInit,
52467
52471
  paramsConfig,
52468
52472
  docModel.getSubTableInfoList(),
@@ -52516,6 +52520,29 @@ async function initializeDocumentEngine(props, payload, result) {
52516
52520
  docInfo
52517
52521
  };
52518
52522
  }
52523
+ async function finalizeDesignModelImport(doc, docModel) {
52524
+ doc.setModel(docModel);
52525
+ const mainModelKey = doc.mainModelKey;
52526
+ doc.dataManager.setRawData({}, {});
52527
+ doc.docRuntimeMeta.handleInfo.initRawDataSnapshot = cloneDeep(doc.dataManager.getRawData());
52528
+ doc.commandManager.undoStack.length = 0;
52529
+ doc.commandManager.redoStack.length = 0;
52530
+ doc.eventManager.cursorController.clearCursor();
52531
+ doc.interactionManager.clear("tableSelection");
52532
+ doc.interactionManager.clear("activeTableId");
52533
+ doc.interactionManager.clear("dragHoverId");
52534
+ doc.interactionManager.clear("hoverModelId");
52535
+ doc.interactionManager.clear("focusModelId");
52536
+ const bodyContent = doc.model?.document.body.children ?? [];
52537
+ const wsecPr = bodyContent.find((item) => item.name === "w:secPr");
52538
+ doc.interactionManager.set("panelData", {
52539
+ panelType: "panel:paper",
52540
+ context: {
52541
+ mainModelKey,
52542
+ secRefId: wsecPr?.id
52543
+ }
52544
+ });
52545
+ }
52519
52546
  function useDocumentFactory(props, payload) {
52520
52547
  const counter = ref(0);
52521
52548
  const finisher = ref(0);
@@ -52577,14 +52604,42 @@ function useDocumentFactory(props, payload) {
52577
52604
  async function refreshData() {
52578
52605
  const doc = docIns.value;
52579
52606
  const execute = lastExecute.value;
52580
- if (!doc || !execute) return;
52607
+ const requestId = unref(props.requestId) ?? execute?.id;
52608
+ if (!doc || !execute || !requestId) return;
52581
52609
  isRefreshingData.value = true;
52582
52610
  try {
52583
- const { requestInfo, query, paramsConfig } = execute;
52611
+ const freshExecute = await processDocumentRequest(props, payload, requestId);
52612
+ if (!freshExecute) return;
52613
+ lastExecute.value = freshExecute;
52614
+ const {
52615
+ requestInfo,
52616
+ query,
52617
+ paramsConfig,
52618
+ fillModeType,
52619
+ btnModelType,
52620
+ bpmnType,
52621
+ bpmnFieldAuthMap
52622
+ } = freshExecute;
52584
52623
  const mainModelKey = requestInfo.modelKey || payload.modelKey || "";
52585
52624
  const materialNo = paramsConfig?.materialNo || props.materialNo;
52586
52625
  const masterSlaveList = payload.ctx.runtime.getMasterSlaveFieldList(mainModelKey);
52587
52626
  const instances = doc.model?.getWidgetInstances() ?? [];
52627
+ const { initDocModelJson } = doc.docRuntimeMeta.handleInfo;
52628
+ Object.assign(doc.docRuntimeMeta, requestInfo);
52629
+ doc.docRuntimeMeta.handleInfo = {
52630
+ ...doc.docRuntimeMeta.handleInfo,
52631
+ bpmnType,
52632
+ bpmnFieldAuthMap,
52633
+ initDocModelJson
52634
+ };
52635
+ doc.paramsConfig = paramsConfig ?? {};
52636
+ if (doc.mode !== fillModeType) {
52637
+ doc.setMode(fillModeType);
52638
+ }
52639
+ if (doc.btnRenderModeType !== btnModelType) {
52640
+ doc.btnRenderModeType = btnModelType;
52641
+ doc.layout();
52642
+ }
52588
52643
  const interfaceData = await fetchRenderData({
52589
52644
  info: requestInfo,
52590
52645
  fetchConfig: { _gct_materialNo_: materialNo },
@@ -56257,7 +56312,7 @@ function getDataIndexLayersMap({
56257
56312
  convertExtraProps
56258
56313
  }) {
56259
56314
  const getDataIndex = (cell) => {
56260
- return isLinkSubTableType(type4) && isDesign ? cell.subRenderer?.xDataIndex : cell.subRenderer?.yDataIndex;
56315
+ return isLinkSubTableType(type4) && isDesign ? cell.subRenderer?.xDataIndex : cell.subRenderer?.yDataIndex ?? cell.subRenderer?.dataIndex;
56261
56316
  };
56262
56317
  const getAllDataIndex = (cell) => {
56263
56318
  const { dataIndex, xDataIndex, yDataIndex } = cell?.subRenderer || {};
@@ -58200,6 +58255,34 @@ function buildFieldChangeList(params) {
58200
58255
  }
58201
58256
  return changeList;
58202
58257
  }
58258
+ function createDesignerValidationResult(errors) {
58259
+ return {
58260
+ valid: errors.length === 0,
58261
+ errors
58262
+ };
58263
+ }
58264
+ function validateDocDesigner(doc) {
58265
+ if (!doc?.model) {
58266
+ return createDesignerValidationResult([]);
58267
+ }
58268
+ const errors = [];
58269
+ const children = doc.model.document.body.children || [];
58270
+ const fixedTableRegions = children.filter((w2) => w2.name === "w:tbl" && w2.hasBounded).flatMap((w2) => w2.bounded);
58271
+ if (fixedTableRegions.some((r) => !r.itemRegion)) {
58272
+ errors.push({
58273
+ code: "item-region-required",
58274
+ message: "请给固定表设置数据分组",
58275
+ source: "doc"
58276
+ });
58277
+ }
58278
+ return createDesignerValidationResult(errors);
58279
+ }
58280
+ function validateDesigner(doc) {
58281
+ const errors = [];
58282
+ const docResult = validateDocDesigner(doc);
58283
+ errors.push(...docResult.errors);
58284
+ return createDesignerValidationResult(errors);
58285
+ }
58203
58286
  function useDocOperations(docRef) {
58204
58287
  function getDoc() {
58205
58288
  return docRef.value ?? null;
@@ -58217,6 +58300,9 @@ function useDocOperations(docRef) {
58217
58300
  if (!doc) return null;
58218
58301
  return validateAllFields(doc);
58219
58302
  }
58303
+ function validateDesigner$1() {
58304
+ return validateDesigner(getDoc());
58305
+ }
58220
58306
  function exportModel() {
58221
58307
  return getDoc()?.model?.toXmlJson() ?? null;
58222
58308
  }
@@ -58296,6 +58382,7 @@ function useDocOperations(docRef) {
58296
58382
  }
58297
58383
  return {
58298
58384
  validate,
58385
+ validateDesigner: validateDesigner$1,
58299
58386
  exportModel,
58300
58387
  getDocumentAttachmentPaths,
58301
58388
  enterBaseline,
@@ -58363,6 +58450,9 @@ function useDocController(factory2, ops) {
58363
58450
  validate() {
58364
58451
  return ops.validate();
58365
58452
  },
58453
+ validateDesigner() {
58454
+ return ops.validateDesigner();
58455
+ },
58366
58456
  exportModel() {
58367
58457
  return ops.exportModel();
58368
58458
  },
@@ -62660,12 +62750,21 @@ const _sfc_main$22 = /* @__PURE__ */ defineComponent({
62660
62750
  doCallback(data) {
62661
62751
  if (!data) return;
62662
62752
  const focus = Array.isArray(data) ? data[data.length - 1] : data;
62753
+ const meta2 = docInst.value.layoutMapper.getBaseMetaNodeById(focus.nodeId);
62754
+ const extra = {};
62755
+ if (meta2?.line?.lineType === "tablerow") {
62756
+ const tableMeta = docInst.value.layoutMapper.getLayoutNodeById(meta2.line.tableId);
62757
+ const cellMeta = docInst.value.layoutMapper.getLayoutNodeById(
62758
+ meta2.line.tableCellId
62759
+ );
62760
+ if (tableMeta && cellMeta && cellMeta.isSubRenderer) {
62761
+ Object.assign(extra, { subFieldKey: cellMeta.subRenderer.valuePath });
62762
+ }
62763
+ }
62663
62764
  docInst.value.eventManager.dispatchCustom("inter:active", {
62664
62765
  type: "panel:widget",
62665
62766
  modelId: focus.modelId,
62666
- extra: {
62667
- subFieldKey: widgetMeta.field?.subFieldKey
62668
- }
62767
+ extra
62669
62768
  });
62670
62769
  }
62671
62770
  });
@@ -62700,7 +62799,7 @@ const _sfc_main$22 = /* @__PURE__ */ defineComponent({
62700
62799
  };
62701
62800
  }
62702
62801
  });
62703
- const EditableCanvas = /* @__PURE__ */ _export_sfc(_sfc_main$22, [["__scopeId", "data-v-85f53514"]]);
62802
+ const EditableCanvas = /* @__PURE__ */ _export_sfc(_sfc_main$22, [["__scopeId", "data-v-68d32062"]]);
62704
62803
  const useDocDesignLayoutProps = () => {
62705
62804
  const provideProps = (props) => {
62706
62805
  provide(DOC_DESIGN_LAYOUT_PROPS, props);
@@ -62831,13 +62930,14 @@ const _sfc_main$21 = /* @__PURE__ */ defineComponent({
62831
62930
  };
62832
62931
  onFileUpload(async (files) => {
62833
62932
  const file = files?.[0];
62834
- if (!file) return;
62933
+ const doc = docInst.value;
62934
+ if (!file || !doc) return;
62835
62935
  try {
62836
62936
  const res = await serviceUtil.parseFile(file);
62837
62937
  if (!res) return;
62838
62938
  const json = JSON.parse(res);
62839
62939
  const docModel = ModelConverter.toModel(json);
62840
- docInst.value?.setModel(docModel);
62940
+ await finalizeDesignModelImport(doc, docModel);
62841
62941
  } finally {
62842
62942
  reset();
62843
62943
  }
@@ -62909,7 +63009,7 @@ const _sfc_main$21 = /* @__PURE__ */ defineComponent({
62909
63009
  };
62910
63010
  }
62911
63011
  });
62912
- const docDesignLayout = /* @__PURE__ */ _export_sfc(_sfc_main$21, [["__scopeId", "data-v-744401de"]]);
63012
+ const docDesignLayout = /* @__PURE__ */ _export_sfc(_sfc_main$21, [["__scopeId", "data-v-5f6e6e6a"]]);
62913
63013
  function convertPxToPaperSize(pageSize, customSize) {
62914
63014
  if (pageSize === PageSizeEnumConst.A3) {
62915
63015
  return {
@@ -67288,11 +67388,7 @@ const _sfc_main$1E = /* @__PURE__ */ defineComponent({
67288
67388
  __name: "PaperPanel",
67289
67389
  setup(__props) {
67290
67390
  const { active, widget } = useActivePanel();
67291
- const { docInst } = useDocPubApiContext();
67292
- const getAllChildren = () => {
67293
- return docInst.value?.model?.document.body.children || [];
67294
- };
67295
- const allChildren = ref(getAllChildren());
67391
+ const { docInst, withLayoutComputed } = useDocPubApiContext();
67296
67392
  const paperFormat = computed(() => {
67297
67393
  const page = widget.value;
67298
67394
  const section = page?.section;
@@ -67304,10 +67400,11 @@ const _sfc_main$1E = /* @__PURE__ */ defineComponent({
67304
67400
  const typeCh = type4 === PageSizeEnumConst.CUSTOM ? "自定义" : type4;
67305
67401
  return `${typeCh} (${w2}mm*${h2}mm)`;
67306
67402
  });
67307
- const regionsInfo = computed(() => {
67403
+ const regionsInfo = withLayoutComputed(() => {
67404
+ const allChildren = docInst.value?.model?.document.body.children ?? [];
67308
67405
  const globalTableHeaderRegions = [];
67309
67406
  const subTableHeaderRegions = [];
67310
- allChildren.value.filter((w2) => w2.name === "w:tbl" && w2.tableHeader?.length).flatMap((w2) => w2.tableHeader).forEach((r) => {
67407
+ allChildren.filter((w2) => w2.name === "w:tbl" && w2.tableHeader?.length).flatMap((w2) => w2.tableHeader).forEach((r) => {
67311
67408
  if (r.type === "table-header") {
67312
67409
  globalTableHeaderRegions.push(r);
67313
67410
  } else {
@@ -67325,10 +67422,10 @@ const _sfc_main$1E = /* @__PURE__ */ defineComponent({
67325
67422
  return region;
67326
67423
  }
67327
67424
  };
67328
- const fixedTableRegions = allChildren.value.filter((w2) => w2.name === "w:tbl" && w2.hasBounded).flatMap((w2) => w2.bounded).map(patchSubThead);
67329
- const checkTableRegions = allChildren.value.filter((w2) => w2.name === "w:tbl" && w2.hasCheckTable).flatMap((w2) => w2.checkTable).map(patchSubThead);
67330
- const dynamicTableRegions = allChildren.value.filter((w2) => w2.name === "w:tbl" && w2.hasRepeating).flatMap((w2) => w2.repeating).map(patchSubThead);
67331
- const _2DTableRegions = allChildren.value.filter((w2) => w2.name === "w:tbl" && w2.has2DTable).flatMap((w2) => w2._2DTable).map(patchSubThead);
67425
+ const fixedTableRegions = allChildren.filter((w2) => w2.name === "w:tbl" && w2.hasBounded).flatMap((w2) => w2.bounded).map(patchSubThead);
67426
+ const checkTableRegions = allChildren.filter((w2) => w2.name === "w:tbl" && w2.hasCheckTable).flatMap((w2) => w2.checkTable).map(patchSubThead);
67427
+ const dynamicTableRegions = allChildren.filter((w2) => w2.name === "w:tbl" && w2.hasRepeating).flatMap((w2) => w2.repeating).map(patchSubThead);
67428
+ const _2DTableRegions = allChildren.filter((w2) => w2.name === "w:tbl" && w2.has2DTable).flatMap((w2) => w2._2DTable).map(patchSubThead);
67332
67429
  return {
67333
67430
  globalTableHeaderRegions,
67334
67431
  fixedTableRegions,
@@ -67419,10 +67516,6 @@ const _sfc_main$1E = /* @__PURE__ */ defineComponent({
67419
67516
  tableId,
67420
67517
  regionId
67421
67518
  });
67422
- allChildren.value = [];
67423
- setTimeout(() => {
67424
- allChildren.value = getAllChildren();
67425
- });
67426
67519
  };
67427
67520
  return (_ctx, _cache) => {
67428
67521
  return openBlock(), createElementBlock("div", _hoisted_1$1n, [
@@ -67518,7 +67611,7 @@ const _sfc_main$1E = /* @__PURE__ */ defineComponent({
67518
67611
  default: withCtx(() => [
67519
67612
  createVNode(TableSettingModule, {
67520
67613
  type: "table-header",
67521
- list: regionsInfo.value.globalTableHeaderRegions,
67614
+ list: unref(regionsInfo).globalTableHeaderRegions,
67522
67615
  onActive: _cache[2] || (_cache[2] = (r) => handleRegionActive("table-header", r)),
67523
67616
  onDelete: _cache[3] || (_cache[3] = (r) => handleRegionDelete("deleteTableHeader", r))
67524
67617
  }, null, 8, ["list"])
@@ -67532,7 +67625,7 @@ const _sfc_main$1E = /* @__PURE__ */ defineComponent({
67532
67625
  default: withCtx(() => [
67533
67626
  createVNode(TableSettingModule, {
67534
67627
  type: "dynamic-table",
67535
- list: regionsInfo.value.dynamicTableRegions,
67628
+ list: unref(regionsInfo).dynamicTableRegions,
67536
67629
  onActive: _cache[4] || (_cache[4] = (r) => handleRegionActive("dynamic-table", r)),
67537
67630
  onDelete: _cache[5] || (_cache[5] = (r) => handleRegionDelete("deleteRepeating", r)),
67538
67631
  onDeleteThead: _cache[6] || (_cache[6] = (r) => handleRegionDelete("deleteTableHeader", r.thead))
@@ -67547,7 +67640,7 @@ const _sfc_main$1E = /* @__PURE__ */ defineComponent({
67547
67640
  default: withCtx(() => [
67548
67641
  createVNode(TableSettingModule, {
67549
67642
  type: "2d-table",
67550
- list: regionsInfo.value._2DTableRegions,
67643
+ list: unref(regionsInfo)._2DTableRegions,
67551
67644
  onActive: _cache[7] || (_cache[7] = (r) => handleRegionActive("2d-table", r)),
67552
67645
  onDelete: _cache[8] || (_cache[8] = (r) => handleRegionDelete("delete2DTable", r)),
67553
67646
  onDeleteThead: _cache[9] || (_cache[9] = (r) => handleRegionDelete("deleteTableHeader", r.thead))
@@ -67562,7 +67655,7 @@ const _sfc_main$1E = /* @__PURE__ */ defineComponent({
67562
67655
  default: withCtx(() => [
67563
67656
  createVNode(TableSettingModule, {
67564
67657
  type: "fixed-table",
67565
- list: regionsInfo.value.fixedTableRegions,
67658
+ list: unref(regionsInfo).fixedTableRegions,
67566
67659
  onActive: _cache[10] || (_cache[10] = (r) => handleRegionActive("fixed-table", r)),
67567
67660
  onDelete: _cache[11] || (_cache[11] = (r) => handleRegionDelete("deleteBounded", r)),
67568
67661
  onDeleteThead: _cache[12] || (_cache[12] = (r) => handleRegionDelete("deleteTableHeader", r.thead))
@@ -67577,7 +67670,7 @@ const _sfc_main$1E = /* @__PURE__ */ defineComponent({
67577
67670
  default: withCtx(() => [
67578
67671
  createVNode(TableSettingModule, {
67579
67672
  type: "check-table",
67580
- list: regionsInfo.value.checkTableRegions,
67673
+ list: unref(regionsInfo).checkTableRegions,
67581
67674
  onActive: _cache[13] || (_cache[13] = (r) => handleRegionActive("check-table", r)),
67582
67675
  onDelete: _cache[14] || (_cache[14] = (r) => handleRegionDelete("deleteCheckTable", r)),
67583
67676
  onDeleteThead: _cache[15] || (_cache[15] = (r) => handleRegionDelete("deleteTableHeader", r.thead))
@@ -67593,7 +67686,7 @@ const _sfc_main$1E = /* @__PURE__ */ defineComponent({
67593
67686
  };
67594
67687
  }
67595
67688
  });
67596
- const PaperPanel = /* @__PURE__ */ _export_sfc(_sfc_main$1E, [["__scopeId", "data-v-3cf8e3a5"]]);
67689
+ const PaperPanel = /* @__PURE__ */ _export_sfc(_sfc_main$1E, [["__scopeId", "data-v-aef33bab"]]);
67597
67690
  const schema$c = {
67598
67691
  key: "paper.basic",
67599
67692
  title: "表单属性",
@@ -69918,7 +70011,11 @@ const _sfc_main$1j = /* @__PURE__ */ defineComponent({
69918
70011
  });
69919
70012
  const isCheckTable = computed(() => props.joinModelKey === "M08");
69920
70013
  const checkTableDataSource = computed(() => {
69921
- return [];
70014
+ const checkTableSubFieldKeys = (docInst.value?.model?.document.body.children || []).filter((w2) => w2.name === "w:tbl" && w2.hasCheckTable).flatMap((w2) => w2.checkTable.map((t) => t.valuePath.replace("$.", "")));
70015
+ return checkTableSubFieldKeys.map((subFieldKey) => {
70016
+ const modelKey = fields.value.find((f) => f.key === subFieldKey)?.bindInfo;
70017
+ return { modelKey, subFieldKey };
70018
+ });
69922
70019
  });
69923
70020
  const modelOptions = computed(() => {
69924
70021
  if (isCheckTable.value) {
@@ -70114,7 +70211,7 @@ const _sfc_main$1j = /* @__PURE__ */ defineComponent({
70114
70211
  };
70115
70212
  }
70116
70213
  });
70117
- const DataSourceFieldMap = /* @__PURE__ */ _export_sfc(_sfc_main$1j, [["__scopeId", "data-v-14ad8aad"]]);
70214
+ const DataSourceFieldMap = /* @__PURE__ */ _export_sfc(_sfc_main$1j, [["__scopeId", "data-v-fddd78f7"]]);
70118
70215
  const _hoisted_1$18 = { class: "param-link-container" };
70119
70216
  const _hoisted_2$G = { class: "param-link-content" };
70120
70217
  const _hoisted_3$t = { class: "param-link-item" };
@@ -70291,10 +70388,19 @@ const _sfc_main$1h = /* @__PURE__ */ defineComponent({
70291
70388
  const ipaasList = ref([]);
70292
70389
  const builtinList = ref([]);
70293
70390
  const activeKeys = ref([]);
70294
- const formState = ref(structuredClone(
70295
- toRaw(docInst.value.model.document.config?.dataInit || {})
70296
- ));
70391
+ let syncingFromModel = false;
70392
+ const formState = ref({});
70393
+ function syncFormStateFromModel() {
70394
+ const doc = docInst.value;
70395
+ if (!doc?.model) return;
70396
+ syncingFromModel = true;
70397
+ formState.value = structuredClone(toRaw(doc.model.document.config?.dataInit || {}));
70398
+ syncingFromModel = false;
70399
+ }
70400
+ syncFormStateFromModel();
70401
+ watch(() => docInst.value?.model, syncFormStateFromModel);
70297
70402
  watchEffect(() => {
70403
+ if (syncingFromModel || !docInst.value?.model) return;
70298
70404
  if (!docInst.value.model.document.config) {
70299
70405
  docInst.value.model.document.config = {};
70300
70406
  }
@@ -70411,7 +70517,7 @@ const _sfc_main$1h = /* @__PURE__ */ defineComponent({
70411
70517
  return (_ctx, _cache) => {
70412
70518
  return openBlock(), createElementBlock("div", _hoisted_1$17, [
70413
70519
  createVNode(unref(GctCollapse), {
70414
- class: "panel-collapse",
70520
+ class: "panel-collapse is-first",
70415
70521
  title: "参数映射"
70416
70522
  }, {
70417
70523
  default: withCtx(() => [
@@ -70527,7 +70633,7 @@ const _sfc_main$1h = /* @__PURE__ */ defineComponent({
70527
70633
  };
70528
70634
  }
70529
70635
  });
70530
- const DataInitPanel = /* @__PURE__ */ _export_sfc(_sfc_main$1h, [["__scopeId", "data-v-6003ed85"]]);
70636
+ const DataInitPanel = /* @__PURE__ */ _export_sfc(_sfc_main$1h, [["__scopeId", "data-v-4f691915"]]);
70531
70637
  const schema$5 = {
70532
70638
  key: "data-init.basic",
70533
70639
  title: "数据初始化",
@@ -72358,7 +72464,7 @@ const _sfc_main$Y = /* @__PURE__ */ defineComponent({
72358
72464
  return openBlock(), createBlock(unref(GctFormItem), {
72359
72465
  label: __props.label,
72360
72466
  inline: false
72361
- }, {
72467
+ }, createSlots({
72362
72468
  default: withCtx(() => [
72363
72469
  createVNode(unref(GctSelect), mergeProps({
72364
72470
  modelValue: _value.value,
@@ -72366,8 +72472,16 @@ const _sfc_main$Y = /* @__PURE__ */ defineComponent({
72366
72472
  options: __props.options
72367
72473
  }, __props.selectProps), null, 16, ["modelValue", "options"])
72368
72474
  ]),
72369
- _: 1
72370
- }, 8, ["label"]);
72475
+ _: 2
72476
+ }, [
72477
+ _ctx.$slots.customExtra ? {
72478
+ name: "extra",
72479
+ fn: withCtx(() => [
72480
+ renderSlot(_ctx.$slots, "customExtra")
72481
+ ]),
72482
+ key: "0"
72483
+ } : void 0
72484
+ ]), 1032, ["label"]);
72371
72485
  };
72372
72486
  }
72373
72487
  });
@@ -1,3 +1,4 @@
1
+ import { DocModeType } from '../../core';
1
2
  import { DesignSuiteContext } from '../_register_/context/DesignSuiteContext';
2
3
  import { FieldMeta } from '../../capabilities/model-field-runtime';
3
4
  /**
@@ -26,6 +27,8 @@ export declare function getDefaultQueryIdsByFieldType(payload: {
26
27
  export declare function loadDefaultValuesByFields(instances: any[], ctx: DesignSuiteContext, context: any, masterSlaveList: FieldMeta[]): Promise<Record<string, any>>;
27
28
  /** 获取数据初始化数据 */
28
29
  export declare const loadDataInitValues: (
30
+ /** 文档渲染模式 */
31
+ fillModeType: DocModeType,
29
32
  /** 数据初始化配置 */
30
33
  dataInitConfig: any,
31
34
  /** 参数配置 */
@@ -12,6 +12,5 @@ import { DocOperations } from './useDocOperations';
12
12
  * const factory = useDocumentFactory(docProps, docPayload);
13
13
  * const ops = useDocOperations(factory.doc);
14
14
  * const controller = useDocController(factory, ops);
15
- * // controller.value?.validate()
16
15
  */
17
16
  export declare function useDocController(factory: DocumentFactory, ops: DocOperations): ShallowRef<DocController | null>;
@@ -1,6 +1,7 @@
1
1
  import { ShallowRef } from 'vue';
2
2
  import { Doc } from '../../../core';
3
3
  import { FieldChangeItem, WidgetFieldMetaMap } from '../../../runtime/interface/change-diff';
4
+ import { DesignerValidationResult } from '../../types/designer-validation';
4
5
  /** 数据变更基线上下文 */
5
6
  export interface DocBaselineContext {
6
7
  baselineSnapshot: Record<string, any> | undefined;
@@ -18,6 +19,8 @@ export interface DocGetUnsavedChangesOptions {
18
19
  export interface DocOperations {
19
20
  /** 校验所有字段,返回错误映射或 null(通过) */
20
21
  validate(): Promise<Record<string, string[]> | null>;
22
+ /** 设计态保存前校验(文档配置 + 数据加载模板配置等) */
23
+ validateDesigner(): DesignerValidationResult;
21
24
  /** 获取文档模型的 XmlJson(用于保存) */
22
25
  exportModel(): any;
23
26
  /**
@@ -1,5 +1,6 @@
1
1
  import { Doc } from '../../../core';
2
2
  import { DocInfo } from '../../types';
3
+ import { DocModel } from '../../../core/model';
3
4
  import { IDocPayload, IDocProps, Execute } from './useDocumentFactory';
4
5
  export interface InitializedDocument {
5
6
  doc: Doc;
@@ -8,3 +9,7 @@ export interface InitializedDocument {
8
9
  /** 从 Doc 实例提取响应式页面快照(与 layout 同步,供 docInfo ref 驱动 Vue) */
9
10
  export declare function snapshotDocInfo(docInst?: Doc): DocInfo;
10
11
  export declare function initializeDocumentEngine(props: IDocProps, payload: IDocPayload, result: Execute): Promise<InitializedDocument>;
12
+ /**
13
+ * 设计态导入 docx:替换模型并完成子模型 scope、设计默认值、交互与未保存基线等收尾。
14
+ */
15
+ export declare function finalizeDesignModelImport(doc: Doc, docModel: DocModel): Promise<void>;
@@ -69,8 +69,8 @@ export interface DocumentFactory {
69
69
  /** 手动触发文档重新加载(重新请求接口 + 重建引擎) */
70
70
  reload(): void;
71
71
  /**
72
- * 仅重新拉取填报数据并更新 dataManager,不重建引擎。
73
- * 适用于填报模式保存后需要同步服务端最新数据的场景。
72
+ * 重新请求实例/模板详情与填报数据,更新 dataManager,不重建引擎。
73
+ * 适用于保存后需要同步服务端最新实例状态与填报数据的场景。
74
74
  */
75
75
  refreshData(): Promise<void>;
76
76
  }
@@ -0,0 +1,4 @@
1
+ import { Doc } from '../../../core';
2
+ import { DesignerValidationResult } from '../../types/designer-validation';
3
+ /** 聚合设计态校验:文档模型 */
4
+ export declare function validateDesigner(doc: Doc | null): DesignerValidationResult;
@@ -0,0 +1,4 @@
1
+ import { Doc } from '../../../core';
2
+ import { DesignerValidationResult } from '../../types/designer-validation';
3
+ /** 校验文档模型中的设计态配置 */
4
+ export declare function validateDocDesigner(doc: Doc | null): DesignerValidationResult;
@@ -4,7 +4,7 @@
4
4
  */
5
5
  export { DocModeTypeConst, PageSizeEnumConst, BuiltinComponentTypeConst } from '../../core';
6
6
  export type { DocModeType, CompleteComponentType, BuiltinComponentType } from '../../core';
7
- export type { DocController, DocQueryAPI, WordRuntime, DocInfo, DocRuntimeMeta, DocRuntimeMetaHandleInfo, DocUnsavedChanges, DocGetUnsavedChangesOptions, UseWordProps, UseWordOptions, FieldModelQuery, } from '../types';
7
+ export type { DocController, DocQueryAPI, WordRuntime, DocInfo, DocRuntimeMeta, DocRuntimeMetaHandleInfo, DocUnsavedChanges, DocGetUnsavedChangesOptions, DesignerValidationError, DesignerValidationResult, DesignerValidationSource, UseWordProps, UseWordOptions, FieldModelQuery, } from '../types';
8
8
  export type { Execute } from '../doc-runtime/factories/useDocumentFactory';
9
9
  export { useWord } from '../doc-runtime/useWord';
10
10
  export { useDocSuite } from '../doc-runtime/composables/useDocSuite';
@@ -0,0 +1,16 @@
1
+ /** 设计态校验错误来源 */
2
+ export type DesignerValidationSource = 'doc';
3
+ /** 单条设计态校验错误 */
4
+ export interface DesignerValidationError {
5
+ code: string;
6
+ message: string;
7
+ source: DesignerValidationSource;
8
+ /** 便于定位 */
9
+ path?: string;
10
+ }
11
+ /** 设计态校验结果 */
12
+ export interface DesignerValidationResult {
13
+ valid: boolean;
14
+ errors: DesignerValidationError[];
15
+ }
16
+ export declare function createDesignerValidationResult(errors: DesignerValidationError[]): DesignerValidationResult;
@@ -6,7 +6,9 @@ import { DocBaselineContext, DocUnsavedChanges, DocOperations, DocGetUnsavedChan
6
6
  import { OnlineFormInstanceResponse, OnlineFormTmplResponse } from '@gct-paas/api/apaas';
7
7
  import { FieldChangeItem } from '../../runtime/interface/change-diff';
8
8
  import { FormTmplConfigController } from '../../suites/edhr/panel-schema/data-load/hooks/form-tmpl-config';
9
+ import { DesignerValidationResult } from './designer-validation';
9
10
  export type { DocUnsavedChanges, DocGetUnsavedChangesOptions, } from '../doc-runtime/composables/useDocOperations';
11
+ export type { DesignerValidationError, DesignerValidationResult, DesignerValidationSource, } from './designer-validation';
10
12
  export type { FieldModelQuery } from './field-model-query';
11
13
  /** 字段权限信息 */
12
14
  export interface FieldPermissionInfo {
@@ -75,12 +77,14 @@ export interface DocControllerMethods extends DocOperations {
75
77
  /** 手动触发文档重新加载 */
76
78
  reload(): void;
77
79
  /**
78
- * 仅重新拉取填报数据并更新 dataManager,不重建引擎。
79
- * 适用于填报模式保存后需要同步服务端最新数据的场景。
80
+ * 重新请求实例/模板详情与填报数据,更新 dataManager,不重建引擎。
81
+ * 适用于保存后需要同步服务端最新实例状态与填报数据的场景。
80
82
  */
81
83
  refreshData(): Promise<void>;
82
84
  /** 校验全量字段,返回错误映射;通过时返回 null */
83
85
  validate(): Promise<Record<string, string[]> | null>;
86
+ /** 设计态保存前校验;通过时 valid 为 true */
87
+ validateDesigner(): DesignerValidationResult;
84
88
  /** 导出当前文档模型 XmlJson(常用于保存) */
85
89
  exportModel(): any;
86
90
  /** 获取文档内附件路径列表(默认提取 fw:file 组件) */
@@ -1,2 +1,2 @@
1
1
  import { PaperWidgetManifest } from '../../../../capabilities/paper-widget-manifest';
2
- export declare const manifest: PaperWidgetManifest;
2
+ export declare const manifest: Omit<PaperWidgetManifest, 'renderers'>;
package/dist/word.css CHANGED
@@ -7013,7 +7013,7 @@ textarea[data-v-57fe54a3]::placeholder {
7013
7013
  line-height: 24px;
7014
7014
  text-align: center;
7015
7015
  }
7016
- .gct-basic-popper-wrap[data-v-1d900502] {
7016
+ .gct-basic-popper-wrap[data-v-24467fa4] {
7017
7017
  position: relative;
7018
7018
  height: 100%;
7019
7019
  width: 100%;
@@ -7021,21 +7021,21 @@ textarea[data-v-57fe54a3]::placeholder {
7021
7021
  min-width: 136px;
7022
7022
  width: var(--dropdown-popper-width, 136px);
7023
7023
  }
7024
- .gct-basic-popper-wrap .popper-scrollbar[data-v-1d900502] {
7024
+ .gct-basic-popper-wrap .popper-scrollbar[data-v-24467fa4] {
7025
7025
  position: relative;
7026
7026
  padding: 4px;
7027
7027
  }
7028
- .gct-basic-popper-wrap .popper-scrollbar .popper-container[data-v-1d900502] {
7028
+ .gct-basic-popper-wrap .popper-scrollbar .popper-container[data-v-24467fa4] {
7029
7029
  position: relative;
7030
7030
  width: 100%;
7031
7031
  max-height: 300px;
7032
7032
  }
7033
- .gct-basic-popper-wrap .popper-scrollbar .select-group .group-name[data-v-1d900502] {
7033
+ .gct-basic-popper-wrap .popper-scrollbar .select-group .group-name[data-v-24467fa4] {
7034
7034
  padding: 8px 8px 4px 8px;
7035
7035
  font-size: 12px;
7036
7036
  color: #999;
7037
7037
  }
7038
- .gct-basic-popper-wrap .popper-scrollbar .option-item[data-v-1d900502] {
7038
+ .gct-basic-popper-wrap .popper-scrollbar .option-item[data-v-24467fa4] {
7039
7039
  position: relative;
7040
7040
  display: flex;
7041
7041
  align-items: center;
@@ -7047,31 +7047,31 @@ textarea[data-v-57fe54a3]::placeholder {
7047
7047
  padding: 5px 8px;
7048
7048
  transition: all 0.3s ease;
7049
7049
  }
7050
- .gct-basic-popper-wrap .popper-scrollbar .option-item[data-v-1d900502]:not(.selected, .disabled):hover {
7050
+ .gct-basic-popper-wrap .popper-scrollbar .option-item[data-v-24467fa4]:not(.selected, .disabled):hover {
7051
7051
  background: rgba(13, 13, 13, 0.06);
7052
7052
  }
7053
- .gct-basic-popper-wrap .popper-scrollbar .option-item:not(.selected, .disabled):hover .edit-icon[data-v-1d900502] {
7053
+ .gct-basic-popper-wrap .popper-scrollbar .option-item:not(.selected, .disabled):hover .edit-icon[data-v-24467fa4] {
7054
7054
  display: inline-flex;
7055
7055
  }
7056
- .gct-basic-popper-wrap .popper-scrollbar .option-item + .option-item[data-v-1d900502] {
7056
+ .gct-basic-popper-wrap .popper-scrollbar .option-item + .option-item[data-v-24467fa4] {
7057
7057
  margin-top: 4px;
7058
7058
  }
7059
- .gct-basic-popper-wrap .popper-scrollbar .option-item.disabled[data-v-1d900502] {
7059
+ .gct-basic-popper-wrap .popper-scrollbar .option-item.disabled[data-v-24467fa4] {
7060
7060
  opacity: 0.3;
7061
7061
  pointer-events: none;
7062
7062
  user-select: none;
7063
7063
  }
7064
- .gct-basic-popper-wrap .popper-scrollbar .option-item.selected[data-v-1d900502] {
7064
+ .gct-basic-popper-wrap .popper-scrollbar .option-item.selected[data-v-24467fa4] {
7065
7065
  background: #e3eafc;
7066
7066
  }
7067
- .gct-basic-popper-wrap .popper-scrollbar .option-item .o-icon[data-v-1d900502] {
7067
+ .gct-basic-popper-wrap .popper-scrollbar .option-item .o-icon[data-v-24467fa4] {
7068
7068
  display: inline-flex;
7069
7069
  width: 16px;
7070
7070
  height: 16px;
7071
7071
  margin-right: 8px;
7072
7072
  flex-shrink: 0;
7073
7073
  }
7074
- .gct-basic-popper-wrap .popper-scrollbar .option-item .v-popper.option-label-tooltip[data-v-1d900502] {
7074
+ .gct-basic-popper-wrap .popper-scrollbar .option-item .v-popper.option-label-tooltip[data-v-24467fa4] {
7075
7075
  display: inline-flex;
7076
7076
  color: #212528;
7077
7077
  flex: 1;
@@ -7080,7 +7080,7 @@ textarea[data-v-57fe54a3]::placeholder {
7080
7080
  white-space: nowrap;
7081
7081
  pointer-events: all;
7082
7082
  }
7083
- .gct-basic-popper-wrap .popper-scrollbar .option-item .option-label[data-v-1d900502] {
7083
+ .gct-basic-popper-wrap .popper-scrollbar .option-item .option-label[data-v-24467fa4] {
7084
7084
  display: inline-block;
7085
7085
  width: 100%;
7086
7086
  line-height: 24px;
@@ -7090,7 +7090,7 @@ textarea[data-v-57fe54a3]::placeholder {
7090
7090
  word-wrap: normal;
7091
7091
  cursor: default;
7092
7092
  }
7093
- .gct-basic-popper-wrap .popper-scrollbar .empty[data-v-1d900502] {
7093
+ .gct-basic-popper-wrap .popper-scrollbar .empty[data-v-24467fa4] {
7094
7094
  width: 100%;
7095
7095
  height: 90px;
7096
7096
  display: flex;
@@ -7099,13 +7099,13 @@ textarea[data-v-57fe54a3]::placeholder {
7099
7099
  color: #c3c3c3;
7100
7100
  font-size: 13px;
7101
7101
  }
7102
- .gct-basic-select[data-v-1d900502] {
7102
+ .gct-basic-select[data-v-24467fa4] {
7103
7103
  display: inline-block;
7104
7104
  vertical-align: middle;
7105
7105
  line-height: 1;
7106
7106
  width: 100%;
7107
7107
  }
7108
- .gct-basic-select .gct-basic-select-container[data-v-1d900502] {
7108
+ .gct-basic-select .gct-basic-select-container[data-v-24467fa4] {
7109
7109
  position: relative;
7110
7110
  display: flex;
7111
7111
  align-items: center;
@@ -7121,17 +7121,37 @@ textarea[data-v-57fe54a3]::placeholder {
7121
7121
  border: 1px solid #d9d9d9;
7122
7122
  transition: all 0.3s ease;
7123
7123
  }
7124
- .gct-basic-select .gct-basic-select-container[data-v-1d900502]:not(.multiple) {
7124
+ .gct-basic-select .gct-basic-select-container[data-v-24467fa4]:not(.multiple) {
7125
7125
  white-space: nowrap;
7126
7126
  }
7127
- .gct-basic-select .gct-basic-select-container.multiple[data-v-1d900502] {
7127
+ .gct-basic-select .gct-basic-select-container.multiple[data-v-24467fa4] {
7128
7128
  flex-wrap: wrap;
7129
7129
  align-content: flex-start;
7130
7130
  padding-top: 3px;
7131
7131
  padding-bottom: 3px;
7132
7132
  gap: 3px;
7133
7133
  }
7134
- .gct-basic-select .gct-basic-select-container .select-selection-item[data-v-1d900502] {
7134
+ .gct-basic-select .gct-basic-select-container.disabled[data-v-24467fa4] {
7135
+ cursor: not-allowed;
7136
+ background: #f5f5f5;
7137
+ border-color: #d9d9d9;
7138
+ color: rgba(0, 0, 0, 0.25);
7139
+ }
7140
+ .gct-basic-select .gct-basic-select-container.disabled[data-v-24467fa4]:hover {
7141
+ border-color: #d9d9d9;
7142
+ }
7143
+ .gct-basic-select .gct-basic-select-container.disabled .select-selection-item[data-v-24467fa4],
7144
+ .gct-basic-select .gct-basic-select-container.disabled .placeholder[data-v-24467fa4],
7145
+ .gct-basic-select .gct-basic-select-container.disabled .selection-tag-content[data-v-24467fa4] {
7146
+ color: rgba(0, 0, 0, 0.25);
7147
+ }
7148
+ .gct-basic-select .gct-basic-select-container.disabled .change-icon[data-v-24467fa4],
7149
+ .gct-basic-select .gct-basic-select-container.disabled .close-all-icon[data-v-24467fa4],
7150
+ .gct-basic-select .gct-basic-select-container.disabled .selection-tag-remove[data-v-24467fa4] {
7151
+ cursor: not-allowed;
7152
+ opacity: 0.5;
7153
+ }
7154
+ .gct-basic-select .gct-basic-select-container .select-selection-item[data-v-24467fa4] {
7135
7155
  font-size: 13px;
7136
7156
  max-width: 100%;
7137
7157
  line-height: 22px;
@@ -7141,7 +7161,7 @@ textarea[data-v-57fe54a3]::placeholder {
7141
7161
  word-wrap: normal;
7142
7162
  color: #0d0d0d;
7143
7163
  }
7144
- .gct-basic-select .gct-basic-select-container .select-selection-tag[data-v-1d900502] {
7164
+ .gct-basic-select .gct-basic-select-container .select-selection-tag[data-v-24467fa4] {
7145
7165
  position: relative;
7146
7166
  display: flex;
7147
7167
  flex: none;
@@ -7160,13 +7180,13 @@ textarea[data-v-57fe54a3]::placeholder {
7160
7180
  padding-inline-start: 4px;
7161
7181
  padding-inline-end: 4px;
7162
7182
  }
7163
- .gct-basic-select .gct-basic-select-container .select-selection-tag .selection-tag-content[data-v-1d900502] {
7183
+ .gct-basic-select .gct-basic-select-container .select-selection-tag .selection-tag-content[data-v-24467fa4] {
7164
7184
  display: inline-block;
7165
7185
  overflow: hidden;
7166
7186
  white-space: pre;
7167
7187
  text-overflow: ellipsis;
7168
7188
  }
7169
- .gct-basic-select .gct-basic-select-container .select-selection-tag .selection-tag-remove[data-v-1d900502] {
7189
+ .gct-basic-select .gct-basic-select-container .select-selection-tag .selection-tag-remove[data-v-24467fa4] {
7170
7190
  display: inline-block;
7171
7191
  align-items: center;
7172
7192
  font-style: normal;
@@ -7181,7 +7201,7 @@ textarea[data-v-57fe54a3]::placeholder {
7181
7201
  margin-inline-start: 4px;
7182
7202
  margin-top: -1px;
7183
7203
  }
7184
- .gct-basic-select .gct-basic-select-container .placeholder[data-v-1d900502] {
7204
+ .gct-basic-select .gct-basic-select-container .placeholder[data-v-24467fa4] {
7185
7205
  font-size: 13px;
7186
7206
  max-width: 100%;
7187
7207
  line-height: 22px;
@@ -7191,23 +7211,23 @@ textarea[data-v-57fe54a3]::placeholder {
7191
7211
  word-wrap: normal;
7192
7212
  color: rgba(0, 0, 0, 0.45);
7193
7213
  }
7194
- .gct-basic-select .gct-basic-select-container .change-icon[data-v-1d900502] {
7214
+ .gct-basic-select .gct-basic-select-container .change-icon[data-v-24467fa4] {
7195
7215
  position: absolute;
7196
7216
  right: 4px;
7197
7217
  transition: all 0.3s ease;
7198
7218
  }
7199
- .gct-basic-select .gct-basic-select-container .close-all-icon[data-v-1d900502] {
7219
+ .gct-basic-select .gct-basic-select-container .close-all-icon[data-v-24467fa4] {
7200
7220
  position: absolute;
7201
7221
  right: 4px;
7202
7222
  transition: all 0.3s ease;
7203
7223
  }
7204
- .gct-basic-select .gct-basic-select-container .close-all-icon[data-v-1d900502]:hover {
7224
+ .gct-basic-select .gct-basic-select-container .close-all-icon[data-v-24467fa4]:hover {
7205
7225
  color: rgba(0, 0, 0, 0.45) !important;
7206
7226
  }
7207
- .gct-basic-select .gct-basic-select-container[data-v-1d900502]:hover {
7227
+ .gct-basic-select .gct-basic-select-container[data-v-24467fa4]:hover {
7208
7228
  border-color: #026ac8;
7209
7229
  }
7210
- .gct-basic-select .gct-basic-select-container.active .change-icon[data-v-1d900502] {
7230
+ .gct-basic-select .gct-basic-select-container.active .change-icon[data-v-24467fa4] {
7211
7231
  transform: rotate(-180deg);
7212
7232
  }
7213
7233
 
@@ -9131,7 +9151,7 @@ ul li .widget-icon[data-v-393cb2aa] {
9131
9151
  width: fit-content;
9132
9152
  pointer-events: none;
9133
9153
  }
9134
- .render-container[data-v-85f53514] {
9154
+ .render-container[data-v-68d32062] {
9135
9155
  overflow-y: auto;
9136
9156
  overflow-x: auto;
9137
9157
  white-space: normal;
@@ -9140,40 +9160,40 @@ ul li .widget-icon[data-v-393cb2aa] {
9140
9160
  position: relative;
9141
9161
  background-color: #f0f0f0;
9142
9162
  }
9143
- .doc-design-layout[data-v-744401de] {
9163
+ .doc-design-layout[data-v-5f6e6e6a] {
9144
9164
  display: flex;
9145
9165
  flex-direction: column;
9146
9166
  width: 100%;
9147
9167
  height: 100%;
9148
9168
  }
9149
- .doc-design-layout.preview[data-v-744401de] {
9169
+ .doc-design-layout.preview[data-v-5f6e6e6a] {
9150
9170
  pointer-events: none;
9151
9171
  }
9152
- .doc-design-layout .design-body[data-v-744401de] {
9172
+ .doc-design-layout .design-body[data-v-5f6e6e6a] {
9153
9173
  flex: 1;
9154
9174
  display: flex;
9155
9175
  min-height: 0;
9156
9176
  }
9157
- .doc-design-layout .design-body .design-sidebar[data-v-744401de] {
9177
+ .doc-design-layout .design-body .design-sidebar[data-v-5f6e6e6a] {
9158
9178
  position: relative;
9159
9179
  overflow: hidden;
9160
9180
  background: #fff;
9161
9181
  flex-shrink: 0;
9162
9182
  }
9163
- .doc-design-layout .design-body .design-sidebar.left[data-v-744401de] {
9183
+ .doc-design-layout .design-body .design-sidebar.left[data-v-5f6e6e6a] {
9164
9184
  border-right: 1px solid #e0e0e0;
9165
9185
  }
9166
- .doc-design-layout .design-body .design-sidebar.right[data-v-744401de] {
9186
+ .doc-design-layout .design-body .design-sidebar.right[data-v-5f6e6e6a] {
9167
9187
  border-left: 1px solid #e0e0e0;
9168
9188
  }
9169
- .doc-design-layout .design-body .design-sidebar .right-container[data-v-744401de] {
9189
+ .doc-design-layout .design-body .design-sidebar .right-container[data-v-5f6e6e6a] {
9170
9190
  position: relative;
9171
9191
  display: flex;
9172
9192
  width: 100%;
9173
9193
  height: 100%;
9174
9194
  overflow: hidden;
9175
9195
  }
9176
- .doc-design-layout .design-body .design-sidebar .right-container .divider[data-v-744401de] {
9196
+ .doc-design-layout .design-body .design-sidebar .right-container .divider[data-v-5f6e6e6a] {
9177
9197
  position: absolute;
9178
9198
  left: 0;
9179
9199
  top: 0;
@@ -9184,13 +9204,13 @@ ul li .widget-icon[data-v-393cb2aa] {
9184
9204
  left: 46px;
9185
9205
  transform: translateX(-50%);
9186
9206
  }
9187
- .doc-design-layout .design-body .design-main[data-v-744401de] {
9207
+ .doc-design-layout .design-body .design-main[data-v-5f6e6e6a] {
9188
9208
  position: relative;
9189
9209
  flex: 1;
9190
9210
  min-height: 0;
9191
9211
  overflow: hidden;
9192
9212
  }
9193
- .doc-design-layout .design-body .design-main .empty-container[data-v-744401de] {
9213
+ .doc-design-layout .design-body .design-main .empty-container[data-v-5f6e6e6a] {
9194
9214
  position: absolute;
9195
9215
  top: 0;
9196
9216
  left: 50%;
@@ -9204,7 +9224,7 @@ ul li .widget-icon[data-v-393cb2aa] {
9204
9224
  pointer-events: all;
9205
9225
  transform: translateX(-50%);
9206
9226
  }
9207
- .doc-design-layout .design-footer[data-v-744401de] {
9227
+ .doc-design-layout .design-footer[data-v-5f6e6e6a] {
9208
9228
  flex-shrink: 0;
9209
9229
  display: flex;
9210
9230
  align-items: center;
@@ -9500,13 +9520,13 @@ svg.portrait-icon[data-v-8bdb451e] {
9500
9520
  height: 36px;
9501
9521
  color: #bebdc7;
9502
9522
  }
9503
- .panel-paper[data-v-3cf8e3a5] {
9523
+ .panel-paper[data-v-aef33bab] {
9504
9524
  position: relative;
9505
9525
  }
9506
- .panel-paper .container[data-v-3cf8e3a5] {
9526
+ .panel-paper .container[data-v-aef33bab] {
9507
9527
  padding: 16px;
9508
9528
  }
9509
- .panel-paper .content[data-v-3cf8e3a5] {
9529
+ .panel-paper .content[data-v-aef33bab] {
9510
9530
  width: 100%;
9511
9531
  display: flex;
9512
9532
  line-height: 22px;
@@ -10126,11 +10146,11 @@ svg.portrait-icon[data-v-8bdb451e] {
10126
10146
  .add-builtin-field-modal-container .field-table-wrap {
10127
10147
  overflow: hidden;
10128
10148
  }
10129
- .data-source-field-map-wrapper[data-v-14ad8aad] {
10149
+ .data-source-field-map-wrapper[data-v-fddd78f7] {
10130
10150
  position: relative;
10131
10151
  padding: 4px 0 4px 44px;
10132
10152
  }
10133
- .data-source-field-map-wrapper[data-v-14ad8aad]::before {
10153
+ .data-source-field-map-wrapper[data-v-fddd78f7]::before {
10134
10154
  content: '';
10135
10155
  position: absolute;
10136
10156
  top: 50%;
@@ -10139,7 +10159,7 @@ svg.portrait-icon[data-v-8bdb451e] {
10139
10159
  height: 1px;
10140
10160
  border-top: 1px solid #e0e0e0;
10141
10161
  }
10142
- .data-source-field-map-wrapper[data-v-14ad8aad]::after {
10162
+ .data-source-field-map-wrapper[data-v-fddd78f7]::after {
10143
10163
  content: '';
10144
10164
  position: absolute;
10145
10165
  top: 0;
@@ -10147,20 +10167,20 @@ svg.portrait-icon[data-v-8bdb451e] {
10147
10167
  height: 100%;
10148
10168
  border-left: 1px solid #e0e0e0;
10149
10169
  }
10150
- .data-source-field-map-wrapper[data-v-14ad8aad]:last-of-type::after {
10170
+ .data-source-field-map-wrapper[data-v-fddd78f7]:last-of-type::after {
10151
10171
  height: 50%;
10152
10172
  }
10153
- .data-source-field-map-wrapper[data-v-14ad8aad] .gct-basic-select-container {
10173
+ .data-source-field-map-wrapper[data-v-fddd78f7] .gct-basic-select-container {
10154
10174
  border: none;
10155
10175
  }
10156
- .data-source-field-map-wrapper .line[data-v-14ad8aad] {
10176
+ .data-source-field-map-wrapper .line[data-v-fddd78f7] {
10157
10177
  position: absolute;
10158
10178
  top: 0;
10159
10179
  left: 0;
10160
10180
  width: 100%;
10161
10181
  height: 100%;
10162
10182
  }
10163
- .data-source-field-map-wrapper .line[data-v-14ad8aad]::before {
10183
+ .data-source-field-map-wrapper .line[data-v-fddd78f7]::before {
10164
10184
  content: '';
10165
10185
  position: absolute;
10166
10186
  top: -8px;
@@ -10168,7 +10188,7 @@ svg.portrait-icon[data-v-8bdb451e] {
10168
10188
  height: 8px;
10169
10189
  border-left: 1px solid #e0e0e0;
10170
10190
  }
10171
- .data-source-field-map-wrapper .line[data-v-14ad8aad]::after {
10191
+ .data-source-field-map-wrapper .line[data-v-fddd78f7]::after {
10172
10192
  content: '';
10173
10193
  position: absolute;
10174
10194
  top: 0;
@@ -10176,38 +10196,38 @@ svg.portrait-icon[data-v-8bdb451e] {
10176
10196
  height: 100%;
10177
10197
  border-left: 1px solid #e0e0e0;
10178
10198
  }
10179
- .data-source-field-map-wrapper .custom-select[data-v-14ad8aad] {
10199
+ .data-source-field-map-wrapper .custom-select[data-v-fddd78f7] {
10180
10200
  flex: 1;
10181
10201
  overflow: hidden;
10182
10202
  font-size: 12px;
10183
10203
  }
10184
- .data-source-field-map-wrapper .custom-input[data-v-14ad8aad] {
10204
+ .data-source-field-map-wrapper .custom-input[data-v-fddd78f7] {
10185
10205
  flex: 1;
10186
10206
  padding: 2px 2px 2px 8px;
10187
10207
  font-size: 12px;
10188
10208
  }
10189
- .data-source-field-map-wrapper .field-map-container[data-v-14ad8aad] {
10209
+ .data-source-field-map-wrapper .field-map-container[data-v-fddd78f7] {
10190
10210
  padding: 8px;
10191
10211
  border: 1px dashed #f0f0f0;
10192
10212
  border-radius: 4px;
10193
10213
  background: #fcfcfc;
10194
10214
  }
10195
- .data-source-field-map-wrapper .field-map-container .field-map-content[data-v-14ad8aad] {
10215
+ .data-source-field-map-wrapper .field-map-container .field-map-content[data-v-fddd78f7] {
10196
10216
  position: relative;
10197
10217
  overflow: hidden;
10198
10218
  border: 1px solid #e6e6e6;
10199
10219
  border-radius: 4px;
10200
10220
  background-color: #fff;
10201
10221
  }
10202
- .data-source-field-map-wrapper .field-map-container .field-map-content .field-map-item[data-v-14ad8aad] {
10222
+ .data-source-field-map-wrapper .field-map-container .field-map-content .field-map-item[data-v-fddd78f7] {
10203
10223
  display: flex;
10204
10224
  align-items: center;
10205
10225
  border-bottom: 1px solid #e6e6e6;
10206
10226
  }
10207
- .data-source-field-map-wrapper .field-map-container .field-map-content .field-map-item[data-v-14ad8aad]:last-child {
10227
+ .data-source-field-map-wrapper .field-map-container .field-map-content .field-map-item[data-v-fddd78f7]:last-child {
10208
10228
  border-bottom: none;
10209
10229
  }
10210
- .data-source-field-map-wrapper .field-map-container .field-map-content .field-map-item .blank[data-v-14ad8aad] {
10230
+ .data-source-field-map-wrapper .field-map-container .field-map-content .field-map-item .blank[data-v-fddd78f7] {
10211
10231
  display: flex;
10212
10232
  position: relative;
10213
10233
  flex-shrink: 0;
@@ -10219,30 +10239,30 @@ svg.portrait-icon[data-v-8bdb451e] {
10219
10239
  color: #8f8f8f;
10220
10240
  font-size: 12px;
10221
10241
  }
10222
- .data-source-field-map-wrapper .field-map-container .field-map-content .field-map-item .blank[data-v-14ad8aad]::before {
10242
+ .data-source-field-map-wrapper .field-map-container .field-map-content .field-map-item .blank[data-v-fddd78f7]::before {
10223
10243
  content: '';
10224
10244
  position: absolute;
10225
10245
  right: 0;
10226
10246
  height: 100%;
10227
10247
  border-left: 1px solid #e6e6e6;
10228
10248
  }
10229
- .data-source-field-map-wrapper .field-map-container .field-map-content .field-map-item .blank[data-v-14ad8aad]::after {
10249
+ .data-source-field-map-wrapper .field-map-container .field-map-content .field-map-item .blank[data-v-fddd78f7]::after {
10230
10250
  content: '';
10231
10251
  position: absolute;
10232
10252
  left: 0;
10233
10253
  height: 100%;
10234
10254
  border-left: 1px solid #e6e6e6;
10235
10255
  }
10236
- .data-source-field-map-wrapper .field-map-container .field-map-content .field-map-item .blank.last[data-v-14ad8aad]::before {
10256
+ .data-source-field-map-wrapper .field-map-container .field-map-content .field-map-item .blank.last[data-v-fddd78f7]::before {
10237
10257
  display: none;
10238
10258
  }
10239
- .data-source-field-map-wrapper .field-map-container .field-map-content .field-map-item .blank .iconfont[data-v-14ad8aad] {
10259
+ .data-source-field-map-wrapper .field-map-container .field-map-content .field-map-item .blank .iconfont[data-v-fddd78f7] {
10240
10260
  color: #797a7d;
10241
10261
  font-size: 14px;
10242
10262
  line-height: 1;
10243
10263
  cursor: pointer;
10244
10264
  }
10245
- .data-source-field-map-wrapper .field-map-container .field-map-content .field-map-item .blank .iconfont.icon-lianjie2[data-v-14ad8aad] {
10265
+ .data-source-field-map-wrapper .field-map-container .field-map-content .field-map-item .blank .iconfont.icon-lianjie2[data-v-fddd78f7] {
10246
10266
  margin-left: 2px;
10247
10267
  transform: rotate(-135deg);
10248
10268
  cursor: default;
@@ -10314,15 +10334,15 @@ svg.portrait-icon[data-v-8bdb451e] {
10314
10334
  cursor: pointer;
10315
10335
  color: #797a7d;
10316
10336
  }
10317
- .panel-data-init[data-v-6003ed85] {
10337
+ .panel-data-init[data-v-4f691915] {
10318
10338
  height: 100%;
10319
10339
  background-color: #fff;
10320
10340
  }
10321
- .panel-data-init .param-area[data-v-6003ed85] {
10341
+ .panel-data-init .param-area[data-v-4f691915] {
10322
10342
  position: relative;
10323
10343
  padding: 16px;
10324
10344
  }
10325
- .panel-data-init .param-area .param-item[data-v-6003ed85] {
10345
+ .panel-data-init .param-area .param-item[data-v-4f691915] {
10326
10346
  position: relative;
10327
10347
  margin-bottom: 8px;
10328
10348
  padding: 8px;
@@ -10330,17 +10350,17 @@ svg.portrait-icon[data-v-8bdb451e] {
10330
10350
  border-radius: 4px;
10331
10351
  background: #fcfcfc;
10332
10352
  }
10333
- .panel-data-init .param-area .param-item[data-v-6003ed85]:last-of-type {
10353
+ .panel-data-init .param-area .param-item[data-v-4f691915]:last-of-type {
10334
10354
  margin-bottom: 16px;
10335
10355
  }
10336
- .panel-data-init .data-source-area[data-v-6003ed85] {
10356
+ .panel-data-init .data-source-area[data-v-4f691915] {
10337
10357
  position: relative;
10338
10358
  padding: 16px;
10339
10359
  }
10340
- .panel-data-init .data-source-area[data-v-6003ed85] .data-source-item.is-last .data-source-field-map-wrapper.is-last .line {
10360
+ .panel-data-init .data-source-area[data-v-4f691915] .data-source-item.is-last .data-source-field-map-wrapper.is-last .line {
10341
10361
  display: none;
10342
10362
  }
10343
- .panel-data-init .data-source-area[data-v-6003ed85] .data-source-item.is-last .data-source-title.is-child.is-last .line::after {
10363
+ .panel-data-init .data-source-area[data-v-4f691915] .data-source-item.is-last .data-source-title.is-child.is-last .line::after {
10344
10364
  display: none;
10345
10365
  }
10346
10366
  .add-tmpl-btn[data-v-25c2d428] {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gct-paas/word",
3
- "version": "0.1.35",
3
+ "version": "0.1.37",
4
4
  "description": "GCT 在线 word",
5
5
  "keywords": [
6
6
  "vue",
@@ -34,8 +34,10 @@
34
34
  "scripts": {
35
35
  "build": "vite build",
36
36
  "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx --fix",
37
- "publish:beta": "pnpm build && npm publish --registry=https://registry.npmjs.org/ --access public --tag beta",
38
- "publish:prod": "pnpm build && npm publish --registry=https://registry.npmjs.org/ --access public",
37
+ "version:beta": "npm version prerelease --preid=beta --no-git-tag-version",
38
+ "version:release": "npm version patch --no-git-tag-version",
39
+ "publish:beta": "pnpm run version:beta && pnpm run build && npm publish --registry=https://registry.npmjs.org/ --access public --tag beta",
40
+ "publish:prod": "pnpm run version:release && pnpm run build && npm publish --registry=https://registry.npmjs.org/ --access public",
39
41
  "test": "vitest run"
40
42
  },
41
43
  "dependencies": {