weaver-e10-builder 1.2.3 → 1.2.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.
Files changed (210) hide show
  1. package/dist/commands/actionflow.d.ts.map +1 -1
  2. package/dist/commands/actionflow.js +12 -25
  3. package/dist/commands/actionflow.js.map +1 -1
  4. package/dist/commands/designer-css.d.ts +15 -0
  5. package/dist/commands/designer-css.d.ts.map +1 -0
  6. package/dist/commands/designer-css.js +205 -0
  7. package/dist/commands/designer-css.js.map +1 -0
  8. package/dist/commands/form-field-lang.d.ts.map +1 -1
  9. package/dist/commands/form-field-lang.js +4 -39
  10. package/dist/commands/form-field-lang.js.map +1 -1
  11. package/dist/commands/form-layout-init.d.ts.map +1 -1
  12. package/dist/commands/form-layout-init.js +15 -10
  13. package/dist/commands/form-layout-init.js.map +1 -1
  14. package/dist/commands/form-layout.js +24 -21
  15. package/dist/commands/form-layout.js.map +1 -1
  16. package/dist/commands/form-native.d.ts.map +1 -1
  17. package/dist/commands/form-native.js +181 -0
  18. package/dist/commands/form-native.js.map +1 -1
  19. package/dist/commands/form-validate.d.ts.map +1 -1
  20. package/dist/commands/form-validate.js +11 -3
  21. package/dist/commands/form-validate.js.map +1 -1
  22. package/dist/commands/form.d.ts.map +1 -1
  23. package/dist/commands/form.js +76 -19
  24. package/dist/commands/form.js.map +1 -1
  25. package/dist/commands/menu.d.ts.map +1 -1
  26. package/dist/commands/menu.js +170 -23
  27. package/dist/commands/menu.js.map +1 -1
  28. package/dist/commands/wf-form.d.ts +1 -0
  29. package/dist/commands/wf-form.d.ts.map +1 -1
  30. package/dist/commands/wf-form.js +44 -13
  31. package/dist/commands/wf-form.js.map +1 -1
  32. package/dist/commands/workflow-node-assign-flow.d.ts.map +1 -1
  33. package/dist/commands/workflow-node-assign-flow.js +1 -2
  34. package/dist/commands/workflow-node-assign-flow.js.map +1 -1
  35. package/dist/commands/workflow-node.d.ts.map +1 -1
  36. package/dist/commands/workflow-node.js +147 -2
  37. package/dist/commands/workflow-node.js.map +1 -1
  38. package/dist/commands/workflow-odoc.d.ts.map +1 -1
  39. package/dist/commands/workflow-odoc.js +56 -56
  40. package/dist/commands/workflow-odoc.js.map +1 -1
  41. package/dist/commands/workflow-setting.d.ts.map +1 -1
  42. package/dist/commands/workflow-setting.js +77 -1
  43. package/dist/commands/workflow-setting.js.map +1 -1
  44. package/dist/commands/workflow.d.ts.map +1 -1
  45. package/dist/commands/workflow.js +36 -80
  46. package/dist/commands/workflow.js.map +1 -1
  47. package/dist/core/client.d.ts +14 -0
  48. package/dist/core/client.d.ts.map +1 -1
  49. package/dist/core/client.js +28 -12
  50. package/dist/core/client.js.map +1 -1
  51. package/dist/index.js +2 -0
  52. package/dist/index.js.map +1 -1
  53. package/dist/services/actionflow/command_output.d.ts +7 -0
  54. package/dist/services/actionflow/command_output.d.ts.map +1 -1
  55. package/dist/services/actionflow/command_output.js +46 -0
  56. package/dist/services/actionflow/command_output.js.map +1 -1
  57. package/dist/services/actionflow/components/action_eb_add.d.ts.map +1 -1
  58. package/dist/services/actionflow/components/action_eb_add.js +14 -4
  59. package/dist/services/actionflow/components/action_eb_add.js.map +1 -1
  60. package/dist/services/actionflow/components/action_eb_add_compiler.d.ts.map +1 -1
  61. package/dist/services/actionflow/components/action_eb_add_compiler.js +29 -0
  62. package/dist/services/actionflow/components/action_eb_add_compiler.js.map +1 -1
  63. package/dist/services/actionflow/components/action_eb_update.d.ts.map +1 -1
  64. package/dist/services/actionflow/components/action_eb_update.js +23 -8
  65. package/dist/services/actionflow/components/action_eb_update.js.map +1 -1
  66. package/dist/services/actionflow/components/action_eb_update_compiler.d.ts.map +1 -1
  67. package/dist/services/actionflow/components/action_eb_update_compiler.js +239 -6
  68. package/dist/services/actionflow/components/action_eb_update_compiler.js.map +1 -1
  69. package/dist/services/actionflow/components/custom_set_form.d.ts +10 -0
  70. package/dist/services/actionflow/components/custom_set_form.d.ts.map +1 -0
  71. package/dist/services/actionflow/components/custom_set_form.js +65 -0
  72. package/dist/services/actionflow/components/custom_set_form.js.map +1 -0
  73. package/dist/services/actionflow/components/custom_trigger.d.ts +2 -2
  74. package/dist/services/actionflow/components/custom_trigger.d.ts.map +1 -1
  75. package/dist/services/actionflow/components/custom_trigger.js +7 -10
  76. package/dist/services/actionflow/components/custom_trigger.js.map +1 -1
  77. package/dist/services/actionflow/components/enquiry_form.js +1 -1
  78. package/dist/services/actionflow/components/enquiry_form.js.map +1 -1
  79. package/dist/services/actionflow/components/output.d.ts.map +1 -1
  80. package/dist/services/actionflow/components/output.js +6 -1
  81. package/dist/services/actionflow/components/output.js.map +1 -1
  82. package/dist/services/actionflow/context_preflight.d.ts.map +1 -1
  83. package/dist/services/actionflow/context_preflight.js +13 -6
  84. package/dist/services/actionflow/context_preflight.js.map +1 -1
  85. package/dist/services/actionflow/context_provider.d.ts.map +1 -1
  86. package/dist/services/actionflow/context_provider.js +3 -2
  87. package/dist/services/actionflow/context_provider.js.map +1 -1
  88. package/dist/services/actionflow/dynamic_resources.d.ts.map +1 -1
  89. package/dist/services/actionflow/dynamic_resources.js +1 -1
  90. package/dist/services/actionflow/dynamic_resources.js.map +1 -1
  91. package/dist/services/actionflow/ebuilder_source.d.ts +19 -0
  92. package/dist/services/actionflow/ebuilder_source.d.ts.map +1 -0
  93. package/dist/services/actionflow/ebuilder_source.js +78 -0
  94. package/dist/services/actionflow/ebuilder_source.js.map +1 -0
  95. package/dist/services/actionflow/form_source.d.ts +51 -10
  96. package/dist/services/actionflow/form_source.d.ts.map +1 -1
  97. package/dist/services/actionflow/form_source.js +173 -29
  98. package/dist/services/actionflow/form_source.js.map +1 -1
  99. package/dist/services/actionflow/formula_service.d.ts +4 -1
  100. package/dist/services/actionflow/formula_service.d.ts.map +1 -1
  101. package/dist/services/actionflow/formula_service.js +46 -22
  102. package/dist/services/actionflow/formula_service.js.map +1 -1
  103. package/dist/services/actionflow/preflight_service.d.ts +6 -0
  104. package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
  105. package/dist/services/actionflow/preflight_service.js +211 -3
  106. package/dist/services/actionflow/preflight_service.js.map +1 -1
  107. package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
  108. package/dist/services/actionflow/workflow_compiler.js +83 -15
  109. package/dist/services/actionflow/workflow_compiler.js.map +1 -1
  110. package/dist/services/designer-css.d.ts +89 -0
  111. package/dist/services/designer-css.d.ts.map +1 -0
  112. package/dist/services/designer-css.js +163 -0
  113. package/dist/services/designer-css.js.map +1 -0
  114. package/dist/services/dom-structure.d.ts +42 -0
  115. package/dist/services/dom-structure.d.ts.map +1 -0
  116. package/dist/services/dom-structure.js +251 -0
  117. package/dist/services/dom-structure.js.map +1 -0
  118. package/dist/services/form-field-patch.d.ts +22 -0
  119. package/dist/services/form-field-patch.d.ts.map +1 -1
  120. package/dist/services/form-field-patch.js +29 -0
  121. package/dist/services/form-field-patch.js.map +1 -1
  122. package/dist/services/form-i18n-label.d.ts +48 -0
  123. package/dist/services/form-i18n-label.d.ts.map +1 -0
  124. package/dist/services/form-i18n-label.js +91 -0
  125. package/dist/services/form-i18n-label.js.map +1 -0
  126. package/dist/services/form-style-template.d.ts +6 -2
  127. package/dist/services/form-style-template.d.ts.map +1 -1
  128. package/dist/services/form-style-template.js +8 -4
  129. package/dist/services/form-style-template.js.map +1 -1
  130. package/dist/services/menu-catalog.d.ts +84 -0
  131. package/dist/services/menu-catalog.d.ts.map +1 -0
  132. package/dist/services/menu-catalog.js +183 -0
  133. package/dist/services/menu-catalog.js.map +1 -0
  134. package/dist/services/workflow-add-step.d.ts +45 -0
  135. package/dist/services/workflow-add-step.d.ts.map +1 -0
  136. package/dist/services/workflow-add-step.js +122 -0
  137. package/dist/services/workflow-add-step.js.map +1 -0
  138. package/dist/services/workflow-assign-flow.d.ts +1 -6
  139. package/dist/services/workflow-assign-flow.d.ts.map +1 -1
  140. package/dist/services/workflow-assign-flow.js +3 -8
  141. package/dist/services/workflow-assign-flow.js.map +1 -1
  142. package/dist/services/workflow-drawback.d.ts +19 -0
  143. package/dist/services/workflow-drawback.d.ts.map +1 -0
  144. package/dist/services/workflow-drawback.js +59 -0
  145. package/dist/services/workflow-drawback.js.map +1 -0
  146. package/dist/services/workflow-links.d.ts +51 -0
  147. package/dist/services/workflow-links.d.ts.map +1 -0
  148. package/dist/services/workflow-links.js +162 -0
  149. package/dist/services/workflow-links.js.map +1 -0
  150. package/dist/services/workflow-node-layout.d.ts +45 -4
  151. package/dist/services/workflow-node-layout.d.ts.map +1 -1
  152. package/dist/services/workflow-node-layout.js +142 -41
  153. package/dist/services/workflow-node-layout.js.map +1 -1
  154. package/dist/services/workflow-odoc-setting.d.ts +43 -0
  155. package/dist/services/workflow-odoc-setting.d.ts.map +1 -0
  156. package/dist/services/workflow-odoc-setting.js +100 -0
  157. package/dist/services/workflow-odoc-setting.js.map +1 -0
  158. package/dist/services/workflow-tab-config.d.ts +54 -0
  159. package/dist/services/workflow-tab-config.d.ts.map +1 -0
  160. package/dist/services/workflow-tab-config.js +137 -0
  161. package/dist/services/workflow-tab-config.js.map +1 -0
  162. package/dist/types.d.ts +5 -1
  163. package/dist/types.d.ts.map +1 -1
  164. package/package.json +48 -48
  165. package/skill-docs/SKILL.md +7 -7
  166. package/skill-docs/_catalog.md +2 -0
  167. package/skill-docs/actionflows/SKILL.md +2 -0
  168. package/skill-docs/actionflows/references/components/ebuilder/ActionEbAdd.md +38 -1
  169. package/skill-docs/actionflows/references/components/ebuilder/ActionEbUpdate.md +42 -0
  170. package/skill-docs/actionflows/references/components/ebuilder/EventButton.md +1 -1
  171. package/skill-docs/actionflows/references/components/logic/Output.md +2 -0
  172. package/skill-docs/actionflows/references/components/trigger/CustomTrigger.md +16 -11
  173. package/skill-docs/assets/dom-structure/Bar.json +341 -0
  174. package/skill-docs/assets/dom-structure/BarStack.json +341 -0
  175. package/skill-docs/assets/dom-structure/Bubble.json +323 -0
  176. package/skill-docs/assets/dom-structure/Calendar.json +515 -0
  177. package/skill-docs/assets/dom-structure/Circular.json +337 -0
  178. package/skill-docs/assets/dom-structure/CollapsePanel.json +289 -0
  179. package/skill-docs/assets/dom-structure/Comment.json +617 -0
  180. package/skill-docs/assets/dom-structure/CountDown.json +755 -0
  181. package/skill-docs/assets/dom-structure/DigitalPanel.json +191 -0
  182. package/skill-docs/assets/dom-structure/EbButton.json +387 -0
  183. package/skill-docs/assets/dom-structure/FastCreate.json +242 -0
  184. package/skill-docs/assets/dom-structure/Gauge.json +282 -0
  185. package/skill-docs/assets/dom-structure/HBar.json +336 -0
  186. package/skill-docs/assets/dom-structure/HBarStack.json +337 -0
  187. package/skill-docs/assets/dom-structure/Line.json +341 -0
  188. package/skill-docs/assets/dom-structure/NList.json +712 -0
  189. package/skill-docs/assets/dom-structure/NavBar.json +274 -0
  190. package/skill-docs/assets/dom-structure/NavPanel.json +390 -0
  191. package/skill-docs/assets/dom-structure/NewTab.json +606 -0
  192. package/skill-docs/assets/dom-structure/Nightingale.json +336 -0
  193. package/skill-docs/assets/dom-structure/PageHeader.json +205 -0
  194. package/skill-docs/assets/dom-structure/Picture.json +209 -0
  195. package/skill-docs/assets/dom-structure/Pie.json +338 -0
  196. package/skill-docs/assets/dom-structure/ProgressChart.json +299 -0
  197. package/skill-docs/assets/dom-structure/SearchGlobal.json +628 -0
  198. package/skill-docs/assets/dom-structure/Slide.json +489 -0
  199. package/skill-docs/assets/dom-structure/Treemap.json +324 -0
  200. package/skill-docs/references/common/guide-plan-template.md +1 -1
  201. package/skill-docs/references/common/ref-cli-commands.md +21 -13
  202. package/skill-docs/references/ebuilder-designer/guide-designer-components.md +12 -1
  203. package/skill-docs/references/ebuilder-designer/guide-designer-css.md +127 -0
  204. package/skill-docs/references/ebuilder-designer/guide-designer.md +6 -5
  205. package/skill-docs/references/form/guide-create-form.md +1 -1
  206. package/skill-docs/references/form/guide-form-layout-planning.md +1 -1
  207. package/skill-docs/references/form/guide-form-linkage.md +28 -2
  208. package/skill-docs/references/menu/system-menus.md +12 -0
  209. package/skill-docs/references/workflow/guide-workflow-odoc.md +22 -2
  210. package/skill-docs/references/workflow/guide-workflow.md +18 -3
