neo-cmp-cli 1.8.1 → 1.8.3

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 (201) hide show
  1. package/README.md +91 -7
  2. package/bin/neo.js +1 -1
  3. package/package.json +6 -5
  4. package/src/{module/index.js → index.js} +14 -14
  5. package/src/{module/main.js → main.js} +18 -18
  6. package/src/module/neoInitByCopy.js +6 -6
  7. package/src/neo/webpack.mf.js +1 -1
  8. package/src/oss/publish2oss.js +1 -1
  9. package/src/utils/cmpUtils/createCmpByZip.js +7 -5
  10. package/src/utils/cmpUtils/pullCmp.js +1 -1
  11. package/src/utils/cmpUtils/pushCmp.js +9 -7
  12. package/src/utils/projectUtils/updatePublishLog.js +1 -1
  13. package/test/demo.js +1 -1
  14. package/test/demo3.js +1 -1
  15. package/test/neo.config.js +77 -0
  16. package/src/template/antd-custom-cmp-template/.prettierrc.js +0 -12
  17. package/src/template/antd-custom-cmp-template/README.md +0 -153
  18. package/src/template/antd-custom-cmp-template/commitlint.config.js +0 -59
  19. package/src/template/antd-custom-cmp-template/neo.config.js +0 -144
  20. package/src/template/antd-custom-cmp-template/package.json +0 -60
  21. package/src/template/antd-custom-cmp-template/public/css/base.css +0 -283
  22. package/src/template/antd-custom-cmp-template/public/scripts/app/bluebird.js +0 -6679
  23. package/src/template/antd-custom-cmp-template/public/template.html +0 -13
  24. package/src/template/antd-custom-cmp-template/src/assets/css/common.scss +0 -127
  25. package/src/template/antd-custom-cmp-template/src/assets/css/mixin.scss +0 -47
  26. package/src/template/antd-custom-cmp-template/src/assets/img/NeoCRM.jpg +0 -0
  27. package/src/template/antd-custom-cmp-template/src/assets/img/custom-widget.svg +0 -1
  28. package/src/template/antd-custom-cmp-template/src/assets/img/favicon.png +0 -0
  29. package/src/template/antd-custom-cmp-template/src/components/dataDashboard/README.md +0 -39
  30. package/src/template/antd-custom-cmp-template/src/components/dataDashboard/index.tsx +0 -462
  31. package/src/template/antd-custom-cmp-template/src/components/dataDashboard/model.ts +0 -75
  32. package/src/template/antd-custom-cmp-template/src/components/dataDashboard/style.scss +0 -1667
  33. package/src/template/antd-custom-cmp-template/src/components/infoCard/index.tsx +0 -87
  34. package/src/template/antd-custom-cmp-template/src/components/infoCard/model.ts +0 -80
  35. package/src/template/antd-custom-cmp-template/src/components/infoCard/style.scss +0 -105
  36. package/src/template/antd-custom-cmp-template/tsconfig.json +0 -68
  37. package/src/template/develop/neo-custom-cmp-template/.prettierrc.js +0 -12
  38. package/src/template/develop/neo-custom-cmp-template/README.md +0 -48
  39. package/src/template/develop/neo-custom-cmp-template/commitlint.config.js +0 -59
  40. package/src/template/develop/neo-custom-cmp-template/docs/README.md +0 -13
  41. package/src/template/develop/neo-custom-cmp-template/neo.config.js +0 -121
  42. package/src/template/develop/neo-custom-cmp-template/package.json +0 -63
  43. package/src/template/develop/neo-custom-cmp-template/public/css/base.css +0 -283
  44. package/src/template/develop/neo-custom-cmp-template/public/scripts/app/bluebird.js +0 -6679
  45. package/src/template/develop/neo-custom-cmp-template/public/template.html +0 -13
  46. package/src/template/develop/neo-custom-cmp-template/src/assets/css/common.scss +0 -127
  47. package/src/template/develop/neo-custom-cmp-template/src/assets/css/mixin.scss +0 -47
  48. package/src/template/develop/neo-custom-cmp-template/src/assets/img/NeoCRM.jpg +0 -0
  49. package/src/template/develop/neo-custom-cmp-template/src/assets/img/custom-widget.svg +0 -1
  50. package/src/template/develop/neo-custom-cmp-template/src/assets/img/favicon.png +0 -0
  51. package/src/template/develop/neo-custom-cmp-template/src/assets/img/table.svg +0 -1
  52. package/src/template/develop/neo-custom-cmp-template/src/components/contactCardList/README.md +0 -65
  53. package/src/template/develop/neo-custom-cmp-template/src/components/contactCardList/index.tsx +0 -180
  54. package/src/template/develop/neo-custom-cmp-template/src/components/contactCardList/model.ts +0 -50
  55. package/src/template/develop/neo-custom-cmp-template/src/components/contactCardList/style.scss +0 -260
  56. package/src/template/develop/neo-custom-cmp-template/src/components/contactForm/README.md +0 -94
  57. package/src/template/develop/neo-custom-cmp-template/src/components/contactForm/index.tsx +0 -251
  58. package/src/template/develop/neo-custom-cmp-template/src/components/contactForm/model.ts +0 -56
  59. package/src/template/develop/neo-custom-cmp-template/src/components/contactForm/style.scss +0 -120
  60. package/src/template/develop/neo-custom-cmp-template/src/components/neoEntityGrid/README.md +0 -115
  61. package/src/template/develop/neo-custom-cmp-template/src/components/neoEntityGrid/index.tsx +0 -304
  62. package/src/template/develop/neo-custom-cmp-template/src/components/neoEntityGrid/model.ts +0 -87
  63. package/src/template/develop/neo-custom-cmp-template/src/components/neoEntityGrid/style.scss +0 -127
  64. package/src/template/develop/neo-custom-cmp-template/src/utils/axiosFetcher.ts +0 -29
  65. package/src/template/develop/neo-custom-cmp-template/src/utils/queryObjectData.ts +0 -39
  66. package/src/template/develop/neo-custom-cmp-template/src/utils/xobjects.ts +0 -203
  67. package/src/template/develop/neo-custom-cmp-template/tsconfig.json +0 -68
  68. package/src/template/echarts-custom-cmp-template/.prettierrc.js +0 -12
  69. package/src/template/echarts-custom-cmp-template/README.md +0 -198
  70. package/src/template/echarts-custom-cmp-template/commitlint.config.js +0 -59
  71. package/src/template/echarts-custom-cmp-template/neo.config.js +0 -140
  72. package/src/template/echarts-custom-cmp-template/package.json +0 -61
  73. package/src/template/echarts-custom-cmp-template/public/css/base.css +0 -283
  74. package/src/template/echarts-custom-cmp-template/public/scripts/app/bluebird.js +0 -6679
  75. package/src/template/echarts-custom-cmp-template/public/template.html +0 -13
  76. package/src/template/echarts-custom-cmp-template/src/assets/css/common.scss +0 -127
  77. package/src/template/echarts-custom-cmp-template/src/assets/css/mixin.scss +0 -47
  78. package/src/template/echarts-custom-cmp-template/src/assets/img/NeoCRM.jpg +0 -0
  79. package/src/template/echarts-custom-cmp-template/src/assets/img/chart.svg +0 -1
  80. package/src/template/echarts-custom-cmp-template/src/assets/img/custom-widget.svg +0 -1
  81. package/src/template/echarts-custom-cmp-template/src/assets/img/favicon.png +0 -0
  82. package/src/template/echarts-custom-cmp-template/src/components/chartWidget/README.md +0 -186
  83. package/src/template/echarts-custom-cmp-template/src/components/chartWidget/index.tsx +0 -724
  84. package/src/template/echarts-custom-cmp-template/src/components/chartWidget/model.ts +0 -151
  85. package/src/template/echarts-custom-cmp-template/src/components/chartWidget/style.scss +0 -209
  86. package/src/template/echarts-custom-cmp-template/src/components/mapWidget/README.md +0 -125
  87. package/src/template/echarts-custom-cmp-template/src/components/mapWidget/USAGE.md +0 -190
  88. package/src/template/echarts-custom-cmp-template/src/components/mapWidget/index.tsx +0 -385
  89. package/src/template/echarts-custom-cmp-template/src/components/mapWidget/model.ts +0 -107
  90. package/src/template/echarts-custom-cmp-template/src/components/mapWidget/style.scss +0 -192
  91. package/src/template/echarts-custom-cmp-template/src/utils/url.ts +0 -82
  92. package/src/template/echarts-custom-cmp-template/tsconfig.json +0 -68
  93. package/src/template/empty-cmp/index.tsx +0 -58
  94. package/src/template/empty-cmp/model.ts +0 -79
  95. package/src/template/empty-cmp/style.scss +0 -72
  96. package/src/template/empty-custom-cmp-template/.prettierrc.js +0 -12
  97. package/src/template/empty-custom-cmp-template/README.md +0 -154
  98. package/src/template/empty-custom-cmp-template/commitlint.config.js +0 -59
  99. package/src/template/empty-custom-cmp-template/neo.config.js +0 -138
  100. package/src/template/empty-custom-cmp-template/package.json +0 -58
  101. package/src/template/empty-custom-cmp-template/public/css/base.css +0 -283
  102. package/src/template/empty-custom-cmp-template/public/scripts/app/bluebird.js +0 -6679
  103. package/src/template/empty-custom-cmp-template/public/template.html +0 -13
  104. package/src/template/empty-custom-cmp-template/src/assets/css/common.scss +0 -127
  105. package/src/template/empty-custom-cmp-template/src/assets/css/mixin.scss +0 -47
  106. package/src/template/empty-custom-cmp-template/src/assets/img/NeoCRM.jpg +0 -0
  107. package/src/template/empty-custom-cmp-template/src/assets/img/custom-widget.svg +0 -1
  108. package/src/template/empty-custom-cmp-template/src/assets/img/favicon.png +0 -0
  109. package/src/template/empty-custom-cmp-template/src/assets/img/map.svg +0 -1
  110. package/src/template/empty-custom-cmp-template/src/components/README.md +0 -3
  111. package/src/template/empty-custom-cmp-template/tsconfig.json +0 -68
  112. package/src/template/neo-custom-cmp-template/.prettierrc.js +0 -12
  113. package/src/template/neo-custom-cmp-template/README.md +0 -155
  114. package/src/template/neo-custom-cmp-template/commitlint.config.js +0 -59
  115. package/src/template/neo-custom-cmp-template/docs/README.md +0 -244
  116. package/src/template/neo-custom-cmp-template/neo.config.js +0 -140
  117. package/src/template/neo-custom-cmp-template/package.json +0 -66
  118. package/src/template/neo-custom-cmp-template/public/css/base.css +0 -283
  119. package/src/template/neo-custom-cmp-template/public/scripts/app/bluebird.js +0 -6679
  120. package/src/template/neo-custom-cmp-template/public/template.html +0 -13
  121. package/src/template/neo-custom-cmp-template/src/assets/css/common.scss +0 -127
  122. package/src/template/neo-custom-cmp-template/src/assets/css/mixin.scss +0 -47
  123. package/src/template/neo-custom-cmp-template/src/assets/img/NeoCRM.jpg +0 -0
  124. package/src/template/neo-custom-cmp-template/src/assets/img/card-list.svg +0 -1
  125. package/src/template/neo-custom-cmp-template/src/assets/img/contact-form.svg +0 -1
  126. package/src/template/neo-custom-cmp-template/src/assets/img/custom-form.svg +0 -1
  127. package/src/template/neo-custom-cmp-template/src/assets/img/custom-widget.svg +0 -1
  128. package/src/template/neo-custom-cmp-template/src/assets/img/data-list.svg +0 -1
  129. package/src/template/neo-custom-cmp-template/src/assets/img/detail.svg +0 -1
  130. package/src/template/neo-custom-cmp-template/src/assets/img/table.svg +0 -1
  131. package/src/template/neo-custom-cmp-template/src/components/entityCardList/README.md +0 -61
  132. package/src/template/neo-custom-cmp-template/src/components/entityCardList/index.tsx +0 -202
  133. package/src/template/neo-custom-cmp-template/src/components/entityCardList/model.ts +0 -74
  134. package/src/template/neo-custom-cmp-template/src/components/entityCardList/style.scss +0 -260
  135. package/src/template/neo-custom-cmp-template/src/components/entityDetail/README.md +0 -176
  136. package/src/template/neo-custom-cmp-template/src/components/entityDetail/index.tsx +0 -334
  137. package/src/template/neo-custom-cmp-template/src/components/entityDetail/model.ts +0 -123
  138. package/src/template/neo-custom-cmp-template/src/components/entityDetail/style.scss +0 -292
  139. package/src/template/neo-custom-cmp-template/src/components/entityForm/README.md +0 -176
  140. package/src/template/neo-custom-cmp-template/src/components/entityForm/index.tsx +0 -615
  141. package/src/template/neo-custom-cmp-template/src/components/entityForm/model.ts +0 -107
  142. package/src/template/neo-custom-cmp-template/src/components/entityForm/style.scss +0 -370
  143. package/src/template/neo-custom-cmp-template/src/components/entityTable/README.md +0 -92
  144. package/src/template/neo-custom-cmp-template/src/components/entityTable/index.tsx +0 -784
  145. package/src/template/neo-custom-cmp-template/src/components/entityTable/model.ts +0 -134
  146. package/src/template/neo-custom-cmp-template/src/components/entityTable/style.scss +0 -304
  147. package/src/template/neo-custom-cmp-template/src/utils/axiosFetcher.ts +0 -37
  148. package/src/template/neo-custom-cmp-template/src/utils/queryObjectData.ts +0 -76
  149. package/src/template/neo-custom-cmp-template/src/utils/xobjects.ts +0 -162
  150. package/src/template/neo-custom-cmp-template/tsconfig.json +0 -49
  151. package/src/template/react-custom-cmp-template/.prettierrc.js +0 -12
  152. package/src/template/react-custom-cmp-template/README.md +0 -154
  153. package/src/template/react-custom-cmp-template/commitlint.config.js +0 -59
  154. package/src/template/react-custom-cmp-template/neo.config.js +0 -137
  155. package/src/template/react-custom-cmp-template/package.json +0 -57
  156. package/src/template/react-custom-cmp-template/public/css/base.css +0 -283
  157. package/src/template/react-custom-cmp-template/public/scripts/app/bluebird.js +0 -6679
  158. package/src/template/react-custom-cmp-template/public/template.html +0 -13
  159. package/src/template/react-custom-cmp-template/src/assets/css/common.scss +0 -127
  160. package/src/template/react-custom-cmp-template/src/assets/css/mixin.scss +0 -47
  161. package/src/template/react-custom-cmp-template/src/assets/img/NeoCRM.jpg +0 -0
  162. package/src/template/react-custom-cmp-template/src/assets/img/custom-widget.svg +0 -1
  163. package/src/template/react-custom-cmp-template/src/assets/img/favicon.png +0 -0
  164. package/src/template/react-custom-cmp-template/src/components/infoCard/index.jsx +0 -45
  165. package/src/template/react-custom-cmp-template/src/components/infoCard/model.js +0 -81
  166. package/src/template/react-custom-cmp-template/src/components/infoCard/style.scss +0 -67
  167. package/src/template/react-ts-custom-cmp-template/.prettierrc.js +0 -12
  168. package/src/template/react-ts-custom-cmp-template/README.md +0 -154
  169. package/src/template/react-ts-custom-cmp-template/commitlint.config.js +0 -59
  170. package/src/template/react-ts-custom-cmp-template/neo.config.js +0 -138
  171. package/src/template/react-ts-custom-cmp-template/package.json +0 -59
  172. package/src/template/react-ts-custom-cmp-template/public/css/base.css +0 -283
  173. package/src/template/react-ts-custom-cmp-template/public/scripts/app/bluebird.js +0 -6679
  174. package/src/template/react-ts-custom-cmp-template/public/template.html +0 -13
  175. package/src/template/react-ts-custom-cmp-template/src/assets/css/common.scss +0 -127
  176. package/src/template/react-ts-custom-cmp-template/src/assets/css/mixin.scss +0 -47
  177. package/src/template/react-ts-custom-cmp-template/src/assets/img/NeoCRM.jpg +0 -0
  178. package/src/template/react-ts-custom-cmp-template/src/assets/img/custom-widget.svg +0 -1
  179. package/src/template/react-ts-custom-cmp-template/src/assets/img/favicon.png +0 -0
  180. package/src/template/react-ts-custom-cmp-template/src/assets/img/map.svg +0 -1
  181. package/src/template/react-ts-custom-cmp-template/src/components/listWidget/README.md +0 -2
  182. package/src/template/react-ts-custom-cmp-template/src/components/listWidget/index.tsx +0 -208
  183. package/src/template/react-ts-custom-cmp-template/src/components/listWidget/model.ts +0 -92
  184. package/src/template/react-ts-custom-cmp-template/src/components/listWidget/style.scss +0 -350
  185. package/src/template/react-ts-custom-cmp-template/tsconfig.json +0 -68
  186. package/src/template/vue2-custom-cmp-template/.prettierrc.js +0 -12
  187. package/src/template/vue2-custom-cmp-template/README.md +0 -154
  188. package/src/template/vue2-custom-cmp-template/commitlint.config.js +0 -59
  189. package/src/template/vue2-custom-cmp-template/neo.config.js +0 -146
  190. package/src/template/vue2-custom-cmp-template/package.json +0 -59
  191. package/src/template/vue2-custom-cmp-template/public/css/base.css +0 -283
  192. package/src/template/vue2-custom-cmp-template/public/scripts/app/bluebird.js +0 -6679
  193. package/src/template/vue2-custom-cmp-template/public/template.html +0 -13
  194. package/src/template/vue2-custom-cmp-template/src/assets/css/common.scss +0 -126
  195. package/src/template/vue2-custom-cmp-template/src/assets/css/mixin.scss +0 -47
  196. package/src/template/vue2-custom-cmp-template/src/assets/img/NeoCRM.jpg +0 -0
  197. package/src/template/vue2-custom-cmp-template/src/assets/img/custom-widget.svg +0 -1
  198. package/src/template/vue2-custom-cmp-template/src/assets/img/favicon.png +0 -0
  199. package/src/template/vue2-custom-cmp-template/src/components/vueInfoCard/index.vue +0 -131
  200. package/src/template/vue2-custom-cmp-template/src/components/vueInfoCard/model.js +0 -81
  201. package/src/utils/getConfigObj.js +0 -18
