aldehyde 0.2.449 → 0.2.452

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 (42) hide show
  1. package/lib/controls/enum-badge/index.d.ts.map +1 -1
  2. package/lib/controls/enum-badge/index.js +21 -3
  3. package/lib/controls/enum-badge/index.js.map +1 -1
  4. package/lib/controls/enum-tag/index.d.ts.map +1 -1
  5. package/lib/controls/enum-tag/index.js +34 -19
  6. package/lib/controls/enum-tag/index.js.map +1 -1
  7. package/lib/form/criteria-form.js +1 -1
  8. package/lib/form/criteria-form.js.map +1 -1
  9. package/lib/lowcode-components/base-image/index.d.ts.map +1 -1
  10. package/lib/lowcode-components/base-image/index.js +5 -2
  11. package/lib/lowcode-components/base-image/index.js.map +1 -1
  12. package/lib/table/pagination.js +2 -2
  13. package/lib/table/pagination.js.map +1 -1
  14. package/lib/table/query-table.d.ts.map +1 -1
  15. package/lib/table/query-table.js +3 -2
  16. package/lib/table/query-table.js.map +1 -1
  17. package/lib/table/select-table.d.ts.map +1 -1
  18. package/lib/table/select-table.js +2 -2
  19. package/lib/table/select-table.js.map +1 -1
  20. package/lib/tmpl/hc-data-source.d.ts +2 -2
  21. package/lib/tmpl/hc-data-source.d.ts.map +1 -1
  22. package/lib/tmpl/hc-data-source.js +24 -18
  23. package/lib/tmpl/hc-data-source.js.map +1 -1
  24. package/lib/tmpl/hcservice-v3.d.ts +4 -0
  25. package/lib/tmpl/hcservice-v3.d.ts.map +1 -1
  26. package/lib/tmpl/hcservice-v3.js +16 -0
  27. package/lib/tmpl/hcservice-v3.js.map +1 -1
  28. package/lib/tmpl/web-socket.d.ts +52 -0
  29. package/lib/tmpl/web-socket.d.ts.map +1 -0
  30. package/lib/tmpl/web-socket.js +355 -0
  31. package/lib/tmpl/web-socket.js.map +1 -0
  32. package/package.json +3 -1
  33. package/src/aldehyde/controls/enum-badge/index.tsx +14 -4
  34. package/src/aldehyde/controls/enum-tag/index.tsx +29 -21
  35. package/src/aldehyde/form/criteria-form.tsx +1 -1
  36. package/src/aldehyde/lowcode-components/base-image/index.tsx +5 -2
  37. package/src/aldehyde/table/pagination.tsx +2 -2
  38. package/src/aldehyde/table/query-table.tsx +2 -1
  39. package/src/aldehyde/table/select-table.tsx +2 -1
  40. package/src/aldehyde/tmpl/hc-data-source.tsx +13 -7
  41. package/src/aldehyde/tmpl/hcservice-v3.tsx +14 -0
  42. package/src/aldehyde/tmpl/web-socket.ts +367 -0