@@ -7,7 +7,7 @@ import { FormSubDetailService, resolveDetailTable } from '../services/form-sub-d
7
7
  import { RICH_TYPE_MAP, getRichType, richIdUnits, BROWSER_KINDS } from '../services/rich-types.js';
8
8
  import { dropFieldComponents, prepareLayoutForSave } from '../services/form-field-drop.js';
9
9
  import { describeEditBaseFailure, resolveEditBase as resolveEditBasePure } from '../services/form-edit-base.js';
10
- import { applyFieldPatches } from '../services/form-field-patch.js';
10
+ import { applyFieldPatches, platformFieldShape } from '../services/form-field-patch.js';
11
11
  import { ensureDisplayColumns } from '../services/form-ebuilder-columns.js';
12
12
  import { buildFormulaParameters, defaultReturnType } from '../services/formula-detail.js';
13
13
  import { registerOptionTemplateCommand } from './form-option-template.js';
@@ -2645,6 +2645,7 @@ export function registerFormCommands(program) {
2645
2645
  .option('--title <title>', '修改字段标题')
2646
2646
  .option('--type <type>', '修改字段类型(如 Text/Number/Date/Select/Department;取值同 form add-field 的 <fieldType>)。'
2647
2647
  + '⚠ 字段已有数据时平台会拒绝')
2648
+ .option('--format <fmt>', '日期精度格式,配合 --type Date/DateTime(缺省 Date=yyyy-MM-dd、DateTime=yyyy-MM-dd HH:mm)')
2648
2649
  .option('--required', '设为必填')
2649
2650
  .option('--no-required', '取消必填')
2650
2651
  .option('--sform-id <id>', 'EBuilder 关联的目标表单 objId(更新关联)')
@@ -2725,16 +2726,10 @@ export function registerFormCommands(program) {
2725
2726
  console.error(`读到的字段定义里没有 type(fieldId=${fieldId}),拒绝写回 —— 全量覆盖会把它改成默认类型。`);
2726
2727
  process.exit(1);
2727
2728
  }
2728
- // 兜底补 componentKey:saveFormFieldNew 要求(getComponentKey() 为 null 会 NPE)。
2729
- // getFields 兜底路径建不出 componentKey,这里按类型映射补上。
2729
+ // 兜底补 componentKey:saveFormFieldNew 要求非空(getComponentKey() 为 null 直接 500)。
2730
+ // 用平台归一的 componentKey(`platformFieldShape`),不是 CLI 类型名 —— 见下方改类型分支的说明。
2730
2731
  if (!jsonObj.componentKey) {
2731
- const CK = {
2732
- Date: 'DateComponent', DateTime: 'DateComponent', Text: 'Text', Textarea: 'TextArea', Number: 'NumberComponent',
2733
- Money: 'Money', Select: 'Select', CheckBox: 'CheckBox', RadioBox: 'RadioBox',
2734
- Employee: 'Employee', Department: 'Department', EBuilder: 'Ebuilder',
2735
- Phone: 'Phone', Email: 'Email', Mobile: 'Mobile', Location: 'Location', Switch: 'Switch', IDCard: 'IDCard',
2736
- };
2737
- jsonObj.componentKey = CK[jsonObj.type] || jsonObj.type;
2732
+ jsonObj.componentKey = platformFieldShape(String(jsonObj.type)).componentKey;
2738
2733
  }
2739
2734
  // Apply title change
2740
2735
  if (editOpts.title) {
@@ -2745,6 +2740,7 @@ export function registerFormCommands(program) {
2745
2740
  // `type` 取值与 add-field 一致(CLI 规范名;富组件换成 platformType + componentKey),
2746
2741
  // 回读时对应显示为 `form read` 的 fieldKey(如 Number→NumberComponent)。
2747
2742
  // ⚠ 字段**已存在数据**时平台会拒绝改结构(报「此列已存在数据不可修改数据库字段名称」)。
2743
+ let typeChangeApplied = false;
2748
2744
  if (editOpts.type) {
2749
2745
  const targetType = canonComponentKey(editOpts.type);
2750
2746
  assertFieldType(targetType, 'edit-field ');
@@ -2753,14 +2749,72 @@ export function registerFormCommands(program) {
2753
2749
  console.error(`改成 ${targetType} 需要同时指定 --sform-id <目标表 objId>(Flow 用流程绑定的表单 objId)`);
2754
2750
  process.exit(1);
2755
2751
  }
2756
- if (targetType !== String(jsonObj.type)) {
2757
- const richTarget = getRichType(targetType);
2758
- jsonObj.type = richTarget ? richTarget.platformType : targetType;
2759
- if (richTarget)
2752
+ const richTarget = getRichType(targetType);
2753
+ const shape = platformFieldShape(targetType);
2754
+ const desiredFormat = editOpts.format || shape.format;
2755
+ // 变更判定要按**平台形状**比,不能只比类型名:
2756
+ // 「日期」与「日期时间」在存储层同为 `type=Date` + `componentKey=DateComponent`,
2757
+ // 只有 `format` 不同(yyyy-MM-dd vs yyyy-MM-dd HH:mm)。只比 type 会把
2758
+ // 「DateTime → Date」判成没变化而静默跳过,精度留在原地 —— 命令报成功、字段没动。
2759
+ const typeChanged = richTarget
2760
+ ? targetType !== String(jsonObj.componentKey ?? '')
2761
+ : shape.type !== String(jsonObj.type)
2762
+ || shape.componentKey !== String(jsonObj.componentKey ?? '')
2763
+ || (shape.format !== undefined && String(desiredFormat) !== String(jsonObj.format ?? ''));
2764
+ if (editOpts.format && shape.format === undefined) {
2765
+ console.error(`--format 只对 Date / DateTime 有意义,${targetType} 没有这个属性,已忽略。`);
2766
+ }
2767
+ typeChangeApplied = typeChanged;
2768
+ if (typeChanged) {
2769
+ if (richTarget) {
2770
+ jsonObj.type = richTarget.platformType;
2760
2771
  jsonObj.componentKey = richTarget.platformComponentKey;
2761
- // 旧类型残留的组件键会在回读时盖过新类型,清掉让平台按新 type 推导
2762
- else
2763
- delete jsonObj.componentKey;
2772
+ }
2773
+ else {
2774
+ // 非富组件:写**平台归一形状**,不是 CLI 类型名。
2775
+ // 曾经的 bug:这里写的是 `delete jsonObj.componentKey`(想让平台按新 type 推导),
2776
+ // 而上面那段兜底补 componentKey 在**这之前**就执行完了 → 改完没人再补 →
2777
+ // 全量覆盖时缺键 → `getComponentKey() is null` 500「程序异常」,字段改不动。
2778
+ // 而平台的 componentKey 也不是类型名:送 `componentKey=Date` 配 `type=DateTime`
2779
+ // 照样 500,必须是 `DateComponent`。
2780
+ jsonObj.type = shape.type;
2781
+ jsonObj.componentKey = shape.componentKey;
2782
+ // 日期/日期时间/时间:精度全靠 format,平台**不会**补默认值
2783
+ // (只送 type+componentKey 会存成 format 为空)。所以一起写。
2784
+ if (shape.format !== undefined)
2785
+ jsonObj.format = desiredFormat;
2786
+ // 切到用不到 format 的类型时清掉旧值,免得留个说不清来路的精度配置
2787
+ else if (jsonObj.format !== undefined)
2788
+ delete jsonObj.format;
2789
+ // 日期区间还要 `start`/`end` 两个 DateComponent 子对象(各带一个新 fieldId)。
2790
+ // 少了平台直接 500:`DateIntervalFieldDto.getEnd() is null`。
2791
+ // 子 id 对齐 add-field 的建法现取。
2792
+ if (targetType === 'DateRange' || targetType === 'DateInterval') {
2793
+ const idsRes = await client.post(`${baseUrl}/api/form/local/generatorIds?size=2&apid=${appId}`, {});
2794
+ const ids = (idsRes?.data?.generatorIds || []).map(String);
2795
+ if (ids.length < 2) {
2796
+ console.error('日期区间需要两个子字段 ID,服务端未返回,已中止(字段未改动)。');
2797
+ process.exit(1);
2798
+ }
2799
+ const fmt = desiredFormat || 'yyyy-MM-dd';
2800
+ const rangeTitle = String(jsonObj.title || '');
2801
+ const start = {
2802
+ componentKey: 'DateComponent', content: '', describe: '', earlyDate: 'false',
2803
+ format: fmt, isDefault: 'false', lateDate: 'false',
2804
+ placeholder: placeholderFromFormat(fmt),
2805
+ position: '', relateMultiple: 'false', required: 'false', size: 'medium',
2806
+ title: `${rangeTitle}(开始时间)`, fieldId: ids[0],
2807
+ min: { type: 'currentHour' }, max: { type: 'currentHour' },
2808
+ };
2809
+ Object.assign(jsonObj, {
2810
+ isDefault: false,
2811
+ start,
2812
+ end: { ...start, title: `${rangeTitle}(结束时间)`, fieldId: ids[1] },
2813
+ hasDisplayFormat: true,
2814
+ rangeInterval: { limitType: 'max', timeUnit: 'day' },
2815
+ });
2816
+ }
2817
+ }
2764
2818
  // 富组件还要补**附加配置**,否则改出来的字段是残缺的:
2765
2819
  // add-field 走的是同一张表的 build(),两边不一致会导致「新建的对、改类型的错」
2766
2820
  // (实测 Time:改出来缺 minuteStep/timePanelStyle/defaultExtend,earlyDate/lateDate
@@ -2956,8 +3010,11 @@ export function registerFormCommands(program) {
2956
3010
  const changes = [];
2957
3011
  if (editOpts.title)
2958
3012
  changes.push(`title="${editOpts.title}"`);
2959
- if (editOpts.type)
2960
- changes.push(`type=${editOpts.type}`);
3013
+ // 只有**真的换了形状**才回显类型。原样重跑同一类型(尤其 Date/DateTime 在存储层同为
3014
+ // type=Date)时没做任何改动,回显「type=…」会让人以为写过了。
3015
+ if (editOpts.type) {
3016
+ changes.push(typeChangeApplied ? `type=${editOpts.type}` : `type=${editOpts.type}(未变化)`);
3017
+ }
2961
3018
  if (editOpts.required)
2962
3019
  changes.push('required');
2963
3020
  if (editOpts.noRequired)