neo-cmp-cli 1.13.11 → 1.13.13

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 (100) hide show
  1. package/dist/neo/neoService.js +1 -1
  2. package/dist/package.json.js +1 -1
  3. package/package.json +1 -1
  4. package/template/antd-custom-cmp-template/package.json +1 -1
  5. package/template/asset-manage-template/package.json +1 -1
  6. package/template/echarts-custom-cmp-template/package.json +1 -1
  7. package/template/empty-custom-cmp-template/package.json +1 -1
  8. package/template/map-custom-cmp-template/package.json +1 -1
  9. package/template/neo-bi-cmps/docs/gartner-pipeline-apis.md +279 -0
  10. package/template/neo-bi-cmps/docs/gartner-pipeline-prd.md +389 -0
  11. package/template/neo-bi-cmps/docs/neo-backend-dev/SKILL.md +188 -0
  12. package/template/neo-bi-cmps/docs/neo-backend-dev/references/01-Trigger/345/274/200/345/217/221.md +183 -0
  13. package/template/neo-bi-cmps/docs/neo-backend-dev/references/02-/350/207/252/345/256/232/344/271/211API/345/274/200/345/217/221.md +196 -0
  14. package/template/neo-bi-cmps/docs/neo-backend-dev/references/03-SDK/345/267/245/345/205/267/347/261/273/346/216/245/345/217/243.md +346 -0
  15. package/template/neo-bi-cmps/docs/neo-backend-dev/references/04-/350/256/241/345/210/222/344/275/234/344/270/232/345/274/200/345/217/221.md +188 -0
  16. package/template/neo-bi-cmps/docs/neo-backend-dev/references/05-/351/241/265/351/235/242/345/274/200/345/217/221.md +293 -0
  17. package/template/neo-bi-cmps/docs/neo-backend-dev/references/06-/346/265/201/347/250/213/346/211/251/345/261/225/345/274/200/345/217/221.md +175 -0
  18. package/template/neo-bi-cmps/docs/neo-backend-dev/references/PaaS/345/271/263/345/217/260/345/274/200/345/217/221/346/211/213/345/206/214/350/247/243/350/257/273.md +313 -0
  19. package/template/neo-bi-cmps/docs/neo-backend-dev/references/auth-config.md +77 -0
  20. package/template/neo-bi-cmps/docs/neo-backend-dev/scripts/deploy_server_script.py +118 -0
  21. package/template/neo-bi-cmps/docs/neo-backend-dev/scripts/download_server_script.py +74 -0
  22. package/template/neo-bi-cmps/docs/neo-backend-dev/scripts/gen_entity_desc.py +69 -0
  23. package/template/neo-bi-cmps/docs/neo-backend-dev/scripts/gen_entitylist.py +87 -0
  24. package/template/neo-bi-cmps/docs/neo-backend-dev/scripts/query_crm.py +65 -0
  25. package/template/neo-bi-cmps/docs/neo-backend-dev/scripts/uninstall_server_script.py +48 -0
  26. package/template/neo-bi-cmps/docs/neo-backend-dev/scripts/update_model_jar.py +49 -0
  27. package/template/neo-bi-cmps/docs/neo-frontend-dev/SKILL.md +138 -0
  28. package/template/neo-bi-cmps/docs/neo-frontend-dev/references/auth-config.md +77 -0
  29. package/template/neo-bi-cmps/docs/neo-frontend-dev/references/component-dev.md +205 -0
  30. package/template/neo-bi-cmps/docs/neo-frontend-dev/references/entityTable-example.md +167 -0
  31. package/template/neo-bi-cmps/docs/neo-frontend-dev/references/templates.md +38 -0
  32. package/template/neo-bi-cmps/docs/neo-frontend-dev/scripts/gen_entity_desc.py +69 -0
  33. package/template/neo-bi-cmps/docs/neo-frontend-dev/scripts/gen_entitylist.py +87 -0
  34. package/template/neo-bi-cmps/docs/neo-frontend-dev/scripts/query_crm.py +65 -0
  35. package/template/neo-bi-cmps/docs/prototype-pipeline-forecasting.html +2453 -0
  36. package/template/neo-bi-cmps/docs//350/264/246/345/217/267/347/233/270/345/205/263/344/277/241/346/201/257.md +10 -0
  37. package/template/neo-bi-cmps/package.json +1 -1
  38. package/template/neo-bi-cmps/src/components/aiCommitDrawer__c/README.md +52 -0
  39. package/template/neo-bi-cmps/src/components/aiCommitDrawer__c/index.tsx +176 -0
  40. package/template/neo-bi-cmps/src/components/aiCommitDrawer__c/model.ts +49 -0
  41. package/template/neo-bi-cmps/src/components/aiCommitDrawer__c/style.scss +218 -0
  42. package/template/neo-bi-cmps/src/components/filterBar__c/README.md +35 -0
  43. package/template/neo-bi-cmps/src/components/filterBar__c/index.tsx +186 -0
  44. package/template/neo-bi-cmps/src/components/filterBar__c/model.ts +72 -0
  45. package/template/neo-bi-cmps/src/components/filterBar__c/style.scss +212 -0
  46. package/template/neo-bi-cmps/src/components/forecastChart__c/README.md +31 -0
  47. package/template/neo-bi-cmps/src/components/forecastChart__c/index.tsx +161 -0
  48. package/template/neo-bi-cmps/src/components/forecastChart__c/model.ts +39 -0
  49. package/template/neo-bi-cmps/src/components/forecastChart__c/style.scss +154 -0
  50. package/template/neo-bi-cmps/src/components/forecastGrid__c/README.md +36 -0
  51. package/template/neo-bi-cmps/src/components/forecastGrid__c/index.tsx +86 -0
  52. package/template/neo-bi-cmps/src/components/forecastGrid__c/model.ts +34 -0
  53. package/template/neo-bi-cmps/src/components/forecastGrid__c/style.scss +48 -0
  54. package/template/neo-bi-cmps/src/components/gapCloser__c/README.md +24 -0
  55. package/template/neo-bi-cmps/src/components/gapCloser__c/index.tsx +95 -0
  56. package/template/neo-bi-cmps/src/components/gapCloser__c/model.ts +43 -0
  57. package/template/neo-bi-cmps/src/components/gapCloser__c/style.scss +60 -0
  58. package/template/neo-bi-cmps/src/components/kpiCards__c/README.md +35 -0
  59. package/template/neo-bi-cmps/src/components/kpiCards__c/index.tsx +70 -0
  60. package/template/neo-bi-cmps/src/components/kpiCards__c/model.ts +35 -0
  61. package/template/neo-bi-cmps/src/components/kpiCards__c/style.scss +33 -0
  62. package/template/neo-bi-cmps/src/components/oppList__c/README.md +52 -0
  63. package/template/neo-bi-cmps/src/components/oppList__c/index.tsx +228 -0
  64. package/template/neo-bi-cmps/src/components/oppList__c/model.ts +40 -0
  65. package/template/neo-bi-cmps/src/components/oppList__c/style.scss +133 -0
  66. package/template/neo-bi-cmps/src/components/pipelineFunnel__c/README.md +39 -0
  67. package/template/neo-bi-cmps/src/components/pipelineFunnel__c/index.tsx +128 -0
  68. package/template/neo-bi-cmps/src/components/pipelineFunnel__c/model.ts +42 -0
  69. package/template/neo-bi-cmps/src/components/pipelineFunnel__c/style.scss +133 -0
  70. package/template/neo-bi-cmps/src/components/stageSwitch__c/README.md +36 -0
  71. package/template/neo-bi-cmps/src/components/stageSwitch__c/index.tsx +103 -0
  72. package/template/neo-bi-cmps/src/components/stageSwitch__c/model.ts +37 -0
  73. package/template/neo-bi-cmps/src/components/stageSwitch__c/style.scss +89 -0
  74. package/template/neo-bi-cmps/src/components/stageTimeChart__c/README.md +37 -0
  75. package/template/neo-bi-cmps/src/components/stageTimeChart__c/index.tsx +126 -0
  76. package/template/neo-bi-cmps/src/components/stageTimeChart__c/model.ts +35 -0
  77. package/template/neo-bi-cmps/src/components/stageTimeChart__c/style.scss +140 -0
  78. package/template/neo-bi-cmps/src/components/tabSwitch__c/README.md +37 -0
  79. package/template/neo-bi-cmps/src/components/tabSwitch__c/index.tsx +80 -0
  80. package/template/neo-bi-cmps/src/components/tabSwitch__c/model.ts +45 -0
  81. package/template/neo-bi-cmps/src/components/tabSwitch__c/style.scss +37 -0
  82. package/template/neo-custom-cmp-template/package.json +1 -1
  83. package/template/neo-custom-cmp-template/src/components/entityForm__c/index.tsx +48 -54
  84. package/template/neo-custom-cmp-template/src/components/entityForm__c/model.ts +1 -1
  85. package/template/neo-custom-cmp-template/src/components/entityForm__c/style.scss +80 -77
  86. package/template/neo-h5-cmps/package.json +1 -1
  87. package/template/neo-order-cmps/package.json +1 -1
  88. package/template/neo-web-entity-grid/package.json +1 -1
  89. package/template/neo-web-entity-grid/src/components/createForm__c/index.tsx +46 -54
  90. package/template/neo-web-entity-grid/src/components/createForm__c/resetAntd.scss +74 -0
  91. package/template/neo-web-entity-grid/src/components/createForm__c/style.scss +81 -152
  92. package/template/neo-web-entity-grid/src/components/searchForm__c/index.tsx +47 -52
  93. package/template/neo-web-entity-grid/src/components/searchForm__c/style.scss +60 -74
  94. package/template/neo-web-form/package.json +1 -1
  95. package/template/neo-web-form/src/components/batchAddTable__c/index.tsx +16 -7
  96. package/template/neo-web-form/src/components/batchAddTable__c/style.scss +14 -0
  97. package/template/neo-web-form/src/components/batchAddTable__c/tableModal.scss +60 -13
  98. package/template/react-custom-cmp-template/package.json +1 -1
  99. package/template/react-ts-custom-cmp-template/package.json +1 -1
  100. package/template/vue2-custom-cmp-template/package.json +1 -1