@@ -0,0 +1,355 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import SockJS from 'sockjs-client';
11
+ import { Client } from '@stomp/stompjs';
12
+ import Units from "../units";
13
+ /**
14
+ * 使用方法:
15
+ * const webSocket= WebSocket.getInstance(WS_URL); // 创建连接
16
+ * const subscribe = webSocket.subscribe('/topic/test',{}, (val)=>{console.log("推送的数据:",val)}); // 订阅
17
+ * subscribe.unsubscribe(); // 销毁订阅
18
+ * webSocket.disconnect(); // 关闭连接
19
+ */
20
+ // 获取订阅地址
21
+ const getWebSocketConfig = (path, options) => {
22
+ const serverKey = options.serverKey;
23
+ const header = options.connectionHeaders || {};
24
+ const programCode = header.programCode || Units.programCode(serverKey);
25
+ let server = new URL(options.hydrocarbonServer ? options.hydrocarbonServer : Units.api(serverKey));
26
+ let hydrocarbonToken = null;
27
+ if (header === null || header === void 0 ? void 0 : header.hydrocarbonToken) {
28
+ hydrocarbonToken = header.hydrocarbonToken;
29
+ }
30
+ else if (serverKey) {
31
+ hydrocarbonToken = Units.serverHydrocarbonToken(serverKey);
32
+ }
33
+ else if (Units.hydrocarbonToken(programCode)) {
34
+ hydrocarbonToken = Units.hydrocarbonToken(programCode);
35
+ }
36
+ else {
37
+ hydrocarbonToken = Units.getAnoHydrocarbonToken();
38
+ }
39
+ const url = `${server.protocol}//${server.host}${server.pathname}/${path}`;
40
+ return { url, hydrocarbonToken, programCode };
41
+ };
42
+ // 连接状态枚举
43
+ var ConnectionState;
44
+ (function (ConnectionState) {
45
+ ConnectionState["DISCONNECTED"] = "DISCONNECTED";
46
+ ConnectionState["CONNECTING"] = "CONNECTING";
47
+ ConnectionState["CONNECTED"] = "CONNECTED";
48
+ ConnectionState["RECONNECTING"] = "RECONNECTING";
49
+ })(ConnectionState || (ConnectionState = {}));
50
+ class WebSocket {
51
+ /**
52
+ * 获取单例实例的唯一入口
53
+ * @param url WebSocket 服务器地址
54
+ * @param options 配置项
55
+ * @returns 返回对应 URL 的唯一 WebSocket 实例
56
+ */
57
+ static getInstance(url, options = {}) {
58
+ if (!WebSocket.instances.has(url)) {
59
+ // 注意:这里调用的是私有的构造函数
60
+ const instance = new WebSocket(url, options);
61
+ WebSocket.instances.set(url, instance);
62
+ }
63
+ return WebSocket.instances.get(url);
64
+ }
65
+ /**
66
+ * 私有构造函数
67
+ * 防止外部直接使用 new WebSocket() 导致单例失效
68
+ */
69
+ constructor(url, options = {}) {
70
+ this.client = null;
71
+ this.subscriptions = new Map();
72
+ this.operationQueue = [];
73
+ this.state = ConnectionState.DISCONNECTED;
74
+ this.reconnectAttempts = 0;
75
+ this.reconnectTimer = null;
76
+ this.connectPromises = new Map();
77
+ this.config = {
78
+ reconnectDelay: 5000,
79
+ maxReconnectAttempts: 5,
80
+ heartbeatIncoming: 10000,
81
+ heartbeatOutgoing: 10000,
82
+ debug: false,
83
+ connectionHeaders: {},
84
+ };
85
+ this.url = url;
86
+ this.config = Object.assign(Object.assign({}, this.config), options);
87
+ this.connect();
88
+ }
89
+ // 建立连接
90
+ connect() {
91
+ if (this.state === ConnectionState.CONNECTED) { // 当前已连接不重复创建连接
92
+ return Promise.resolve();
93
+ }
94
+ this.state = ConnectionState.CONNECTING;
95
+ const { url: wsUrl, hydrocarbonToken, programCode } = getWebSocketConfig(this.url, this.config);
96
+ return new Promise((resolve, reject) => {
97
+ const currentPromiseId = Date.now().toString();
98
+ this.connectPromises.set(currentPromiseId, { resolve, reject });
99
+ const { heartbeatIncoming, heartbeatOutgoing, reconnectDelay } = this.config;
100
+ const socket = new SockJS(wsUrl);
101
+ this.client = new Client({
102
+ webSocketFactory: () => socket,
103
+ debug: this.config.debug ? (str) => console.log('[STOMP]', str) : () => { },
104
+ heartbeatIncoming,
105
+ heartbeatOutgoing,
106
+ reconnectDelay,
107
+ connectHeaders: {
108
+ "hydrocarbon-token": hydrocarbonToken,
109
+ "hydrocarbon-program-token": programCode
110
+ },
111
+ onConnect: (frame) => {
112
+ console.log("连接成功:frame", frame);
113
+ this.state = ConnectionState.CONNECTED;
114
+ this.reconnectAttempts = 0;
115
+ this.connectPromises.forEach(({ resolve }) => resolve());
116
+ this.connectPromises.clear();
117
+ this._restoreSubscriptions();
118
+ this._flushQueue().catch(console.error);
119
+ },
120
+ onStompError: (frame) => {
121
+ console.error('[WS] ❌ STOMP 协议错误', frame);
122
+ const error = new Error(frame.headers['message'] || 'STOMP Error');
123
+ if (this.state !== ConnectionState.DISCONNECTED) {
124
+ this.state = ConnectionState.DISCONNECTED;
125
+ this.client = null;
126
+ this._scheduleReconnect();
127
+ }
128
+ this.connectPromises.forEach(({ reject }) => reject(error));
129
+ this.connectPromises.clear();
130
+ },
131
+ onWebSocketClose: () => {
132
+ if ([ConnectionState.CONNECTED, ConnectionState.CONNECTING].includes(this.state)) {
133
+ console.warn('[WS] ⚠️ 连接意外断开,准备重连...');
134
+ this.state = ConnectionState.DISCONNECTED;
135
+ this.client = null;
136
+ this._scheduleReconnect(); // 断开重连
137
+ }
138
+ },
139
+ onWebSocketError: (error) => {
140
+ console.error('[WS] ❌ WebSocket 错误', error);
141
+ const wsError = new Error('WebSocket Error');
142
+ if (this.state !== ConnectionState.DISCONNECTED) {
143
+ this.state = ConnectionState.DISCONNECTED;
144
+ this.client = null;
145
+ this._scheduleReconnect();
146
+ }
147
+ this.connectPromises.forEach(({ reject }) => reject(wsError));
148
+ this.connectPromises.clear();
149
+ },
150
+ });
151
+ this.client.activate();
152
+ });
153
+ }
154
+ // 订阅请求
155
+ subscribe(topic, params, callback) {
156
+ return __awaiter(this, void 0, void 0, function* () {
157
+ if (this.state === ConnectionState.CONNECTED && this.client) {
158
+ return this._doSubscribe(topic, callback, params);
159
+ }
160
+ else {
161
+ return new Promise((resolve, reject) => {
162
+ this.operationQueue.push({
163
+ type: 'SUBSCRIBE',
164
+ payload: { topic, callback, resolve, reject, params },
165
+ });
166
+ });
167
+ }
168
+ });
169
+ }
170
+ // 执行实际订阅
171
+ _doSubscribe(topic, callback, params) {
172
+ return new Promise((resolve, reject) => {
173
+ if (!this.client) {
174
+ reject(new Error('Client not initialized'));
175
+ return;
176
+ }
177
+ try {
178
+ const stompSub = this.client.subscribe(topic, (message) => {
179
+ try {
180
+ let body = message.body;
181
+ if (typeof message.body === 'string') {
182
+ body = JSON.parse(message.body);
183
+ }
184
+ callback(body, message);
185
+ }
186
+ catch (e) {
187
+ console.error('[WS] JSON 解析错误', e);
188
+ callback(message.body, message);
189
+ }
190
+ }, params || {});
191
+ // 3. 更新内存记录
192
+ this.subscriptions.set(topic, {
193
+ topic,
194
+ callback,
195
+ subscription: stompSub // 关键:确保新的 subscription 对象被保存
196
+ });
197
+ resolve(stompSub);
198
+ }
199
+ catch (error) {
200
+ reject(error);
201
+ }
202
+ });
203
+ }
204
+ // 发送消息
205
+ send(destination, body) {
206
+ if (this.state === ConnectionState.CONNECTED && this.client) {
207
+ try {
208
+ this.client.publish({
209
+ destination,
210
+ body: typeof body === 'string' ? body : JSON.stringify(body),
211
+ headers: { 'content-type': 'application/json' },
212
+ });
213
+ }
214
+ catch (error) {
215
+ console.error('[WS] 发送消息失败:', error);
216
+ }
217
+ }
218
+ else {
219
+ this.operationQueue.push({ type: 'SEND', payload: { destination, body } });
220
+ }
221
+ }
222
+ // 取消订阅
223
+ unsubscribe(topic) {
224
+ var _a;
225
+ const record = this.subscriptions.get(topic);
226
+ if (record) {
227
+ (_a = record.subscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
228
+ this.subscriptions.delete(topic);
229
+ console.log(`[WS] 🚫 已取消订阅: ${topic}`);
230
+ return true;
231
+ }
232
+ return false;
233
+ }
234
+ // 取消所有订阅
235
+ unsubscribeAll() {
236
+ this.subscriptions.forEach((record) => {
237
+ var _a;
238
+ (_a = record.subscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
239
+ });
240
+ this.subscriptions.clear();
241
+ console.log('[WS] 🚫 已取消所有订阅');
242
+ }
243
+ // 断开连接
244
+ disconnect() {
245
+ this.state = ConnectionState.DISCONNECTED;
246
+ if (this.reconnectTimer) {
247
+ clearTimeout(this.reconnectTimer);
248
+ this.reconnectTimer = null;
249
+ }
250
+ if (this.client) {
251
+ WebSocket.instances.delete(this.client.webSocket.url);
252
+ this.client.deactivate();
253
+ this.client = null;
254
+ }
255
+ this.unsubscribeAll();
256
+ this.operationQueue = [];
257
+ this.connectPromises.forEach(({ reject }) => {
258
+ reject(new Error('Connection manually disconnected'));
259
+ });
260
+ this.connectPromises.clear();
261
+ console.log('[WS] 🔌 客户端已主动断开');
262
+ }
263
+ // 当前订阅数量
264
+ getSubscriptionCount() {
265
+ return this.subscriptions.size;
266
+ }
267
+ // 连接后恢复订阅
268
+ _restoreSubscriptions() {
269
+ if (this.subscriptions.size === 0 || !this.client)
270
+ return;
271
+ console.log(`[WS] 🔄 正在恢复 ${this.subscriptions.size} 个订阅...`);
272
+ this.subscriptions.forEach((record, topic) => {
273
+ try {
274
+ const stompSub = this.client.subscribe(topic, (message) => {
275
+ try {
276
+ let body = message.body;
277
+ if (typeof message.body === 'string') {
278
+ body = JSON.parse(message.body);
279
+ }
280
+ record.callback(body, message);
281
+ }
282
+ catch (e) {
283
+ record.callback(message.body, message);
284
+ }
285
+ });
286
+ record.subscription = stompSub;
287
+ }
288
+ catch (error) {
289
+ console.error(`[WS] 恢复订阅失败: ${topic}`, error);
290
+ }
291
+ });
292
+ }
293
+ // 订阅队列
294
+ _flushQueue() {
295
+ return __awaiter(this, void 0, void 0, function* () {
296
+ if (this.operationQueue.length === 0)
297
+ return;
298
+ console.log(`[WS] 🚀 正在执行 ${this.operationQueue.length} 个排队操作...`);
299
+ const queue = [...this.operationQueue];
300
+ this.operationQueue = [];
301
+ for (const op of queue) {
302
+ try {
303
+ if (op.type === 'SUBSCRIBE') {
304
+ const { topic, callback, resolve, reject, params } = op.payload;
305
+ try {
306
+ const subscription = yield this._doSubscribe(topic, callback, params);
307
+ resolve(subscription);
308
+ }
309
+ catch (error) {
310
+ reject(error);
311
+ }
312
+ }
313
+ else if (op.type === 'SEND') {
314
+ const { destination, body } = op.payload;
315
+ this.send(destination, body);
316
+ }
317
+ }
318
+ catch (error) {
319
+ console.error('[WS] 执行队列操作失败:', error);
320
+ }
321
+ }
322
+ });
323
+ }
324
+ // 断连重连
325
+ _scheduleReconnect() {
326
+ if (this.reconnectAttempts >= this.config.maxReconnectAttempts) {
327
+ console.error('[WS] ❌ 重连失败:达到最大尝试次数');
328
+ return;
329
+ }
330
+ if (![ConnectionState.RECONNECTING, ConnectionState.DISCONNECTED].includes(this.state)) {
331
+ return;
332
+ }
333
+ this.reconnectAttempts++;
334
+ const delay = Math.min(this.config.reconnectDelay * Math.pow(1.5, this.reconnectAttempts - 1), 60000);
335
+ console.log(`[WS] ⏱️ ${delay}ms 后进行第 ${this.reconnectAttempts} 次重连...`);
336
+ this.reconnectTimer = setTimeout(() => {
337
+ this.connect().catch((err) => {
338
+ if (this.state !== ConnectionState.DISCONNECTED) {
339
+ console.error('[WS] 重连尝试异常:', err);
340
+ }
341
+ });
342
+ }, delay);
343
+ }
344
+ // 判断是否已连接
345
+ isConnected() {
346
+ return this.state === ConnectionState.CONNECTED;
347
+ }
348
+ // 获取所有订阅的topic
349
+ getSubscribedTopics() {
350
+ return Array.from(this.subscriptions.keys());
351
+ }
352
+ }
353
+ WebSocket.instances = new Map();
354
+ export default WebSocket;
355
+ //# sourceMappingURL=web-socket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-socket.js","sourceRoot":"","sources":["../../../../src/aldehyde/tmpl/web-socket.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aldehyde",
3
- "version": "0.2.449",
3
+ "version": "0.2.452",
4
4
  "author": "cosmicparticle",
5
5
  "main": "lib/index.js",
6
6
  "module": "src/aldehyde/index.txs",
@@ -28,6 +28,7 @@
28
28
  "@emotion/babel-preset-css-prop": "^11.11.0",
29
29
  "@emotion/react": "^11.11.1",
30
30
  "@emotion/styled": "^11.11.0",
31
+ "@stomp/stompjs": "^7.3.0",
31
32
  "@tinymce/tinymce-react": "^3.12.2",
32
33
  "@types/react-resizable": "^3.0.8",
33
34
  "@visactor/vtable": "^1.22.9",
@@ -112,6 +113,7 @@
112
113
  "resolve": "^1.8.1",
113
114
  "sass-loader": "^7.1.0",
114
115
  "scroll-into-view-if-needed": "^2.2.28",
116
+ "sockjs-client": "^1.6.1",
115
117
  "superagent": "^4.0.0",
116
118
  "superagent-jsonp": "^0.2.1",
117
119
  "three": "^0.134.0",
@@ -1,4 +1,4 @@
1
- import React from "react";
1
+ import React, { useEffect, useState } from "react";
2
2
  import { Badge } from "antd";
3
3
  import { VControlProps } from "../../tmpl/interface";
4
4
  import HCDataSource from "../../tmpl/hc-data-source";
@@ -8,12 +8,22 @@ interface MenuBadgeProps extends VControlProps { }
8
8
 
9
9
  const MenuBadge: React.FC<MenuBadgeProps> = (props) => {
10
10
  const { translate } = useLocale();
11
-
12
- const { value, itemType, fieldConfig } = props;
11
+ const [color, setColor] = useState<string>();
12
+ const { value, itemType, fieldConfig, serverKey } = props;
13
13
 
14
14
  let viewControl = undefined;
15
15
 
16
- let color = HCDataSource.getEnumValueColor(fieldConfig.mstrucId, value);
16
+ const getColor = async () => {
17
+ const temColor = await HCDataSource.getEnumValueColor(fieldConfig.mstrucId, value, serverKey);
18
+ setColor(temColor);
19
+ }
20
+
21
+ useEffect(() => {
22
+ if (value) {
23
+ getColor();
24
+ }
25
+ }, [value]);
26
+
17
27
  viewControl = (
18
28
  <span className="infoStyle">
19
29
  {value ? (
@@ -1,5 +1,5 @@
1
- import React from "react";
2
- import { Space, Tag } from "antd";
1
+ import React, { useEffect, useState } from "react";
2
+ import { Space } from "antd";
3
3
  import { VControlProps } from "../../tmpl/interface";
4
4
  import HCDataSource from "../../tmpl/hc-data-source";
5
5
  import { useLocale } from "../../locale/useLocale";
@@ -8,30 +8,38 @@ interface EnumTagsProps extends VControlProps { }
8
8
 
9
9
  const EnumTags: React.FC<EnumTagsProps> = (props) => {
10
10
  const { translate } = useLocale();
11
+ const [tagList, setTagList] = useState<any[]>([]);
12
+ const { value, fieldConfig, serverKey } = props;
11
13
 
12
- const { value, itemType, fieldConfig } = props;
13
- let viewControl = undefined;
14
- let tagList = [];
15
- if (value) {
16
- let v = value;
17
- if (value instanceof Array) {
18
- } else {
19
- if (value.indexOf("@,@") > 0) {
20
- v = value.split("@,@");
14
+ const getTagList = async () => {
15
+ if (value) {
16
+ const temArr = [];
17
+ let v = value;
18
+ if (value instanceof Array) {
21
19
  } else {
22
- v = value.split(",");
23
- }
20
+ if (value.indexOf("@,@") > 0) {
21
+ v = value.split("@,@");
22
+ } else {
23
+ v = value.split(",");
24
+ }
24
25
 
26
+ }
27
+ for (let index = 0; index < v.length; index++) {
28
+ const item = v[index];
29
+ let color = await HCDataSource.getEnumValueColor(fieldConfig.mstrucId, value, serverKey) || "#1677FF";
30
+ temArr.push(<span key={item} className="tag" style={{ fontSize: "12px", padding: "4px 10px", borderRadius: "9999px", color, background: `${color}1A` }}>
31
+ {translate("${" + item + "}")}
32
+ </span>)
33
+ }
34
+ setTagList(temArr);
25
35
  }
26
- v.forEach((v) => {
27
- let color = HCDataSource.getEnumValueColor(fieldConfig.mstrucId, value) || "#1677FF";
28
- tagList.push(<span key={v} className="tag" style={{ fontSize: "12px", padding: "4px 10px", borderRadius: "9999px", color, background: `${color}1A` }}>
29
- {translate("${" + v + "}")}
30
- </span>)
31
- });
32
36
  }
33
- viewControl = <Space size={[8, 8]} wrap>{tagList}</Space>;
34
- return viewControl;
37
+
38
+ useEffect(() => {
39
+ getTagList();
40
+ }, [value]);
41
+
42
+ return <Space size={[8, 8]} wrap>{tagList}</Space>;
35
43
  };
36
44
 
37
45
  export default EnumTags;
@@ -545,7 +545,7 @@ const CriteriaForm: React.FC<CriteriaFormProps> = (props) => {
545
545
  ""
546
546
  )}
547
547
  {showQueryButton ? (
548
- <Button type="primary" htmlType="submit">
548
+ <Button type="primary" htmlType="submit" loading={loading}>
549
549
  {translate("${查询}")}
550
550
  </Button>
551
551
  ) : (
@@ -56,9 +56,11 @@ const BaseImageComponent = forwardRef((props: BaseImageComponentProps, ref: Forw
56
56
  const [initSearchParams, setInitSearchParams] = useState<{ [key: string]: any }>();
57
57
  const [localImgCode, setLocalImgCode] = useState<string>();
58
58
  const [localImgDel, setLocalImgDel] = useState<boolean>(false);
59
+ const [loading, setLoading] = useState<boolean>(true);
59
60
 
60
61
  // 处理数据源图片地址
61
62
  const handleDataImgSrc = (val) => {
63
+ setLoading(false);
62
64
  const src = handleData(val);
63
65
  if (!src) {
64
66
  setImgSrc("");
@@ -157,8 +159,9 @@ const BaseImageComponent = forwardRef((props: BaseImageComponentProps, ref: Forw
157
159
  } else {
158
160
  getInitData();
159
161
  }
160
- } else if (dataConfig?.sourceType === 'sourceId') {
162
+ } else {
161
163
  setImgSrc("");
164
+ setLoading(false);
162
165
  }
163
166
  }, [dataConfig?.sourceType, dataConfig?.sourceId, initSearchParams]);
164
167
 
@@ -199,7 +202,7 @@ const BaseImageComponent = forwardRef((props: BaseImageComponentProps, ref: Forw
199
202
 
200
203
  return (
201
204
  <div style={{ width: '100%', height: '100%' }}>
202
- {!(imgSrc || defImgSrc) ? emptyImg :
205
+ {(loading || !(imgSrc || defImgSrc)) ? emptyImg :
203
206
  isDesignMode && localImgDel ? renderLocalImgDel :
204
207
  <img alt={'图片组件'} style={{ opacity: config?.opacity }} width={'100%'} height={'100%'} src={imgSrc || defImgSrc} />}
205
208
  </div>
@@ -43,12 +43,12 @@ class Pagination extends React.PureComponent<PaginationProps, PaginationStat> {
43
43
  }
44
44
  } else if (touchEnd) {
45
45
  sewTotal = false;
46
- virtualTotal = pageInfo.virtualEndPageNo * pageInfo.pageSize + 1;
46
+ virtualTotal = (pageInfo.virtualEndPageNo || 0) * pageInfo.pageSize + 1;
47
47
  seeTotalTitle = translate("${查看总数}");
48
48
  } else {
49
49
  //这里还有问题
50
50
  sewTotal = false;
51
- virtualTotal = pageInfo.virtualEndPageNo * pageInfo.pageSize + 1;
51
+ virtualTotal = (pageInfo.virtualEndPageNo || 0) * pageInfo.pageSize + 1;
52
52
  seeTotalTitle = translate("${查看总数}");
53
53
  }
54
54
 
@@ -177,8 +177,9 @@ class QueryTable extends React.PureComponent<QueryTableProps, QueryTableStat> {
177
177
  queryKey,
178
178
  pageInfo
179
179
  );
180
- if (queryData?.key != this.props.queryKey?.key) {
180
+ if (queryData?.key !== queryKey) {
181
181
  this.setState({ loading: false, errorText: translate("${查询异常}"), dataSource: [] });
182
+ if (loadDataCallback) loadDataCallback([]); // 请求数据回调函数
182
183
  return;
183
184
  } else {
184
185
  let dataSource: object[] = [];
@@ -93,7 +93,7 @@ class SelectTable extends React.PureComponent<SelectTableProps, SelectTableStat>
93
93
  pageNo: pageInfo.pageNo,
94
94
  queryKey,
95
95
  criteriaData,
96
- loading: false,
96
+ // loading: false,
97
97
  });
98
98
  }
99
99
 
@@ -448,6 +448,7 @@ class SelectTable extends React.PureComponent<SelectTableProps, SelectTableStat>
448
448
  onChangeRowSelection={this.changeRowSelection}
449
449
  sortColumnData={[]}
450
450
  doSearch={this.doSearch}
451
+ loadDataCallback={() => this.setState({ loading: false })}
451
452
  />
452
453
  {showView && drawCode ? (
453
454
  <DtmplViewDrawer
@@ -364,14 +364,19 @@ HCDataSource.getEnumsValueMap = function (
364
364
  return map;
365
365
  };
366
366
 
367
- HCDataSource.getEnumOption = function (
367
+ HCDataSource.getEnumOption = async function (
368
368
  mstrucId: string,
369
- enumValue: string
370
- ): EnumItem {
369
+ enumValue: string,
370
+ serverKey?: string
371
+ ) {
371
372
  if (!enumValue) {
372
373
  return null;
373
374
  }
374
375
  let options = this.getEnums(mstrucId);
376
+ if (!options) { // 枚举不存在查询
377
+ await loadEnum(serverKey, [mstrucId]);
378
+ options = this.getEnums(mstrucId);
379
+ }
375
380
  let enumItem: EnumItem = undefined;
376
381
  if (options) {
377
382
  options.forEach((option) => {
@@ -383,11 +388,12 @@ HCDataSource.getEnumOption = function (
383
388
  }
384
389
  return enumItem;
385
390
  };
386
- HCDataSource.getEnumValueColor = (
391
+ HCDataSource.getEnumValueColor = async (
387
392
  mstrucId: string,
388
- enumValue: string
389
- ): string => {
390
- let enumItem: EnumItem = HCDataSource.getEnumOption(mstrucId, enumValue);
393
+ enumValue: string,
394
+ serverKey?: string,
395
+ ) => {
396
+ let enumItem: EnumItem = await HCDataSource.getEnumOption(mstrucId, enumValue, serverKey);
391
397
  if (enumItem) {
392
398
  return enumItem.color;
393
399
  } else {
@@ -1496,4 +1496,18 @@ export default class HcserviceV3 {
1496
1496
  return false;
1497
1497
  }
1498
1498
  }
1499
+
1500
+ // ws发送消息
1501
+ static async wsPush(hydrocarbonToken, data = { message: "测试数据", destination: "/user/queue/dashboard" }) {
1502
+ const res = await Super.super({
1503
+ url: `/v3/ws-push/${hydrocarbonToken}`,
1504
+ data,
1505
+ method: "POST",
1506
+ });
1507
+ if (res.code === 200) {
1508
+ message.success(translate("${已发送}"));
1509
+ } else {
1510
+ message.error(translate("${发送失败}"), 3);
1511
+ }
1512
+ }
1499
1513
  }