@@ -1,334 +0,0 @@
1
- import * as React from 'react';
2
- import {
3
- Card,
4
- Row,
5
- Col,
6
- Spin,
7
- Empty,
8
- Descriptions,
9
- Button,
10
- Tag,
11
- Divider,
12
- Typography,
13
- } from 'antd';
14
- import {
15
- ReloadOutlined,
16
- InfoCircleOutlined,
17
- CheckCircleOutlined,
18
- CloseCircleOutlined,
19
- } from '@ant-design/icons';
20
- // @ts-ignore
21
- import { xObject } from 'neo-open-api'; // Neo OpenAPI SDK
22
- import './style.scss';
23
-
24
- const { Title, Text } = Typography;
25
-
26
- interface EntityDetailProps {
27
- title?: string;
28
- xObjectDetailApi?: {
29
- xObjectApiKey: string;
30
- objectId: string;
31
- fieldDescList?: any[];
32
- autoFetchData?: boolean;
33
- };
34
- columnCount?: number;
35
- showTitle?: boolean;
36
- data?: any;
37
- entityData?: any;
38
- }
39
-
40
- interface FieldDescription {
41
- apiKey: string;
42
- label: string;
43
- type: string;
44
- [key: string]: any;
45
- }
46
-
47
- interface EntityDetailState {
48
- detailData: any;
49
- fieldDescriptions: FieldDescription[];
50
- loading: boolean;
51
- error: string | null;
52
- }
53
-
54
- export default class EntityDetail extends React.PureComponent<
55
- EntityDetailProps,
56
- EntityDetailState
57
- > {
58
- constructor(props: EntityDetailProps) {
59
- super(props);
60
-
61
- this.state = {
62
- detailData: {},
63
- fieldDescriptions: [],
64
- loading: false,
65
- error: null,
66
- };
67
-
68
- this.loadEntityDetail = this.loadEntityDetail.bind(this);
69
- this.loadFieldDescriptions = this.loadFieldDescriptions.bind(this);
70
- }
71
-
72
- componentDidMount() {
73
- this.loadData();
74
- }
75
-
76
- componentDidUpdate(prevProps: EntityDetailProps) {
77
- const { xObjectDetailApi } = this.props;
78
- if (
79
- xObjectDetailApi?.xObjectApiKey !==
80
- prevProps.xObjectDetailApi?.xObjectApiKey ||
81
- xObjectDetailApi?.objectId !== prevProps.xObjectDetailApi?.objectId
82
- ) {
83
- this.loadData();
84
- }
85
- }
86
-
87
- async loadData() {
88
- const { xObjectDetailApi } = this.props;
89
- if (!xObjectDetailApi?.xObjectApiKey || !xObjectDetailApi?.objectId) {
90
- this.setState({
91
- error: '缺少必要参数:实体类型或业务数据ID',
92
- loading: false,
93
- });
94
- return;
95
- }
96
-
97
- await Promise.all([this.loadFieldDescriptions(), this.loadEntityDetail()]);
98
- }
99
-
100
- async loadFieldDescriptions() {
101
- const xObjectDetailApi: any = this.props.xObjectDetailApi || {};
102
- const { autoFetchData } = xObjectDetailApi;
103
-
104
- if (autoFetchData) {
105
- // 方式一:直接从 props.xObjectDetailApi 中获取字段描述(当开启「自动获取数据」时可用)
106
- if (xObjectDetailApi && xObjectDetailApi.fieldDescList) {
107
- this.setState({ fieldDescriptions: xObjectDetailApi.fieldDescList });
108
- }
109
- } else {
110
- // 方式二:自行通过 OpenAPI SDK 获取字段描述
111
- if (!xObjectDetailApi.xObjectApiKey) return;
112
- const result = await xObject.getDesc(xObjectDetailApi.xObjectApiKey);
113
- if (result?.status) {
114
- const fields = result.data?.fields || [];
115
- this.setState({ fieldDescriptions: fields });
116
- }
117
- }
118
- }
119
-
120
- async loadEntityDetail() {
121
- const xObjectDetailApi: any = this.props.xObjectDetailApi || {};
122
- if (!xObjectDetailApi.xObjectApiKey || !xObjectDetailApi.objectId) return;
123
- const { autoFetchData } = xObjectDetailApi;
124
-
125
- if (autoFetchData) {
126
- // 方式一:直接从 props 中取实体数据源相关数据
127
- const { entityData: detailData } = this.props;
128
- if (detailData) {
129
- this.setState({ detailData });
130
- }
131
- } else {
132
- // 方式二:使用 Neo Open API SDK 获取详情数据
133
- this.setState({ loading: true, error: null });
134
-
135
- const result = await xObject.get(xObjectDetailApi);
136
-
137
- if (result?.status) {
138
- const data = result.data || {};
139
- this.setState({
140
- detailData: data,
141
- loading: false,
142
- });
143
- } else {
144
- this.setState({
145
- error: result?.msg || '获取详情数据失败',
146
- loading: false,
147
- });
148
- }
149
- }
150
- }
151
-
152
- getFieldLabel(apiKey: string): string {
153
- const { fieldDescriptions } = this.state;
154
- const field = fieldDescriptions.find((f) => f.apiKey === apiKey);
155
- return field?.label || apiKey;
156
- }
157
-
158
- getFieldType(apiKey: string): string {
159
- const { fieldDescriptions } = this.state;
160
- const field = fieldDescriptions.find((f) => f.apiKey === apiKey);
161
- return field?.type || 'text';
162
- }
163
-
164
- renderFieldValue(value: any, fieldType: string) {
165
- if (value === null || value === undefined || value === '') {
166
- return <Text type="secondary">-</Text>;
167
- }
168
-
169
- // 根据字段类型渲染不同的值
170
- switch (fieldType) {
171
- case 'boolean':
172
- return value ? (
173
- <Tag icon={<CheckCircleOutlined />} color="success">
174
-
175
- </Tag>
176
- ) : (
177
- <Tag icon={<CloseCircleOutlined />} color="default">
178
-
179
- </Tag>
180
- );
181
- case 'date':
182
- case 'datetime':
183
- return new Date(value).toLocaleString('zh-CN');
184
- case 'number':
185
- case 'currency':
186
- case 'percent':
187
- return typeof value === 'number'
188
- ? value.toLocaleString('zh-CN')
189
- : value;
190
- case 'url':
191
- return (
192
- <a href={value} target="_blank" rel="noopener noreferrer">
193
- {value}
194
- </a>
195
- );
196
- case 'email':
197
- return <a href={`mailto:${value}`}>{value}</a>;
198
- case 'phone':
199
- return <a href={`tel:${value}`}>{value}</a>;
200
- default:
201
- return String(value);
202
- }
203
- }
204
-
205
- renderDetailContent() {
206
- const { detailData } = this.state;
207
- const { columnCount = 3 } = this.props;
208
-
209
- if (!detailData || Object.keys(detailData).length === 0) {
210
- return (
211
- <Empty
212
- image={Empty.PRESENTED_IMAGE_SIMPLE}
213
- description="暂无详情数据"
214
- />
215
- );
216
- }
217
-
218
- // 过滤系统字段和空字段
219
- const displayFields = Object.keys(detailData).filter(
220
- (key) =>
221
- // 可以根据需要自定义过滤规则
222
- !key.startsWith('_') && detailData[key] !== undefined,
223
- );
224
-
225
- // 将字段分成多组,每组对应一列
226
- const fieldsPerColumn = Math.ceil(displayFields.length / columnCount);
227
- const columnGroups: string[][] = [];
228
-
229
- for (let i = 0; i < columnCount; i++) {
230
- const start = i * fieldsPerColumn;
231
- const end = start + fieldsPerColumn;
232
- columnGroups.push(displayFields.slice(start, end));
233
- }
234
-
235
- return (
236
- <Row gutter={[24, 24]}>
237
- {columnGroups.map((fields, colIndex) => (
238
- <Col xs={24} sm={24} md={24 / columnCount} key={colIndex}>
239
- <Card className="detail-column-card" bordered={false} size="small">
240
- <Descriptions
241
- column={1}
242
- size="middle"
243
- bordered
244
- labelStyle={{
245
- fontWeight: 500,
246
- backgroundColor: '#fafafa',
247
- width: '35%',
248
- }}
249
- contentStyle={{
250
- backgroundColor: '#ffffff',
251
- }}
252
- >
253
- {fields.map((fieldKey) => {
254
- const fieldType = this.getFieldType(fieldKey);
255
- const fieldLabel = this.getFieldLabel(fieldKey);
256
- const fieldValue = detailData[fieldKey];
257
-
258
- return (
259
- <Descriptions.Item label={fieldLabel} key={fieldKey}>
260
- {this.renderFieldValue(fieldValue, fieldType)}
261
- </Descriptions.Item>
262
- );
263
- })}
264
- </Descriptions>
265
- </Card>
266
- </Col>
267
- ))}
268
- </Row>
269
- );
270
- }
271
-
272
- render() {
273
- const { title, showTitle = true } = this.props;
274
- const { loading, error } = this.state;
275
- const curAmisData = this.props.data || {};
276
- const systemInfo = curAmisData.__NeoSystemInfo || {};
277
- console.log('this.props:', this.props);
278
-
279
- return (
280
- <div className="entity-detail-container">
281
- {showTitle && (
282
- <div className="detail-header">
283
- <div className="header-content">
284
- <Title level={4} className="header-title">
285
- <InfoCircleOutlined className="title-icon" />
286
- {title || '实体数据详情'}
287
- {systemInfo.tenantName ? (
288
- <Tag color="blue" style={{ marginLeft: 8 }}>
289
- {systemInfo.tenantName}
290
- </Tag>
291
- ) : null}
292
- </Title>
293
- <Button
294
- type="primary"
295
- icon={<ReloadOutlined />}
296
- onClick={this.loadEntityDetail}
297
- loading={loading}
298
- className="refresh-button"
299
- size="small"
300
- >
301
- 刷新
302
- </Button>
303
- </div>
304
- <Divider style={{ margin: '12px 0' }} />
305
- </div>
306
- )}
307
-
308
- <div className="detail-content">
309
- <Spin spinning={loading} tip="加载详情数据中...">
310
- {error ? (
311
- <div className="error-container">
312
- <Empty
313
- image={Empty.PRESENTED_IMAGE_SIMPLE}
314
- description={
315
- <div>
316
- <div style={{ color: '#ff4d4f', marginBottom: 8 }}>
317
- {error}
318
- </div>
319
- <Button type="primary" onClick={this.loadEntityDetail}>
320
- 重新加载
321
- </Button>
322
- </div>
323
- }
324
- />
325
- </div>
326
- ) : (
327
- this.renderDetailContent()
328
- )}
329
- </Spin>
330
- </div>
331
- </div>
332
- );
333
- }
334
- }
@@ -1,123 +0,0 @@
1
- /**
2
- * @file 实体数据详情组件对接编辑器的描述文件
3
- * @description 定义组件在 Neo 平台编辑器中的配置信息
4
- */
5
- export class EntityDetailModel {
6
- /**
7
- * 组件类型标识
8
- * 用于标识组件的唯一性,在构建时根据当前组件目录名称自动生成
9
- * 注意:此字段在构建时会被自动替换,不需要手动设置
10
- */
11
- // cmpType: string = 'entityDetail';
12
-
13
- /** 组件名称,用于设置在编辑器左侧组件面板中展示的名称 */
14
- label: string = '实体数据详情';
15
-
16
- /** 组件描述,用于设置在编辑器左侧组件面板中展示的描述 */
17
- description: string = '展示实体数据详情信息,支持多列布局和字段类型识别';
18
-
19
- /** 分类标签,用于设置在编辑器左侧组件面板哪个分类中展示(可设置多个分类标签) */
20
- // tags: string[] = ['自定义组件'];
21
-
22
- /**
23
- * 用于设置组件支持的页面类型
24
- *
25
- * 当前 NeoCRM 平台存在的页面类型:
26
- * all: 1 全页面
27
- * indexPage: 2 首页
28
- * entityListPage: 3 实体列表页
29
- * entityFormPage: 4 实体表单页
30
- * entityDetailPage: 5 实体详情页
31
- * customPage: 6 自定义页面
32
- * bizPage: 7 业务页面
33
- */
34
- // targetPage: string[] = ['customPage'];
35
-
36
- /** 组件图标,用于设置在编辑器左侧组件面板中展示的图标 */
37
- iconSrc: string = 'https://custom-widgets.bj.bcebos.com/detail.svg';
38
-
39
- /** 初次插入页面的默认属性数据 */
40
- defaultComProps = {
41
- title: '实体数据详情',
42
- xObjectDetailApi: {
43
- xObjectApiKey: 'account',
44
- objectId: '',
45
- },
46
- columnCount: 3,
47
- showTitle: true,
48
- };
49
-
50
- /**
51
- * 组件属性配置模式
52
- * 定义组件在编辑器中可配置的属性
53
- */
54
- propsSchema = [
55
- {
56
- type: 'text',
57
- name: 'title',
58
- label: '标题',
59
- value: '实体数据详情',
60
- placeholder: '请输入标题',
61
- description: '组件顶部显示的标题',
62
- },
63
- {
64
- type: 'switch',
65
- name: 'showTitle',
66
- label: '显示标题栏',
67
- value: true,
68
- description: '是否显示组件顶部的标题和刷新按钮',
69
- },
70
- {
71
- type: 'xObjectDetailApi', // 用于选取对象业务详情数据的配置项
72
- name: 'xObjectDetailApi',
73
- label: '业务详情数据',
74
- showPage: false,
75
- showPageSize: false,
76
- },
77
- /*
78
- {
79
- type: 'xObjectEntityList', // 用于选取实体的配置项
80
- name: 'xObjectDetailApi.xObjectApiKey',
81
- label: '实体对象',
82
- helpText: '请选择要展示详情的实体对象',
83
- custom: false,
84
- value: 'account'
85
- },
86
- {
87
- type: 'text',
88
- name: 'xObjectDetailApi.objectId',
89
- label: '数据ID',
90
- value: '',
91
- placeholder: '请输入数据ID或使用上下文变量',
92
- description: '要展示的数据记录ID,支持变量:${recordId}',
93
- },
94
- */
95
- {
96
- type: 'select',
97
- name: 'columnCount',
98
- label: '列数',
99
- value: 3,
100
- options: [
101
- {
102
- label: '1列',
103
- value: 1,
104
- },
105
- {
106
- label: '2列',
107
- value: 2,
108
- },
109
- {
110
- label: '3列',
111
- value: 3,
112
- },
113
- {
114
- label: '4列',
115
- value: 4,
116
- },
117
- ],
118
- description: '详情页面的列数布局',
119
- },
120
- ];
121
- }
122
-
123
- export default EntityDetailModel;