@@ -1,14 +1,24 @@
1
1
  .createForm__c {
2
+ padding: 12px 24px;
3
+ box-sizing: border-box;
4
+ background: #fff;
5
+
2
6
  .form-header {
3
- margin-bottom: 24px;
4
- padding-bottom: 16px;
5
- border-bottom: 1px solid #f0f0f0;
7
+ display: flex;
8
+ align-items: center;
9
+ height: 38px;
10
+ padding: 0 12px;
11
+ margin-bottom: 20px;
12
+ box-sizing: border-box;
13
+ background: #f5f5f5;
14
+ border-radius: 8px;
6
15
 
7
16
  .form-title {
8
17
  margin: 0;
9
- font-size: 18px;
10
- font-weight: 600;
18
+ font-size: 14px;
19
+ font-weight: 500;
11
20
  color: #262626;
21
+ line-height: 1.2;
12
22
  }
13
23
  }
14
24
 
@@ -21,7 +31,7 @@
21
31
  padding-bottom: 6px;
22
32
 
23
33
  label {
24
- font-weight: 500;
34
+ font-weight: 400;
25
35
  color: #262626;
26
36
  font-size: 14px;
27
37
 
@@ -113,59 +123,66 @@
113
123
  }
114
124
 
115
125
  .form-actions {
126
+ display: flex;
127
+ justify-content: flex-end;
128
+ align-items: center;
129
+ flex-wrap: wrap;
116
130
  margin-top: 32px;
117
- padding-top: 24px;
118
- border-top: 1px solid #f0f0f0;
119
- text-align: center;
131
+ padding-top: 16px;
132
+ border-top: 1px solid rgba(0, 0, 0, 0.06);
120
133
 
121
- .ant-space {
122
- .ant-btn {
123
- min-width: 100px;
124
- height: 40px;
125
- font-size: 15px;
126
- border-radius: 4px;
127
- font-weight: 500;
128
- transition: all 0.3s;
134
+ .ant-btn {
135
+ height: 32px;
136
+ padding: 0 14px;
137
+ font-size: 14px;
138
+ border-radius: 16px;
139
+ font-weight: 400;
140
+ min-width: auto;
141
+ margin-left: 10px;
142
+ transition: all 0.3s;
143
+
144
+ &:first-child {
145
+ margin-left: 0;
146
+ }
129
147
 
130
- &.ant-btn-primary {
131
- background: #1890ff;
132
- border-color: #1890ff;
148
+ &.ant-btn-primary {
149
+ background: #1890ff;
150
+ border-color: #1890ff;
133
151
 
134
- &:hover {
135
- background: #40a9ff;
136
- border-color: #40a9ff;
137
- transform: translateY(-2px);
138
- box-shadow: 0 4px 12px rgba(24, 144, 255, 0.3);
139
- }
152
+ &:hover {
153
+ background: #40a9ff;
154
+ border-color: #40a9ff;
155
+ transform: translateY(-1px);
156
+ box-shadow: 0 4px 12px rgba(24, 144, 255, 0.3);
157
+ }
140
158
 
141
- &:active {
142
- background: #096dd9;
143
- border-color: #096dd9;
144
- transform: translateY(0);
145
- }
159
+ &:active {
160
+ background: #096dd9;
161
+ border-color: #096dd9;
162
+ transform: translateY(0);
163
+ }
146
164
 
147
- &:disabled {
148
- background: #f5f5f5;
149
- border-color: #d9d9d9;
150
- color: rgba(0, 0, 0, 0.25);
151
- transform: none;
152
- box-shadow: none;
153
- }
165
+ &:disabled {
166
+ background: #f5f5f5;
167
+ border-color: #d9d9d9;
168
+ color: rgba(0, 0, 0, 0.25);
169
+ transform: none;
170
+ box-shadow: none;
154
171
  }
172
+ }
155
173
 
156
- &:not(.ant-btn-primary) {
157
- &:hover {
158
- color: #40a9ff;
159
- border-color: #40a9ff;
160
- transform: translateY(-2px);
161
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
162
- }
174
+ &:not(.ant-btn-primary) {
175
+ &:hover {
176
+ color: #40a9ff;
177
+ border-color: #40a9ff;
178
+ transform: translateY(-1px);
179
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06);
180
+ }
163
181
 
164
- &:active {
165
- color: #096dd9;
166
- border-color: #096dd9;
167
- transform: translateY(0);
168
- }
182
+ &:active {
183
+ color: #096dd9;
184
+ border-color: #096dd9;
185
+ transform: translateY(0);
169
186
  }
170
187
  }
171
188
  }
@@ -197,10 +214,9 @@
197
214
  @media (max-width: 768px) {
198
215
  .form-header {
199
216
  margin-bottom: 16px;
200
- padding-bottom: 12px;
201
217
 
202
218
  .form-title {
203
- font-size: 16px;
219
+ font-size: 13px;
204
220
  }
205
221
  }
206
222
 
@@ -228,12 +244,9 @@
228
244
  margin-top: 24px;
229
245
  padding-top: 16px;
230
246
 
231
- .ant-space {
232
- .ant-btn {
233
- min-width: 80px;
234
- height: 36px;
235
- font-size: 14px;
236
- }
247
+ .ant-btn {
248
+ height: 32px;
249
+ font-size: 13px;
237
250
  }
238
251
  }
239
252
  }
@@ -242,7 +255,7 @@
242
255
  @media (max-width: 576px) {
243
256
  .form-header {
244
257
  .form-title {
245
- font-size: 15px;
258
+ font-size: 13px;
246
259
  }
247
260
  }
248
261
 
@@ -268,103 +281,19 @@
268
281
  }
269
282
 
270
283
  .form-actions {
271
- .ant-space {
272
- width: 100%;
284
+ flex-direction: column;
285
+ align-items: stretch;
273
286
 
274
- .ant-space-item {
275
- flex: 1;
276
- }
287
+ .ant-btn {
288
+ width: 100%;
289
+ margin-left: 0;
290
+ margin-top: 10px;
277
291
 
278
- .ant-btn {
279
- width: 100%;
280
- min-width: auto;
292
+ &:first-child {
293
+ margin-top: 0;
281
294
  }
282
295
  }
283
296
  }
284
297
  }
285
298
  }
286
- }
287
-
288
- // 全局样式覆盖
289
- .ant-card {
290
- border-radius: 6px;
291
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
292
-
293
- .ant-card-body {
294
- padding: 24px;
295
- }
296
- }
297
-
298
- // Spin 加载样式
299
- .ant-spin {
300
- .ant-spin-dot {
301
- font-size: 20px;
302
- }
303
-
304
- .ant-spin-text {
305
- color: #8c8c8c;
306
- font-size: 14px;
307
- }
308
- }
309
-
310
- // Select 下拉样式优化
311
- .ant-select-dropdown {
312
- border-radius: 4px;
313
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
314
-
315
- .ant-select-item {
316
- padding: 8px 12px;
317
-
318
- &:hover {
319
- background-color: #f5f5f5;
320
- }
321
-
322
- &.ant-select-item-option-selected {
323
- background-color: #e6f7ff;
324
- color: #1890ff;
325
- font-weight: 500;
326
- }
327
- }
328
- }
329
-
330
- // DatePicker 日期选择器样式优化
331
- .ant-picker-dropdown {
332
- .ant-picker-panel-container {
333
- border-radius: 4px;
334
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
335
- }
336
-
337
- .ant-picker-cell-selected {
338
- .ant-picker-cell-inner {
339
- background-color: #1890ff;
340
- }
341
- }
342
-
343
- .ant-picker-cell:hover:not(.ant-picker-cell-selected) {
344
- .ant-picker-cell-inner {
345
- background-color: #f5f5f5;
346
- }
347
- }
348
- }
349
-
350
- // InputNumber 数字输入框样式优化
351
- .ant-input-number {
352
- .ant-input-number-handler-wrap {
353
- opacity: 0;
354
- transition: opacity 0.3s;
355
- }
356
-
357
- &:hover {
358
- .ant-input-number-handler-wrap {
359
- opacity: 1;
360
- }
361
- }
362
-
363
- .ant-input-number-handler {
364
- border-left: 1px solid #d9d9d9;
365
-
366
- &:hover {
367
- background-color: #f5f5f5;
368
- }
369
- }
370
- }
299
+ }
@@ -9,10 +9,8 @@ import {
9
9
  Select,
10
10
  Button,
11
11
  message,
12
- Card,
13
12
  DatePicker,
14
13
  InputNumber,
15
- Space,
16
14
  Spin,
17
15
  Empty,
18
16
  Row,
@@ -26,6 +24,7 @@ import isEqual from 'lodash/isEqual';
26
24
  // 引入 neo-ui-common / NeoEvent
27
25
  // @ts-ignore
28
26
  import { NeoEvent } from 'neo-ui-common';
27
+
29
28
  import './style.scss';
30
29
 
31
30
  const { Option } = Select;
@@ -604,59 +603,55 @@ export default class SearchForm extends React.PureComponent<
604
603
 
605
604
  return (
606
605
  <div className={`searchForm__c ${className || ''}`.trim()}>
607
- <Card bordered={false} className="searchForm__c-card">
608
- <div className="form-header">
609
- <div className="form-header-text">
610
- <h3 className="form-title">{displayTitle}</h3>
611
- </div>
606
+ <div className="form-header">
607
+ <div className="form-header-text">
608
+ <h3 className="form-title">{displayTitle}</h3>
612
609
  </div>
613
-
614
- <div className="form-content">
615
- <Spin spinning={loading} tip="加载字段信息...">
616
- {error ? (
617
- <Empty
618
- image={Empty.PRESENTED_IMAGE_SIMPLE}
619
- description={
620
- <div>
621
- <div style={{ color: '#ff4d4f', marginBottom: 8 }}>
622
- {error}
623
- </div>
624
- <Button type="primary" onClick={this.loadFieldList}>
625
- 重新加载
626
- </Button>
610
+ </div>
611
+
612
+ <div className="form-content">
613
+ <Spin spinning={loading} tip="加载字段信息...">
614
+ {error ? (
615
+ <Empty
616
+ image={Empty.PRESENTED_IMAGE_SIMPLE}
617
+ description={
618
+ <div>
619
+ <div style={{ color: '#ff4d4f', marginBottom: 8 }}>
620
+ {error}
627
621
  </div>
628
- }
629
- />
630
- ) : (
631
- <>
632
- {this.renderForm()}
633
- <div className="form-actions">
634
- <Space size="middle">
635
- {showResetButton && (
636
- <Button
637
- icon={<ReloadOutlined />}
638
- onClick={this.handleReset}
639
- disabled={submitting}
640
- >
641
- 重置
642
- </Button>
643
- )}
644
- <Button
645
- type="primary"
646
- icon={<SearchOutlined />}
647
- onClick={this.handleSubmit}
648
- loading={submitting}
649
- disabled={!xObjectApiKey}
650
- >
651
- {submitting ? '查询中...' : '查询'}
652
- </Button>
653
- </Space>
622
+ <Button type="primary" onClick={this.loadFieldList}>
623
+ 重新加载
624
+ </Button>
654
625
  </div>
655
- </>
656
- )}
657
- </Spin>
658
- </div>
659
- </Card>
626
+ }
627
+ />
628
+ ) : (
629
+ <>
630
+ {this.renderForm()}
631
+ <div className="form-actions">
632
+ {showResetButton && (
633
+ <Button
634
+ icon={<ReloadOutlined />}
635
+ onClick={this.handleReset}
636
+ disabled={submitting}
637
+ >
638
+ 重置
639
+ </Button>
640
+ )}
641
+ <Button
642
+ type="primary"
643
+ icon={<SearchOutlined />}
644
+ onClick={this.handleSubmit}
645
+ loading={submitting}
646
+ disabled={!xObjectApiKey}
647
+ >
648
+ {submitting ? '查询中...' : '查询'}
649
+ </Button>
650
+ </div>
651
+ </>
652
+ )}
653
+ </Spin>
654
+ </div>
660
655
  </div>
661
656
  );
662
657
  }
@@ -1,4 +1,3 @@
1
- /* 查询表单:仅作用于 .searchForm__c,避免污染全局 Ant 组件 */
2
1
  .searchForm__c {
3
2
  --sf-accent: #1890ff;
4
3
  --sf-accent-soft: rgba(24, 144, 255, 0.12);
@@ -6,60 +5,36 @@
6
5
  --sf-text-secondary: #595959;
7
6
  --sf-text-muted: #8c8c8c;
8
7
  --sf-border: rgba(0, 0, 0, 0.08);
9
- --sf-radius: 10px;
10
8
  --sf-radius-sm: 8px;
11
- --sf-shadow: 0 1px 2px rgba(0, 0, 0, 0.04), 0 8px 24px rgba(0, 0, 0, 0.06);
12
9
 
13
10
  color: var(--sf-text);
14
-
15
- .searchForm__c-card {
16
- border-radius: var(--sf-radius);
17
- border: 1px solid var(--sf-border);
18
- box-shadow: var(--sf-shadow);
19
- background: #fff;
20
- overflow: hidden;
21
- transition: box-shadow 0.25s ease, border-color 0.25s ease;
22
-
23
- &:hover {
24
- border-color: rgba(24, 144, 255, 0.18);
25
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04), 0 12px 32px rgba(0, 0, 0, 0.08);
26
- }
27
-
28
- .ant-card-body {
29
- padding: 20px 24px 22px;
30
- }
31
- }
11
+ padding: 12px 24px;
12
+ box-sizing: border-box;
13
+ background: #fff;
32
14
 
33
15
  .form-header {
34
16
  display: flex;
35
- align-items: flex-start;
36
- gap: 14px;
17
+ align-items: center;
18
+ height: 38px;
19
+ padding: 0 12px;
37
20
  margin: 0 0 20px;
38
- padding-bottom: 16px;
39
- border-bottom: 1px solid var(--sf-border);
40
-
41
- &::before {
42
- content: '';
43
- flex-shrink: 0;
44
- width: 4px;
45
- min-height: 22px;
46
- margin-top: 3px;
47
- border-radius: 2px;
48
- background: linear-gradient(180deg, var(--sf-accent) 0%, #69c0ff 100%);
49
- }
21
+ box-sizing: border-box;
22
+ background: #f5f5f5;
23
+ border-radius: 8px;
50
24
 
51
25
  .form-header-text {
52
26
  flex: 1;
53
27
  min-width: 0;
28
+ display: flex;
29
+ align-items: center;
54
30
  }
55
31
 
56
32
  .form-title {
57
33
  margin: 0;
58
- font-size: 17px;
59
- font-weight: 600;
34
+ font-size: 14px;
35
+ font-weight: 500;
60
36
  color: var(--sf-text);
61
- letter-spacing: -0.02em;
62
- line-height: 1.35;
37
+ line-height: 1.2;
63
38
  }
64
39
 
65
40
  .form-tenant {
@@ -88,18 +63,35 @@
88
63
  }
89
64
 
90
65
  .ant-form {
66
+ // 横向布局:标签列与控件列垂直居中(Form.Item 外层为 flex 行)
67
+ &.ant-form-horizontal .ant-form-item {
68
+ align-items: center;
69
+ }
70
+
71
+ // 多行文本控件较高,标签与控件顶部对齐更自然
72
+ &.ant-form-horizontal .ant-form-item:has(.ant-input-textarea) {
73
+ align-items: flex-start;
74
+
75
+ .ant-form-item-label > label {
76
+ margin-top: 4px;
77
+ }
78
+ }
79
+
91
80
  .ant-form-item {
92
81
  margin-bottom: 18px;
93
82
 
94
83
  .ant-form-item-label {
95
- padding-bottom: 4px;
84
+ // 横向布局下 label 在左侧,不应保留「纵向表单」的底部留白
85
+ padding-bottom: 0;
96
86
 
97
87
  > label {
98
- font-weight: 500;
88
+ font-weight: 400;
99
89
  color: var(--sf-text-secondary);
100
90
  font-size: 14px;
101
- height: auto;
102
- line-height: 1.5;
91
+ display: inline-flex;
92
+ align-items: center;
93
+ min-height: 32px;
94
+ line-height: 1.4;
103
95
  }
104
96
  }
105
97
 
@@ -183,25 +175,26 @@
183
175
  .form-actions {
184
176
  display: flex;
185
177
  justify-content: flex-end;
178
+ align-items: center;
186
179
  flex-wrap: wrap;
187
- gap: 12px;
188
180
  margin-top: 8px;
189
- padding-top: 20px;
190
- border-top: 1px solid var(--sf-border);
191
-
192
- .ant-space {
193
- flex-wrap: wrap;
194
- }
181
+ padding-top: 16px;
182
+ border-top: 1px solid rgba(0, 0, 0, 0.06);
195
183
 
196
184
  .ant-btn {
197
- min-width: 96px;
198
- height: 38px;
199
- padding: 0 18px;
185
+ height: 32px;
186
+ padding: 0 14px;
200
187
  font-size: 14px;
201
- border-radius: var(--sf-radius-sm);
202
- font-weight: 500;
188
+ border-radius: 16px;
189
+ font-weight: 400;
190
+ min-width: auto;
191
+ margin-left: 10px;
203
192
  transition: border-color 0.2s ease, background 0.2s ease, box-shadow 0.2s ease;
204
193
 
194
+ &:first-child {
195
+ margin-left: 0;
196
+ }
197
+
205
198
  &.ant-btn-primary {
206
199
  background: var(--sf-accent);
207
200
  border-color: var(--sf-accent);
@@ -279,17 +272,13 @@
279
272
  }
280
273
 
281
274
  @media (max-width: 768px) {
282
- .searchForm__c-card .ant-card-body {
283
- padding: 16px 16px 18px;
284
- }
275
+ padding: 16px 16px 18px;
285
276
 
286
277
  .form-header {
287
278
  margin-bottom: 16px;
288
- padding-bottom: 12px;
289
- gap: 10px;
290
279
 
291
280
  .form-title {
292
- font-size: 16px;
281
+ font-size: 13px;
293
282
  }
294
283
 
295
284
  .form-tenant {
@@ -307,8 +296,7 @@
307
296
  }
308
297
 
309
298
  .form-actions .ant-btn {
310
- min-width: 88px;
311
- height: 36px;
299
+ height: 32px;
312
300
  font-size: 13px;
313
301
  }
314
302
  }
@@ -316,7 +304,7 @@
316
304
 
317
305
  @media (max-width: 576px) {
318
306
  .form-header .form-title {
319
- font-size: 15px;
307
+ font-size: 13px;
320
308
  }
321
309
 
322
310
  .form-content {
@@ -326,19 +314,17 @@
326
314
  }
327
315
 
328
316
  .form-actions {
329
- justify-content: stretch;
330
-
331
- .ant-space {
332
- width: 100%;
333
- }
334
-
335
- .ant-space-item {
336
- flex: 1;
337
- }
317
+ flex-direction: column;
318
+ align-items: stretch;
338
319
 
339
320
  .ant-btn {
340
321
  width: 100%;
341
- min-width: 0;
322
+ margin-left: 0;
323
+ margin-top: 10px;
324
+
325
+ &:first-child {
326
+ margin-top: 0;
327
+ }
342
328
  }
343
329
  }
344
330
  }
@@ -53,7 +53,7 @@
53
53
  "@types/react-dom": "^16.9.15",
54
54
  "husky": "^4.2.5",
55
55
  "lint-staged": "^10.2.9",
56
- "neo-cmp-cli": "^1.13.11",
56
+ "neo-cmp-cli": "^1.13.13",
57
57
  "prettier": "^2.0.5"
58
58
  },
59
59
  "overrides": {