neo-cmp-cli 1.8.2 → 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 (200) hide show
  1. package/bin/neo.js +1 -1
  2. package/package.json +6 -5
  3. package/src/{module/index.js → index.js} +14 -14
  4. package/src/{module/main.js → main.js} +18 -18
  5. package/src/module/neoInitByCopy.js +6 -6
  6. package/src/neo/webpack.mf.js +1 -1
  7. package/src/oss/publish2oss.js +1 -1
  8. package/src/utils/cmpUtils/createCmpByZip.js +7 -5
  9. package/src/utils/cmpUtils/pullCmp.js +1 -1
  10. package/src/utils/cmpUtils/pushCmp.js +9 -7
  11. package/src/utils/projectUtils/updatePublishLog.js +1 -1
  12. package/test/demo.js +1 -1
  13. package/test/demo3.js +1 -1
  14. package/test/neo.config.js +77 -0
  15. package/src/template/antd-custom-cmp-template/.prettierrc.js +0 -12
  16. package/src/template/antd-custom-cmp-template/README.md +0 -153
  17. package/src/template/antd-custom-cmp-template/commitlint.config.js +0 -59
  18. package/src/template/antd-custom-cmp-template/neo.config.js +0 -144
  19. package/src/template/antd-custom-cmp-template/package.json +0 -60
  20. package/src/template/antd-custom-cmp-template/public/css/base.css +0 -283
  21. package/src/template/antd-custom-cmp-template/public/scripts/app/bluebird.js +0 -6679
  22. package/src/template/antd-custom-cmp-template/public/template.html +0 -13
  23. package/src/template/antd-custom-cmp-template/src/assets/css/common.scss +0 -127
  24. package/src/template/antd-custom-cmp-template/src/assets/css/mixin.scss +0 -47
  25. package/src/template/antd-custom-cmp-template/src/assets/img/NeoCRM.jpg +0 -0
  26. package/src/template/antd-custom-cmp-template/src/assets/img/custom-widget.svg +0 -1
  27. package/src/template/antd-custom-cmp-template/src/assets/img/favicon.png +0 -0
  28. package/src/template/antd-custom-cmp-template/src/components/dataDashboard/README.md +0 -39
  29. package/src/template/antd-custom-cmp-template/src/components/dataDashboard/index.tsx +0 -462
  30. package/src/template/antd-custom-cmp-template/src/components/dataDashboard/model.ts +0 -75
  31. package/src/template/antd-custom-cmp-template/src/components/dataDashboard/style.scss +0 -1667
  32. package/src/template/antd-custom-cmp-template/src/components/infoCard/index.tsx +0 -87
  33. package/src/template/antd-custom-cmp-template/src/components/infoCard/model.ts +0 -80
  34. package/src/template/antd-custom-cmp-template/src/components/infoCard/style.scss +0 -105
  35. package/src/template/antd-custom-cmp-template/tsconfig.json +0 -68
  36. package/src/template/develop/neo-custom-cmp-template/.prettierrc.js +0 -12
  37. package/src/template/develop/neo-custom-cmp-template/README.md +0 -48
  38. package/src/template/develop/neo-custom-cmp-template/commitlint.config.js +0 -59
  39. package/src/template/develop/neo-custom-cmp-template/docs/README.md +0 -13
  40. package/src/template/develop/neo-custom-cmp-template/neo.config.js +0 -121
  41. package/src/template/develop/neo-custom-cmp-template/package.json +0 -63
  42. package/src/template/develop/neo-custom-cmp-template/public/css/base.css +0 -283
  43. package/src/template/develop/neo-custom-cmp-template/public/scripts/app/bluebird.js +0 -6679
  44. package/src/template/develop/neo-custom-cmp-template/public/template.html +0 -13
  45. package/src/template/develop/neo-custom-cmp-template/src/assets/css/common.scss +0 -127
  46. package/src/template/develop/neo-custom-cmp-template/src/assets/css/mixin.scss +0 -47
  47. package/src/template/develop/neo-custom-cmp-template/src/assets/img/NeoCRM.jpg +0 -0
  48. package/src/template/develop/neo-custom-cmp-template/src/assets/img/custom-widget.svg +0 -1
  49. package/src/template/develop/neo-custom-cmp-template/src/assets/img/favicon.png +0 -0
  50. package/src/template/develop/neo-custom-cmp-template/src/assets/img/table.svg +0 -1
  51. package/src/template/develop/neo-custom-cmp-template/src/components/contactCardList/README.md +0 -65
  52. package/src/template/develop/neo-custom-cmp-template/src/components/contactCardList/index.tsx +0 -180
  53. package/src/template/develop/neo-custom-cmp-template/src/components/contactCardList/model.ts +0 -50
  54. package/src/template/develop/neo-custom-cmp-template/src/components/contactCardList/style.scss +0 -260
  55. package/src/template/develop/neo-custom-cmp-template/src/components/contactForm/README.md +0 -94
  56. package/src/template/develop/neo-custom-cmp-template/src/components/contactForm/index.tsx +0 -251
  57. package/src/template/develop/neo-custom-cmp-template/src/components/contactForm/model.ts +0 -56
  58. package/src/template/develop/neo-custom-cmp-template/src/components/contactForm/style.scss +0 -120
  59. package/src/template/develop/neo-custom-cmp-template/src/components/neoEntityGrid/README.md +0 -115
  60. package/src/template/develop/neo-custom-cmp-template/src/components/neoEntityGrid/index.tsx +0 -304
  61. package/src/template/develop/neo-custom-cmp-template/src/components/neoEntityGrid/model.ts +0 -87
  62. package/src/template/develop/neo-custom-cmp-template/src/components/neoEntityGrid/style.scss +0 -127
  63. package/src/template/develop/neo-custom-cmp-template/src/utils/axiosFetcher.ts +0 -29
  64. package/src/template/develop/neo-custom-cmp-template/src/utils/queryObjectData.ts +0 -39
  65. package/src/template/develop/neo-custom-cmp-template/src/utils/xobjects.ts +0 -203
  66. package/src/template/develop/neo-custom-cmp-template/tsconfig.json +0 -68
  67. package/src/template/echarts-custom-cmp-template/.prettierrc.js +0 -12
  68. package/src/template/echarts-custom-cmp-template/README.md +0 -198
  69. package/src/template/echarts-custom-cmp-template/commitlint.config.js +0 -59
  70. package/src/template/echarts-custom-cmp-template/neo.config.js +0 -140
  71. package/src/template/echarts-custom-cmp-template/package.json +0 -61
  72. package/src/template/echarts-custom-cmp-template/public/css/base.css +0 -283
  73. package/src/template/echarts-custom-cmp-template/public/scripts/app/bluebird.js +0 -6679
  74. package/src/template/echarts-custom-cmp-template/public/template.html +0 -13
  75. package/src/template/echarts-custom-cmp-template/src/assets/css/common.scss +0 -127
  76. package/src/template/echarts-custom-cmp-template/src/assets/css/mixin.scss +0 -47
  77. package/src/template/echarts-custom-cmp-template/src/assets/img/NeoCRM.jpg +0 -0
  78. package/src/template/echarts-custom-cmp-template/src/assets/img/chart.svg +0 -1
  79. package/src/template/echarts-custom-cmp-template/src/assets/img/custom-widget.svg +0 -1
  80. package/src/template/echarts-custom-cmp-template/src/assets/img/favicon.png +0 -0
  81. package/src/template/echarts-custom-cmp-template/src/components/chartWidget/README.md +0 -186
  82. package/src/template/echarts-custom-cmp-template/src/components/chartWidget/index.tsx +0 -724
  83. package/src/template/echarts-custom-cmp-template/src/components/chartWidget/model.ts +0 -151
  84. package/src/template/echarts-custom-cmp-template/src/components/chartWidget/style.scss +0 -209
  85. package/src/template/echarts-custom-cmp-template/src/components/mapWidget/README.md +0 -125
  86. package/src/template/echarts-custom-cmp-template/src/components/mapWidget/USAGE.md +0 -190
  87. package/src/template/echarts-custom-cmp-template/src/components/mapWidget/index.tsx +0 -385
  88. package/src/template/echarts-custom-cmp-template/src/components/mapWidget/model.ts +0 -107
  89. package/src/template/echarts-custom-cmp-template/src/components/mapWidget/style.scss +0 -192
  90. package/src/template/echarts-custom-cmp-template/src/utils/url.ts +0 -82
  91. package/src/template/echarts-custom-cmp-template/tsconfig.json +0 -68
  92. package/src/template/empty-cmp/index.tsx +0 -58
  93. package/src/template/empty-cmp/model.ts +0 -79
  94. package/src/template/empty-cmp/style.scss +0 -72
  95. package/src/template/empty-custom-cmp-template/.prettierrc.js +0 -12
  96. package/src/template/empty-custom-cmp-template/README.md +0 -154
  97. package/src/template/empty-custom-cmp-template/commitlint.config.js +0 -59
  98. package/src/template/empty-custom-cmp-template/neo.config.js +0 -138
  99. package/src/template/empty-custom-cmp-template/package.json +0 -58
  100. package/src/template/empty-custom-cmp-template/public/css/base.css +0 -283
  101. package/src/template/empty-custom-cmp-template/public/scripts/app/bluebird.js +0 -6679
  102. package/src/template/empty-custom-cmp-template/public/template.html +0 -13
  103. package/src/template/empty-custom-cmp-template/src/assets/css/common.scss +0 -127
  104. package/src/template/empty-custom-cmp-template/src/assets/css/mixin.scss +0 -47
  105. package/src/template/empty-custom-cmp-template/src/assets/img/NeoCRM.jpg +0 -0
  106. package/src/template/empty-custom-cmp-template/src/assets/img/custom-widget.svg +0 -1
  107. package/src/template/empty-custom-cmp-template/src/assets/img/favicon.png +0 -0
  108. package/src/template/empty-custom-cmp-template/src/assets/img/map.svg +0 -1
  109. package/src/template/empty-custom-cmp-template/src/components/README.md +0 -3
  110. package/src/template/empty-custom-cmp-template/tsconfig.json +0 -68
  111. package/src/template/neo-custom-cmp-template/.prettierrc.js +0 -12
  112. package/src/template/neo-custom-cmp-template/README.md +0 -155
  113. package/src/template/neo-custom-cmp-template/commitlint.config.js +0 -59
  114. package/src/template/neo-custom-cmp-template/docs/README.md +0 -244
  115. package/src/template/neo-custom-cmp-template/neo.config.js +0 -140
  116. package/src/template/neo-custom-cmp-template/package.json +0 -66
  117. package/src/template/neo-custom-cmp-template/public/css/base.css +0 -283
  118. package/src/template/neo-custom-cmp-template/public/scripts/app/bluebird.js +0 -6679
  119. package/src/template/neo-custom-cmp-template/public/template.html +0 -13
  120. package/src/template/neo-custom-cmp-template/src/assets/css/common.scss +0 -127
  121. package/src/template/neo-custom-cmp-template/src/assets/css/mixin.scss +0 -47
  122. package/src/template/neo-custom-cmp-template/src/assets/img/NeoCRM.jpg +0 -0
  123. package/src/template/neo-custom-cmp-template/src/assets/img/card-list.svg +0 -1
  124. package/src/template/neo-custom-cmp-template/src/assets/img/contact-form.svg +0 -1
  125. package/src/template/neo-custom-cmp-template/src/assets/img/custom-form.svg +0 -1
  126. package/src/template/neo-custom-cmp-template/src/assets/img/custom-widget.svg +0 -1
  127. package/src/template/neo-custom-cmp-template/src/assets/img/data-list.svg +0 -1
  128. package/src/template/neo-custom-cmp-template/src/assets/img/detail.svg +0 -1
  129. package/src/template/neo-custom-cmp-template/src/assets/img/table.svg +0 -1
  130. package/src/template/neo-custom-cmp-template/src/components/entityCardList/README.md +0 -61
  131. package/src/template/neo-custom-cmp-template/src/components/entityCardList/index.tsx +0 -202
  132. package/src/template/neo-custom-cmp-template/src/components/entityCardList/model.ts +0 -74
  133. package/src/template/neo-custom-cmp-template/src/components/entityCardList/style.scss +0 -260
  134. package/src/template/neo-custom-cmp-template/src/components/entityDetail/README.md +0 -176
  135. package/src/template/neo-custom-cmp-template/src/components/entityDetail/index.tsx +0 -334
  136. package/src/template/neo-custom-cmp-template/src/components/entityDetail/model.ts +0 -123
  137. package/src/template/neo-custom-cmp-template/src/components/entityDetail/style.scss +0 -292
  138. package/src/template/neo-custom-cmp-template/src/components/entityForm/README.md +0 -176
  139. package/src/template/neo-custom-cmp-template/src/components/entityForm/index.tsx +0 -615
  140. package/src/template/neo-custom-cmp-template/src/components/entityForm/model.ts +0 -107
  141. package/src/template/neo-custom-cmp-template/src/components/entityForm/style.scss +0 -370
  142. package/src/template/neo-custom-cmp-template/src/components/entityTable/README.md +0 -92
  143. package/src/template/neo-custom-cmp-template/src/components/entityTable/index.tsx +0 -784
  144. package/src/template/neo-custom-cmp-template/src/components/entityTable/model.ts +0 -134
  145. package/src/template/neo-custom-cmp-template/src/components/entityTable/style.scss +0 -304
  146. package/src/template/neo-custom-cmp-template/src/utils/axiosFetcher.ts +0 -37
  147. package/src/template/neo-custom-cmp-template/src/utils/queryObjectData.ts +0 -76
  148. package/src/template/neo-custom-cmp-template/src/utils/xobjects.ts +0 -162
  149. package/src/template/neo-custom-cmp-template/tsconfig.json +0 -49
  150. package/src/template/react-custom-cmp-template/.prettierrc.js +0 -12
  151. package/src/template/react-custom-cmp-template/README.md +0 -154
  152. package/src/template/react-custom-cmp-template/commitlint.config.js +0 -59
  153. package/src/template/react-custom-cmp-template/neo.config.js +0 -137
  154. package/src/template/react-custom-cmp-template/package.json +0 -57
  155. package/src/template/react-custom-cmp-template/public/css/base.css +0 -283
  156. package/src/template/react-custom-cmp-template/public/scripts/app/bluebird.js +0 -6679
  157. package/src/template/react-custom-cmp-template/public/template.html +0 -13
  158. package/src/template/react-custom-cmp-template/src/assets/css/common.scss +0 -127
  159. package/src/template/react-custom-cmp-template/src/assets/css/mixin.scss +0 -47
  160. package/src/template/react-custom-cmp-template/src/assets/img/NeoCRM.jpg +0 -0
  161. package/src/template/react-custom-cmp-template/src/assets/img/custom-widget.svg +0 -1
  162. package/src/template/react-custom-cmp-template/src/assets/img/favicon.png +0 -0
  163. package/src/template/react-custom-cmp-template/src/components/infoCard/index.jsx +0 -45
  164. package/src/template/react-custom-cmp-template/src/components/infoCard/model.js +0 -81
  165. package/src/template/react-custom-cmp-template/src/components/infoCard/style.scss +0 -67
  166. package/src/template/react-ts-custom-cmp-template/.prettierrc.js +0 -12
  167. package/src/template/react-ts-custom-cmp-template/README.md +0 -154
  168. package/src/template/react-ts-custom-cmp-template/commitlint.config.js +0 -59
  169. package/src/template/react-ts-custom-cmp-template/neo.config.js +0 -138
  170. package/src/template/react-ts-custom-cmp-template/package.json +0 -59
  171. package/src/template/react-ts-custom-cmp-template/public/css/base.css +0 -283
  172. package/src/template/react-ts-custom-cmp-template/public/scripts/app/bluebird.js +0 -6679
  173. package/src/template/react-ts-custom-cmp-template/public/template.html +0 -13
  174. package/src/template/react-ts-custom-cmp-template/src/assets/css/common.scss +0 -127
  175. package/src/template/react-ts-custom-cmp-template/src/assets/css/mixin.scss +0 -47
  176. package/src/template/react-ts-custom-cmp-template/src/assets/img/NeoCRM.jpg +0 -0
  177. package/src/template/react-ts-custom-cmp-template/src/assets/img/custom-widget.svg +0 -1
  178. package/src/template/react-ts-custom-cmp-template/src/assets/img/favicon.png +0 -0
  179. package/src/template/react-ts-custom-cmp-template/src/assets/img/map.svg +0 -1
  180. package/src/template/react-ts-custom-cmp-template/src/components/listWidget/README.md +0 -2
  181. package/src/template/react-ts-custom-cmp-template/src/components/listWidget/index.tsx +0 -208
  182. package/src/template/react-ts-custom-cmp-template/src/components/listWidget/model.ts +0 -92
  183. package/src/template/react-ts-custom-cmp-template/src/components/listWidget/style.scss +0 -350
  184. package/src/template/react-ts-custom-cmp-template/tsconfig.json +0 -68
  185. package/src/template/vue2-custom-cmp-template/.prettierrc.js +0 -12
  186. package/src/template/vue2-custom-cmp-template/README.md +0 -154
  187. package/src/template/vue2-custom-cmp-template/commitlint.config.js +0 -59
  188. package/src/template/vue2-custom-cmp-template/neo.config.js +0 -146
  189. package/src/template/vue2-custom-cmp-template/package.json +0 -59
  190. package/src/template/vue2-custom-cmp-template/public/css/base.css +0 -283
  191. package/src/template/vue2-custom-cmp-template/public/scripts/app/bluebird.js +0 -6679
  192. package/src/template/vue2-custom-cmp-template/public/template.html +0 -13
  193. package/src/template/vue2-custom-cmp-template/src/assets/css/common.scss +0 -126
  194. package/src/template/vue2-custom-cmp-template/src/assets/css/mixin.scss +0 -47
  195. package/src/template/vue2-custom-cmp-template/src/assets/img/NeoCRM.jpg +0 -0
  196. package/src/template/vue2-custom-cmp-template/src/assets/img/custom-widget.svg +0 -1
  197. package/src/template/vue2-custom-cmp-template/src/assets/img/favicon.png +0 -0
  198. package/src/template/vue2-custom-cmp-template/src/components/vueInfoCard/index.vue +0 -131
  199. package/src/template/vue2-custom-cmp-template/src/components/vueInfoCard/model.js +0 -81
  200. 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;