weaver-e10-builder 1.5.16 → 1.6.4
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/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +4 -2
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +109 -51
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/form-attachment-setting.d.ts +3 -0
- package/dist/commands/form-attachment-setting.d.ts.map +1 -0
- package/dist/commands/form-attachment-setting.js +422 -0
- package/dist/commands/form-attachment-setting.js.map +1 -0
- package/dist/commands/form-data.d.ts.map +1 -1
- package/dist/commands/form-data.js +49 -1
- package/dist/commands/form-data.js.map +1 -1
- package/dist/commands/form-ebuilder-scope.d.ts +21 -0
- package/dist/commands/form-ebuilder-scope.d.ts.map +1 -1
- package/dist/commands/form-ebuilder-scope.js +41 -8
- package/dist/commands/form-ebuilder-scope.js.map +1 -1
- package/dist/commands/form-field-linkage.d.ts +6 -1
- package/dist/commands/form-field-linkage.d.ts.map +1 -1
- package/dist/commands/form-field-linkage.js +138 -31
- package/dist/commands/form-field-linkage.js.map +1 -1
- package/dist/commands/form-layout-code-reviewed.d.ts +3 -0
- package/dist/commands/form-layout-code-reviewed.d.ts.map +1 -0
- package/dist/commands/form-layout-code-reviewed.js +61 -0
- package/dist/commands/form-layout-code-reviewed.js.map +1 -0
- package/dist/commands/form-layout-describe.d.ts +3 -0
- package/dist/commands/form-layout-describe.d.ts.map +1 -0
- package/dist/commands/form-layout-describe.js +58 -0
- package/dist/commands/form-layout-describe.js.map +1 -0
- package/dist/commands/form-layout-diff.d.ts +3 -0
- package/dist/commands/form-layout-diff.d.ts.map +1 -0
- package/dist/commands/form-layout-diff.js +48 -0
- package/dist/commands/form-layout-diff.js.map +1 -0
- package/dist/commands/form-layout-document.d.ts +3 -0
- package/dist/commands/form-layout-document.d.ts.map +1 -0
- package/dist/commands/form-layout-document.js +81 -0
- package/dist/commands/form-layout-document.js.map +1 -0
- package/dist/commands/form-layout-edit.d.ts +3 -0
- package/dist/commands/form-layout-edit.d.ts.map +1 -0
- package/dist/commands/form-layout-edit.js +51 -0
- package/dist/commands/form-layout-edit.js.map +1 -0
- package/dist/commands/form-layout-init-reviewed.d.ts +3 -0
- package/dist/commands/form-layout-init-reviewed.d.ts.map +1 -0
- package/dist/commands/form-layout-init-reviewed.js +78 -0
- package/dist/commands/form-layout-init-reviewed.js.map +1 -0
- package/dist/commands/form-layout-restore.d.ts.map +1 -1
- package/dist/commands/form-layout-restore.js +23 -0
- package/dist/commands/form-layout-restore.js.map +1 -1
- package/dist/commands/form-layout-template-catalog.d.ts +3 -0
- package/dist/commands/form-layout-template-catalog.d.ts.map +1 -0
- package/dist/commands/form-layout-template-catalog.js +45 -0
- package/dist/commands/form-layout-template-catalog.js.map +1 -0
- package/dist/commands/form.d.ts.map +1 -1
- package/dist/commands/form.js +80 -5
- package/dist/commands/form.js.map +1 -1
- package/dist/commands/project.d.ts.map +1 -1
- package/dist/commands/project.js +39 -6
- package/dist/commands/project.js.map +1 -1
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_add.d.ts.map +1 -1
- package/dist/services/actionflow/components/action_eb_add.js +12 -5
- package/dist/services/actionflow/components/action_eb_add.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_add_compiler.d.ts.map +1 -1
- package/dist/services/actionflow/components/action_eb_add_compiler.js +5 -0
- package/dist/services/actionflow/components/action_eb_add_compiler.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_delete.d.ts +6 -1
- package/dist/services/actionflow/components/action_eb_delete.d.ts.map +1 -1
- package/dist/services/actionflow/components/action_eb_delete.js +23 -5
- package/dist/services/actionflow/components/action_eb_delete.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_delete_compiler.d.ts.map +1 -1
- package/dist/services/actionflow/components/action_eb_delete_compiler.js +22 -0
- package/dist/services/actionflow/components/action_eb_delete_compiler.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_update.d.ts.map +1 -1
- package/dist/services/actionflow/components/action_eb_update.js +13 -4
- package/dist/services/actionflow/components/action_eb_update.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_update_compiler.d.ts.map +1 -1
- package/dist/services/actionflow/components/action_eb_update_compiler.js +9 -2
- package/dist/services/actionflow/components/action_eb_update_compiler.js.map +1 -1
- package/dist/services/actionflow/components/date_trigger.js +2 -2
- package/dist/services/actionflow/components/date_trigger.js.map +1 -1
- package/dist/services/actionflow/components/enquiry_form.d.ts.map +1 -1
- package/dist/services/actionflow/components/enquiry_form.js +11 -10
- package/dist/services/actionflow/components/enquiry_form.js.map +1 -1
- package/dist/services/actionflow/components/event_button.js +1 -1
- package/dist/services/actionflow/components/event_button.js.map +1 -1
- package/dist/services/actionflow/components/form_data_builder.d.ts +29 -1
- package/dist/services/actionflow/components/form_data_builder.d.ts.map +1 -1
- package/dist/services/actionflow/components/form_data_builder.js +67 -3
- package/dist/services/actionflow/components/form_data_builder.js.map +1 -1
- package/dist/services/actionflow/components/time_batch_trigger.js +2 -2
- package/dist/services/actionflow/components/time_batch_trigger.js.map +1 -1
- package/dist/services/actionflow/form_source.d.ts +44 -1
- package/dist/services/actionflow/form_source.d.ts.map +1 -1
- package/dist/services/actionflow/form_source.js +231 -5
- package/dist/services/actionflow/form_source.js.map +1 -1
- package/dist/services/actionflow/preflight_service.d.ts +8 -0
- package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
- package/dist/services/actionflow/preflight_service.js +120 -14
- package/dist/services/actionflow/preflight_service.js.map +1 -1
- package/dist/services/actionflow/system_params.d.ts.map +1 -1
- package/dist/services/actionflow/system_params.js +4 -1
- package/dist/services/actionflow/system_params.js.map +1 -1
- package/dist/services/actionflow/trigger_common.d.ts.map +1 -1
- package/dist/services/actionflow/trigger_common.js +12 -3
- package/dist/services/actionflow/trigger_common.js.map +1 -1
- package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
- package/dist/services/actionflow/workflow_compiler.js +117 -40
- package/dist/services/actionflow/workflow_compiler.js.map +1 -1
- package/dist/services/form-attachment-settings.d.ts +110 -0
- package/dist/services/form-attachment-settings.d.ts.map +1 -0
- package/dist/services/form-attachment-settings.js +332 -0
- package/dist/services/form-attachment-settings.js.map +1 -0
- package/dist/services/form-attachment-upload.d.ts +30 -0
- package/dist/services/form-attachment-upload.d.ts.map +1 -0
- package/dist/services/form-attachment-upload.js +76 -0
- package/dist/services/form-attachment-upload.js.map +1 -0
- package/dist/services/form-data-openapi.d.ts +2 -0
- package/dist/services/form-data-openapi.d.ts.map +1 -1
- package/dist/services/form-data-openapi.js +1 -0
- package/dist/services/form-data-openapi.js.map +1 -1
- package/dist/services/form-layout-code-reviewed.d.ts +32 -0
- package/dist/services/form-layout-code-reviewed.d.ts.map +1 -0
- package/dist/services/form-layout-code-reviewed.js +101 -0
- package/dist/services/form-layout-code-reviewed.js.map +1 -0
- package/dist/services/form-layout-describe.d.ts +4 -0
- package/dist/services/form-layout-describe.d.ts.map +1 -0
- package/dist/services/form-layout-describe.js +107 -0
- package/dist/services/form-layout-describe.js.map +1 -0
- package/dist/services/form-layout-diff.d.ts +37 -0
- package/dist/services/form-layout-diff.d.ts.map +1 -0
- package/dist/services/form-layout-diff.js +232 -0
- package/dist/services/form-layout-diff.js.map +1 -0
- package/dist/services/form-layout-document-apply.d.ts +23 -0
- package/dist/services/form-layout-document-apply.d.ts.map +1 -0
- package/dist/services/form-layout-document-apply.js +82 -0
- package/dist/services/form-layout-document-apply.js.map +1 -0
- package/dist/services/form-layout-document.d.ts +13 -0
- package/dist/services/form-layout-document.d.ts.map +1 -0
- package/dist/services/form-layout-document.js +228 -0
- package/dist/services/form-layout-document.js.map +1 -0
- package/dist/services/form-layout-edit.d.ts +21 -0
- package/dist/services/form-layout-edit.d.ts.map +1 -0
- package/dist/services/form-layout-edit.js +103 -0
- package/dist/services/form-layout-edit.js.map +1 -0
- package/dist/services/form-layout-init-plan.d.ts +54 -0
- package/dist/services/form-layout-init-plan.d.ts.map +1 -0
- package/dist/services/form-layout-init-plan.js +211 -0
- package/dist/services/form-layout-init-plan.js.map +1 -0
- package/dist/services/form-layout-source/review.d.ts +4 -0
- package/dist/services/form-layout-source/review.d.ts.map +1 -0
- package/dist/services/form-layout-source/review.js +54 -0
- package/dist/services/form-layout-source/review.js.map +1 -0
- package/dist/services/form-layout-template-advanced.d.ts +5 -0
- package/dist/services/form-layout-template-advanced.d.ts.map +1 -1
- package/dist/services/form-layout-template-advanced.js +17 -1
- package/dist/services/form-layout-template-advanced.js.map +1 -1
- package/dist/services/form-layout-template-catalog.d.ts +13 -0
- package/dist/services/form-layout-template-catalog.d.ts.map +1 -0
- package/dist/services/form-layout-template-catalog.js +27 -0
- package/dist/services/form-layout-template-catalog.js.map +1 -0
- package/dist/services/form-layout-template-flow.d.ts +1 -1
- package/dist/services/form-layout-template-flow.d.ts.map +1 -1
- package/dist/services/form-layout-template-flow.js.map +1 -1
- package/dist/services/form-layout-template-verification.d.ts +34 -0
- package/dist/services/form-layout-template-verification.d.ts.map +1 -0
- package/dist/services/form-layout-template-verification.js +124 -0
- package/dist/services/form-layout-template-verification.js.map +1 -0
- package/dist/services/form-style-template.d.ts +3 -3
- package/dist/services/form-style-template.d.ts.map +1 -1
- package/dist/services/form-style-template.js +18 -13
- package/dist/services/form-style-template.js.map +1 -1
- package/package.json +1 -1
- package/skill-docs/SKILL.md +163 -155
- package/skill-docs/_catalog.md +110 -106
- package/skill-docs/actionflows/references/components/ebuilder/ActionEbDelete.md +60 -3
- package/skill-docs/actionflows/references/components/ebuilder/EventButton.md +35 -33
- package/skill-docs/assets/sample/api/formApi.js +689 -510
- package/skill-docs/assets/sample/app/config.js +4 -0
- package/skill-docs/assets/sample/app/fields.js +25 -0
- package/skill-docs/assets/sample/entry.js +24 -22
- package/skill-docs/assets/sample/eslint.config.cjs +1 -0
- package/skill-docs/assets/sample/pages/Items.js +247 -0
- package/skill-docs/assets/sample/styles/prototypeStyles.js +137 -0
- package/skill-docs/references/coding/guide-edit-backfill.md +102 -150
- package/skill-docs/references/coding/guide-form-crud.md +195 -172
- package/skill-docs/references/coding/guide-html-to-react.md +250 -0
- package/skill-docs/references/coding/guide-page-code.md +194 -167
- package/skill-docs/references/coding/guide-page-export.md +27 -18
- package/skill-docs/references/coding/ref-compile-rules.md +7 -7
- package/skill-docs/references/common/capability-boundaries.md +20 -1
- package/skill-docs/references/common/guide-plan-template.md +29 -3
- package/skill-docs/references/common/map.md +13 -8
- package/skill-docs/references/common/ref-cli-commands.md +31 -10
- package/skill-docs/references/components/display-FilePreview.md +5 -4
- package/skill-docs/references/form/guide-browser-definition.md +57 -13
- package/skill-docs/references/form/guide-create-form.md +258 -258
- package/skill-docs/references/form/guide-field-linkage.md +4 -1
- package/skill-docs/references/form/guide-form-attachment-setting.md +95 -0
- package/skill-docs/references/form/guide-form-data.md +22 -1
- package/skill-docs/references/form/layout/code-block/code-block-guide.md +153 -0
- package/skill-docs/references/form/layout/code-block/controls.md +60 -0
- package/skill-docs/references/form/layout/code-block/coverage.md +32 -0
- package/skill-docs/references/form/layout/code-block/details.md +57 -0
- package/skill-docs/references/form/layout/code-block/events-validation.md +42 -0
- package/skill-docs/references/form/layout/code-block/foundations-fields.md +56 -0
- package/skill-docs/references/form/layout/code-block/layout-css.md +116 -0
- package/skill-docs/references/form/layout/code-block/recipes.md +164 -0
- package/skill-docs/references/form/layout/code-block/troubleshooting.md +49 -0
- package/skill-docs/references/form/layout/code-block/ui-global.md +47 -0
- package/skill-docs/references/form/layout/document.md +39 -0
- package/skill-docs/references/form/layout/incremental.md +133 -0
- package/skill-docs/references/form/layout/initialization.md +39 -0
- package/skill-docs/references/form/layout/inspect-edit.md +76 -0
- package/skill-docs/references/form/layout/layout-overview.md +67 -0
- package/skill-docs/references/form/layout/management.md +64 -0
- package/skill-docs/references/form/layout/planning.md +76 -0
- package/skill-docs/references/form/layout/source-restoration.md +388 -0
- package/skill-docs/references/form/layout/template/advanced-css.md +167 -0
- package/skill-docs/references/form/layout/template/advanced.md +318 -0
- package/skill-docs/references/form/layout/template/easy.md +64 -0
- package/skill-docs/references/form/layout/template/flow.md +30 -0
- package/skill-docs/references/form/layout/template/template-guide.md +56 -0
- package/skill-docs/references/form/layout/workflow-layout.md +44 -0
- package/skill-docs/references/form/ref-form-fields.md +303 -301
- package/skill-docs/references/workflow/guide-workflow-node-layout.md +189 -187
- package/skill-docs/assets/sample/config/config.js +0 -0
- package/skill-docs/assets/sample/config/configLoad.js +0 -0
- package/skill-docs/assets/sample/config/configLoad_default.js +0 -0
- package/skill-docs/assets/sample/config/config_default.js +0 -0
- package/skill-docs/assets/sample/memo.md +0 -0
- package/skill-docs/assets/sample/readme.js +0 -8
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
# HTML 原型还原成 React
|
|
2
|
+
|
|
3
|
+
> 用户给出 HTML 原型,要求「完整还原页面效果」时使用。目标是把原型的 DOM 和 CSS 原样搬进 Ecode React 页面,不是重新设计一套样式。
|
|
4
|
+
>
|
|
5
|
+
> 本流程不提供本地预览;样式以原型为准,部署后由用户在实际环境验收。
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 一、原则
|
|
10
|
+
|
|
11
|
+
1. **CSS 原样复用**:原型 `<style>` 整段复制进代码,不改规则、不重写、不近似。
|
|
12
|
+
2. **DOM 结构保留**:class 名、层级、标签尽量不动;React 只接管状态和事件。
|
|
13
|
+
3. **不建独立 `.css` 文件**:ecode 没有 CSS 模块解析,`import './x.css'` 会静默丢失。
|
|
14
|
+
4. **不逐条改内联 style**:把 CSS 原文放进字符串,比把每条规则翻译成 `style={{...}}` 更可靠。
|
|
15
|
+
5. **平台组件只用于必须能力**:人员/部门选择、上传、文件预览;其余用原生 HTML + 原型 CSS。
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## 二、提取 CSS
|
|
20
|
+
|
|
21
|
+
原型里的:
|
|
22
|
+
|
|
23
|
+
```html
|
|
24
|
+
<style>
|
|
25
|
+
.auction-page { ... }
|
|
26
|
+
.auction-card { ... }
|
|
27
|
+
@media (max-width: 900px) { ... }
|
|
28
|
+
</style>
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
原样放到 `styles/prototypeStyles.js`:
|
|
32
|
+
|
|
33
|
+
```js
|
|
34
|
+
export var PROTOTYPE_CSS = `
|
|
35
|
+
.auction-page { ... }
|
|
36
|
+
.auction-card { ... }
|
|
37
|
+
@media (max-width: 900px) { ... }
|
|
38
|
+
`;
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
页面壳渲染一次:
|
|
42
|
+
|
|
43
|
+
```js
|
|
44
|
+
import { PROTOTYPE_CSS } from '../styles/prototypeStyles.js';
|
|
45
|
+
|
|
46
|
+
export default function Page() {
|
|
47
|
+
return (
|
|
48
|
+
<div className="prototype-root">
|
|
49
|
+
<style>{PROTOTYPE_CSS}</style>
|
|
50
|
+
{/* 页面内容 */}
|
|
51
|
+
</div>
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
注意:
|
|
57
|
+
|
|
58
|
+
- 不要把 CSS 拆成多个 `.css` 文件。
|
|
59
|
+
- 不要在 JS 里 `import './prototype.css'`。
|
|
60
|
+
- 如果原型有多段 `<style>`,按原顺序拼进同一个字符串。
|
|
61
|
+
- 原型的 `<link rel="stylesheet">` 外部样式:把内容下载后并入字符串;不要保留外链,也不要让平台去 CDN 拉。
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## 三、收敛全局选择器
|
|
66
|
+
|
|
67
|
+
原型可能直接写 `body`、`:root`、`*`、全局 `h1`。直接搬进平台会污染平台壳。处理方式:
|
|
68
|
+
|
|
69
|
+
1. 给页面根加一个唯一类名,例如 `proto-auction`。
|
|
70
|
+
2. 把 `body` / `:root` / `*` 规则改挂到根类名下,保持视觉等价。
|
|
71
|
+
3. `:root` 的 CSS 变量移到根类名下。
|
|
72
|
+
4. `@keyframes` 名称加页面前缀,避免与平台动画重名。
|
|
73
|
+
5. `!important` 原样保留,不要自行删减。
|
|
74
|
+
|
|
75
|
+
示例:
|
|
76
|
+
|
|
77
|
+
```css
|
|
78
|
+
/* 原型 */
|
|
79
|
+
:root { --brand: #c9a227; }
|
|
80
|
+
body { background: #f5f3ef; }
|
|
81
|
+
|
|
82
|
+
/* 页面内 */
|
|
83
|
+
.proto-auction { --brand: #c9a227; background: #f5f3ef; }
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
选择器收敛后要逐项核对:背景、字体、颜色、间距不能因为换父级而失效。
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## 四、浮层 / Portal 与 CSS 作用域
|
|
91
|
+
|
|
92
|
+
原型 CSS 收敛到 `.xxx-root` 后,**浮层的 DOM 必须仍在根容器内**。React 的 Provider / Portal 很容易把弹窗渲染成根容器的兄弟节点:
|
|
93
|
+
|
|
94
|
+
```jsx
|
|
95
|
+
// 错误:modal 在 .auction-root 外面,.auction-root .modal 不命中
|
|
96
|
+
<>
|
|
97
|
+
<div className="auction-root"><Shell /></div>
|
|
98
|
+
<OverlayProvider /> {/* Portal 到 body 或兄弟节点 */}
|
|
99
|
+
</>
|
|
100
|
+
|
|
101
|
+
// 正确:把 Provider / Portal 容器放进根节点
|
|
102
|
+
<div className="auction-root">
|
|
103
|
+
<OverlayProvider>
|
|
104
|
+
<Shell />
|
|
105
|
+
</OverlayProvider>
|
|
106
|
+
</div>
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
如果平台或第三方 Provider 必须挂到 `body`,就不要把弹窗样式写成 `.root .modal`;改用唯一的全局类(如 `.auction-modal`)并确保它不会和平台样式冲突。**CSS 作用域一旦引入,DOM 层级就是隐式契约。**
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## 五、HTML → JSX 的机械转换
|
|
114
|
+
|
|
115
|
+
| HTML | JSX |
|
|
116
|
+
|---|---|
|
|
117
|
+
| `class="x"` | `className="x"` |
|
|
118
|
+
| `for="x"` | `htmlFor="x"` |
|
|
119
|
+
| `style="color: red; margin: 8px"` | `style={{ color: 'red', margin: 8 }}` |
|
|
120
|
+
| `onclick="fn()"` | `onClick={fn}` |
|
|
121
|
+
| `<input>` `<img>` `<br>` | 自闭合 `<input />` `<img />` `<br />` |
|
|
122
|
+
| `<!-- 注释 -->` | `{/* 注释 */}` |
|
|
123
|
+
| `data-x="1"` | `data-x="1"`(保留) |
|
|
124
|
+
| `aria-*` | 保留 |
|
|
125
|
+
| `innerHTML` 拼出的列表 | `array.map(...)` + `key` |
|
|
126
|
+
|
|
127
|
+
**保留 class 名和层级**。不要为了“React 化”把 div 换成语义标签、不要重排 DOM、不要改 class 命名,否则原型 CSS 全部失效。
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## 六、静态 DOM → 组件
|
|
132
|
+
|
|
133
|
+
原型常见写法:
|
|
134
|
+
|
|
135
|
+
```js
|
|
136
|
+
function renderCard(item) {
|
|
137
|
+
return `<div class="auction-card">
|
|
138
|
+
<h3>${item.name}</h3>
|
|
139
|
+
<span>${item.price}</span>
|
|
140
|
+
</div>`;
|
|
141
|
+
}
|
|
142
|
+
el.innerHTML = list.map(renderCard).join('');
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
React 写法:
|
|
146
|
+
|
|
147
|
+
```js
|
|
148
|
+
function Card(props) {
|
|
149
|
+
return (
|
|
150
|
+
<div className="auction-card">
|
|
151
|
+
<h3>{props.item.name}</h3>
|
|
152
|
+
<span>{props.item.price}</span>
|
|
153
|
+
</div>
|
|
154
|
+
);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
function List(props) {
|
|
158
|
+
return (
|
|
159
|
+
<div>
|
|
160
|
+
{props.items.map(function (item) {
|
|
161
|
+
return <Card key={item.id} item={item} />;
|
|
162
|
+
})}
|
|
163
|
+
</div>
|
|
164
|
+
);
|
|
165
|
+
}
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
- 重复块抽成组件,不要保留 `innerHTML` 拼串。
|
|
169
|
+
- 每个列表项必须有稳定 `key`(优先数据 ID,不要用下标)。
|
|
170
|
+
- 不要在组件里 `document.getElementById` / `querySelector` 操作原型 DOM。
|
|
171
|
+
- 弹窗、抽屉、Toast 用 state 控制显示,不要直接改 `style.display`。
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## 七、状态与交互
|
|
176
|
+
|
|
177
|
+
| 原型行为 | React 做法 |
|
|
178
|
+
|---|---|
|
|
179
|
+
| `onclick` 调全局函数 | 组件内事件处理函数 |
|
|
180
|
+
| 直接改 DOM 文本/class | state + 条件渲染 |
|
|
181
|
+
| 显示/隐藏弹窗 | `var [visible, setVisible] = useState(false)` |
|
|
182
|
+
| 定时器刷新倒计时 | `useEffect` 中 `setInterval`,卸载时 `clearInterval` |
|
|
183
|
+
| 表单输入 | 受控 `value` + `onChange` |
|
|
184
|
+
| 页面切换 | 路由注册,或单页 state;优先路由,方便挂菜单 |
|
|
185
|
+
|
|
186
|
+
`useEffect` 的清理函数必须写,避免页面切换后定时器还在跑。
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## 八、数据接入
|
|
191
|
+
|
|
192
|
+
静态原型的数据是写死的,接入时:
|
|
193
|
+
|
|
194
|
+
1. 用 `formClient` 替换原型里的 seed 数据;字段 ID 来自 `app/fields.js`。
|
|
195
|
+
2. 列表渲染用 `row.display`,表单回填用 `row.values`,人员/附件用 `row.items`。
|
|
196
|
+
3. 原型里的 mock 数据可以保留为 `mockData.js`,只用于纯展示页或空态演示;正式页面不要同时保留两套数据源。
|
|
197
|
+
4. 写操作要有 loading / error / 成功反馈;原型如果只做 toast,保留 toast 的样式和交互。
|
|
198
|
+
|
|
199
|
+
详细数据规则见 `guide-form-crud.md`。
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## 九、图片与资源
|
|
204
|
+
|
|
205
|
+
- 原型里的 `<img src="...">`:本地图片放到 `resources/`,代码里写 `${appRes}/文件名`。
|
|
206
|
+
- data URI 可以原样保留,但大图建议转成资源文件。
|
|
207
|
+
- 背景图写在 CSS 字符串里时,路径同样写 `${appRes}/...`。`${appRes}` 是平台导入时替换的模板变量,不是 JS 变量;不要自己用 JS 变量拼接。
|
|
208
|
+
- 不要引用 CDN、外链图片、在线字体。
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## 十、还原核对清单
|
|
213
|
+
|
|
214
|
+
- [ ] 原型 `<style>` 已整段复制,没有改写/删减
|
|
215
|
+
- [ ] 没有独立 `.css` 文件,没有 `import` CSS
|
|
216
|
+
- [ ] class 名和 DOM 层级与原型一致
|
|
217
|
+
- [ ] 全局选择器已收敛到页面根,平台壳未被污染
|
|
218
|
+
- [ ] 字体、字号、颜色、圆角、边框、阴影、间距一致
|
|
219
|
+
- [ ] hover / active / disabled / 空态 / 加载态一致
|
|
220
|
+
- [ ] 表格列宽、换行、横向滚动行为一致
|
|
221
|
+
- [ ] 弹窗、抽屉、Toast 的层级和遮罩一致
|
|
222
|
+
- [ ] 图片/资源路径使用 `${appRes}`
|
|
223
|
+
- [ ] 列表有稳定 `key`,没有用下标
|
|
224
|
+
- [ ] 定时器/监听在卸载时清理
|
|
225
|
+
- [ ] 没有 `innerHTML` 拼布局,没有直接操作 DOM
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## 十一、常见走样原因
|
|
230
|
+
|
|
231
|
+
| 原因 | 表现 | 处理 |
|
|
232
|
+
|---|---|---|
|
|
233
|
+
| 把 CSS 规则翻译成内联 style | 伪类、媒体查询、层叠全丢 | 保留 CSS 字符串 |
|
|
234
|
+
| 改了 class 名 | 原型样式全部不命中 | 原名保留 |
|
|
235
|
+
| 给页面根加了额外 flex/grid | 间距、宽度变化 | 根容器只加作用域类,不加布局 |
|
|
236
|
+
| 全局 `body` 规则直接搬入 | 平台头部/侧栏被改 | 收敛到页面根 |
|
|
237
|
+
| 图片用相对路径 | 发布后 404 | `${appRes}` |
|
|
238
|
+
| 用 `display` 回填表单 | 中文名写回 ID 字段 | 用 `values` |
|
|
239
|
+
| 列表用 index 做 key | 删除/排序后状态错位 | 用数据 ID |
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
## 十二、验收方式
|
|
244
|
+
|
|
245
|
+
本流程不提供本地预览。完成后:
|
|
246
|
+
|
|
247
|
+
1. `e10-cli check <项目目录>` 扫描已知规则。
|
|
248
|
+
2. `ecodecmd build <项目目录> --target=e10` 做真实编译。
|
|
249
|
+
3. 按 `guide-page-export.md` 注册路由、部署。
|
|
250
|
+
4. 由用户在实际环境逐项对照原型验收;发现偏差时回到本文件第九节定位。
|