@ibiz-template/vue3-components 0.7.15 → 0.7.16-alpha.0

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.
@@ -12,9 +12,37 @@ const i18n = createI18n({
12
12
  locale: "zh-CN"
13
13
  });
14
14
  class IBizI18n {
15
+ /**
16
+ * Creates an instance of IBizI18n.
17
+ * @author tony001
18
+ * @date 2024-05-20 22:05:50
19
+ */
15
20
  constructor() {
21
+ /**
22
+ * html元素
23
+ *
24
+ * @author tony001
25
+ * @date 2024-05-20 22:05:58
26
+ * @protected
27
+ * @type {HTMLElement}
28
+ */
16
29
  __publicField(this, "html");
30
+ /**
31
+ * 默认语言
32
+ *
33
+ * @author tony001
34
+ * @date 2024-05-20 22:05:13
35
+ * @protected
36
+ * @type {string}
37
+ */
17
38
  __publicField(this, "defaultLang");
39
+ /**
40
+ * 语言资源映射表
41
+ *
42
+ * @author tony001
43
+ * @date 2024-05-20 22:05:38
44
+ * @protected
45
+ */
18
46
  __publicField(this, "langMap", /* @__PURE__ */ new Map());
19
47
  this.defaultLang = "zh-CN";
20
48
  this.html = document.querySelector("html");
@@ -56,7 +84,7 @@ class IBizI18n {
56
84
  });
57
85
  }
58
86
  /**
59
- * 设置
87
+ * 设置语言
60
88
  *
61
89
  * @author chitanda
62
90
  * @date 2023-08-24 16:08:42
@@ -73,9 +101,26 @@ class IBizI18n {
73
101
  }
74
102
  });
75
103
  }
104
+ /**
105
+ * 获取语言
106
+ *
107
+ * @author tony001
108
+ * @date 2024-05-20 22:05:05
109
+ * @return {*} {string}
110
+ */
76
111
  getLang() {
77
112
  return this.html.getAttribute("lang") || this.defaultLang;
78
113
  }
114
+ /**
115
+ * 格式化
116
+ *
117
+ * @author tony001
118
+ * @date 2024-05-20 22:05:44
119
+ * @param {unknown} tag
120
+ * @param {unknown} [defaultMsg]
121
+ * @param {unknown} [options]
122
+ * @return {*} {string}
123
+ */
79
124
  t(tag, defaultMsg, options) {
80
125
  return i18n.global.t(
81
126
  tag,
@@ -83,6 +128,24 @@ class IBizI18n {
83
128
  options
84
129
  );
85
130
  }
131
+ /**
132
+ * 合并语言资源
133
+ * @param lang
134
+ * @param data
135
+ */
136
+ mergeLocaleMessage(dataOrLang, data) {
137
+ if (typeof dataOrLang === "string") {
138
+ const lang = dataOrLang;
139
+ i18n.global.mergeLocaleMessage(lang, data);
140
+ } else {
141
+ const langData = dataOrLang;
142
+ if (langData && Object.keys(langData).length > 0) {
143
+ Object.keys(langData).forEach((key) => {
144
+ i18n.global.mergeLocaleMessage(key, langData[key]);
145
+ });
146
+ }
147
+ }
148
+ }
86
149
  }
87
150
  const iBizI18n = new IBizI18n();
88
151
 
@@ -97,7 +97,11 @@ class EditViewEngine extends ViewEngineBase {
97
97
  };
98
98
  this.form.evt.on("onLoadSuccess", (event) => {
99
99
  formDataStateChange(event);
100
- this.view.state.srfactiveviewdata = event.data[0];
100
+ const data = event.data[0];
101
+ this.view.state.srfactiveviewdata = data;
102
+ if (data.srfreadonly) {
103
+ this.view.context.srfreadonly = true;
104
+ }
101
105
  evt.emit("onDataChange", { ...event, actionType: "LOAD" });
102
106
  });
103
107
  this.form.evt.on("onLoadDraftSuccess", (event) => {
@@ -64,7 +64,11 @@ class OptViewEngine extends ViewEngineBase {
64
64
  }
65
65
  };
66
66
  this.form.evt.on("onLoadSuccess", (event) => {
67
- this.view.state.srfactiveviewdata = event.data[0];
67
+ const data = event.data[0];
68
+ this.view.state.srfactiveviewdata = data;
69
+ if (data.srfreadonly) {
70
+ this.view.context.srfreadonly = true;
71
+ }
68
72
  formDataStateChange(event);
69
73
  });
70
74
  this.form.evt.on("onLoadDraftSuccess", (event) => {
@@ -150,13 +150,14 @@ const DRBarControl = /* @__PURE__ */ vue.defineComponent({
150
150
  const {
151
151
  isCreated,
152
152
  drBarItems,
153
- selectedItem
153
+ selectedItem,
154
+ isCalculatedPermission
154
155
  } = this.c.state;
155
156
  return vue.createVNode(vue.resolveComponent("iBizControlBase"), {
156
157
  "controller": this.c,
157
158
  "class": this.ns.b()
158
159
  }, {
159
- default: () => [isCreated && vue.createVNode(vue.resolveComponent("el-menu"), {
160
+ default: () => [isCreated && isCalculatedPermission && vue.createVNode(vue.resolveComponent("el-menu"), {
160
161
  "class": this.ns.e("menu"),
161
162
  "mode": this.showMode,
162
163
  "default-active": selectedItem,
@@ -119,6 +119,78 @@ class DRBarController extends runtime.ControlController {
119
119
  this.initDRBarItems();
120
120
  await this.initCounter();
121
121
  }
122
+ /**
123
+ * 通过计数器数据,计算项状态
124
+ *
125
+ * @author zhanghengfeng
126
+ * @date 2024-05-16 18:05:14
127
+ * @param {IData} [_data]
128
+ * @param {boolean} [reset=true]
129
+ */
130
+ calcItemStateByCounter(_data, reset = true) {
131
+ this.state.drBarItems.forEach((item) => {
132
+ var _a;
133
+ if ((_a = item.children) == null ? void 0 : _a.length) {
134
+ item.children.forEach((childItem) => {
135
+ const visible = runtime.calcItemVisibleByCounter(childItem, this.counter);
136
+ if (visible !== void 0) {
137
+ childItem.visible = visible;
138
+ }
139
+ });
140
+ item.visible = item.children.some((childItem) => childItem.visible);
141
+ } else {
142
+ const visible = runtime.calcItemVisibleByCounter(item, this.counter);
143
+ if (visible !== void 0) {
144
+ item.visible = visible;
145
+ }
146
+ }
147
+ });
148
+ if (this.state.selectedItem && reset) {
149
+ const { visible, defaultVisibleItem } = this.getItemVisibleState(
150
+ this.state.selectedItem
151
+ );
152
+ if (!visible && defaultVisibleItem) {
153
+ this.handleSelectChange(defaultVisibleItem.tag);
154
+ }
155
+ }
156
+ }
157
+ /**
158
+ * 获取对应项的显示状态
159
+ *
160
+ * @author zhanghengfeng
161
+ * @date 2024-05-16 17:05:15
162
+ * @param {string} key
163
+ * @return {*} {{
164
+ * visible: boolean;
165
+ * defaultVisibleItem?: IDRBarItemsState;
166
+ * }}
167
+ */
168
+ getItemVisibleState(key) {
169
+ let visible = true;
170
+ let defaultVisibleItem;
171
+ this.state.drBarItems.forEach((item) => {
172
+ if (item.children) {
173
+ if (!defaultVisibleItem) {
174
+ defaultVisibleItem = item.children.find((child) => child.visible);
175
+ }
176
+ const drBarItem = item.children.find((child) => child.tag === key);
177
+ if (drBarItem) {
178
+ visible = !!drBarItem.visible;
179
+ }
180
+ } else {
181
+ if (!defaultVisibleItem && item.visible) {
182
+ defaultVisibleItem = item;
183
+ }
184
+ if (item.tag === key) {
185
+ visible = !!item.visible;
186
+ }
187
+ }
188
+ });
189
+ return {
190
+ visible,
191
+ defaultVisibleItem
192
+ };
193
+ }
122
194
  /**
123
195
  * 计算关系界面组权限
124
196
  *
@@ -126,16 +198,19 @@ class DRBarController extends runtime.ControlController {
126
198
  * @memberof DRBarController
127
199
  */
128
200
  async calcPermitted(item) {
201
+ var _a;
129
202
  let permitted = true;
130
- if (item.dataAccessAction) {
131
- const app = await ibiz.hub.getApp(this.context.srfappid);
132
- const data = this.getData().length > 0 ? this.getData()[0] : void 0;
133
- permitted = await app.authority.calcByDataAccessAction(
134
- item.dataAccessAction,
135
- this.context,
136
- data,
137
- this.model.appDataEntityId
138
- );
203
+ const data = ((_a = this.getData()) == null ? void 0 : _a.length) ? this.getData()[0] : void 0;
204
+ const visible = await runtime.calcItemVisible(
205
+ item,
206
+ this.context,
207
+ this.params,
208
+ this.model.appDataEntityId,
209
+ this.model.appId,
210
+ data
211
+ );
212
+ if (visible !== void 0) {
213
+ permitted = visible;
139
214
  }
140
215
  item.visible = permitted;
141
216
  }
@@ -161,6 +236,8 @@ class DRBarController extends runtime.ControlController {
161
236
  }
162
237
  })
163
238
  );
239
+ this.calcItemStateByCounter({}, false);
240
+ this.state.isCalculatedPermission = true;
164
241
  }
165
242
  /**
166
243
  * 加载完成
@@ -172,7 +249,11 @@ class DRBarController extends runtime.ControlController {
172
249
  await super.onMounted();
173
250
  if (this.form) {
174
251
  this.form.evt.on("onLoadSuccess", async (event) => {
175
- this.view.state.srfactiveviewdata = event.data[0];
252
+ const data = event.data[0];
253
+ this.view.state.srfactiveviewdata = data;
254
+ if (data.srfreadonly) {
255
+ this.view.context.srfreadonly = true;
256
+ }
176
257
  await this.calcDrBarItemsState();
177
258
  this.handleFormChange();
178
259
  this.doDefaultSelect();
@@ -252,6 +333,7 @@ class DRBarController extends runtime.ControlController {
252
333
  if (item.capLanguageRes) {
253
334
  itemCaption = ibiz.i18n.t(item.capLanguageRes.lanResTag, item.caption);
254
335
  }
336
+ const { enableMode, testAppDELogicId, testScriptCode } = item;
255
337
  return {
256
338
  tag: item.id,
257
339
  caption: itemCaption,
@@ -260,7 +342,10 @@ class DRBarController extends runtime.ControlController {
260
342
  counterId: item.counterId,
261
343
  visible: false,
262
344
  // 默认不显示
263
- dataAccessAction: item.dataAccessAction || void 0
345
+ dataAccessAction: item.dataAccessAction || void 0,
346
+ enableMode,
347
+ testAppDELogicId,
348
+ testScriptCode
264
349
  };
265
350
  };
266
351
  if (dedrbarGroups && dedrctrlItems) {
@@ -423,7 +508,13 @@ class DRBarController extends runtime.ControlController {
423
508
  }
424
509
  if (key) {
425
510
  const isRoutePushed = !!this.routeDepth && runtime.hasSubRoute(this.routeDepth);
426
- this.handleSelectChange(key, isRoutePushed);
511
+ const { visible, defaultVisibleItem } = this.getItemVisibleState(key);
512
+ if (!visible && defaultVisibleItem) {
513
+ key = defaultVisibleItem.tag;
514
+ this.handleSelectChange(key);
515
+ } else {
516
+ this.handleSelectChange(key, isRoutePushed);
517
+ }
427
518
  this.state.defaultItem = key;
428
519
  }
429
520
  }
@@ -443,6 +534,8 @@ class DRBarController extends runtime.ControlController {
443
534
  this.context,
444
535
  { ...this.params }
445
536
  );
537
+ this.calcItemStateByCounter = this.calcItemStateByCounter.bind(this);
538
+ this.counter.onChange(this.calcItemStateByCounter);
446
539
  }
447
540
  }
448
541
  /**
@@ -456,6 +549,7 @@ class DRBarController extends runtime.ControlController {
456
549
  async onDestroyed() {
457
550
  await super.onDestroyed();
458
551
  if (this.counter) {
552
+ this.counter.offChange(this.calcItemStateByCounter);
459
553
  this.counter.destroy();
460
554
  }
461
555
  }
@@ -96,13 +96,14 @@ const DRTabControl = /* @__PURE__ */ vue.defineComponent({
96
96
  let _slot;
97
97
  const {
98
98
  isCreated,
99
- drTabPages
99
+ drTabPages,
100
+ isCalculatedPermission
100
101
  } = this.c.state;
101
102
  return vue.createVNode(vue.resolveComponent("iBizControlBase"), {
102
103
  "controller": this.c,
103
104
  "class": this.ns.b()
104
105
  }, {
105
- default: () => [isCreated && vue.createVNode(vue.resolveComponent("el-tabs"), {
106
+ default: () => [isCreated && isCalculatedPermission && vue.createVNode(vue.resolveComponent("el-tabs"), {
106
107
  "modelValue": this.c.state.activeName,
107
108
  "onUpdate:modelValue": ($event) => this.c.state.activeName = $event,
108
109
  "onTabChange": this.handleTabChange
@@ -97,6 +97,97 @@ class DRTabController extends runtime.ControlController {
97
97
  await super.onCreated();
98
98
  await this.initCounter();
99
99
  }
100
+ /**
101
+ * 通过计数器数据,计算项状态
102
+ *
103
+ * @author zhanghengfeng
104
+ * @date 2024-05-16 17:05:01
105
+ */
106
+ calcItemStateByCounter() {
107
+ this.state.drTabPages.forEach((item) => {
108
+ const visible = runtime.calcItemVisibleByCounter(item, this.counter);
109
+ if (visible !== void 0) {
110
+ item.hidden = !visible;
111
+ }
112
+ });
113
+ if (this.state.activeName) {
114
+ const { visible, defaultVisibleItem } = this.getItemVisibleState(
115
+ this.state.activeName
116
+ );
117
+ if (!visible && defaultVisibleItem) {
118
+ this.state.activeName = defaultVisibleItem.tag;
119
+ this.handleTabChange();
120
+ }
121
+ }
122
+ }
123
+ /**
124
+ * 获取对应项的显示状态
125
+ *
126
+ * @author zhanghengfeng
127
+ * @date 2024-05-16 17:05:18
128
+ * @param {string} key
129
+ * @return {*} {{
130
+ * visible: boolean;
131
+ * defaultVisibleItem?: IDRTabPagesState;
132
+ * }}
133
+ */
134
+ getItemVisibleState(key) {
135
+ let visible = true;
136
+ let defaultVisibleItem;
137
+ this.state.drTabPages.forEach((item) => {
138
+ if (!defaultVisibleItem && !item.hidden) {
139
+ defaultVisibleItem = item;
140
+ }
141
+ if (item.tag === key) {
142
+ visible = !item.hidden;
143
+ }
144
+ });
145
+ return {
146
+ visible,
147
+ defaultVisibleItem
148
+ };
149
+ }
150
+ /**
151
+ * 计算项权限
152
+ *
153
+ * @author zhanghengfeng
154
+ * @date 2024-05-16 17:05:40
155
+ * @param {IDRTabPagesState} item
156
+ * @return {*} {Promise<void>}
157
+ */
158
+ async calcPermitted(item) {
159
+ var _a;
160
+ let permitted = true;
161
+ const data = ((_a = this.getData()) == null ? void 0 : _a.length) ? this.getData()[0] : void 0;
162
+ const visible = await runtime.calcItemVisible(
163
+ item,
164
+ this.context,
165
+ this.params,
166
+ this.model.appDataEntityId,
167
+ this.model.appId,
168
+ data
169
+ );
170
+ if (visible !== void 0) {
171
+ permitted = visible;
172
+ }
173
+ item.hidden = !permitted;
174
+ }
175
+ /**
176
+ * 计算项状态
177
+ *
178
+ * @author zhanghengfeng
179
+ * @date 2024-05-16 17:05:05
180
+ * @return {*} {Promise<void>}
181
+ */
182
+ async calcDrTabPagesState() {
183
+ await Promise.all(
184
+ this.state.drTabPages.map(async (item) => {
185
+ await this.calcPermitted(item);
186
+ })
187
+ );
188
+ this.calcItemStateByCounter();
189
+ this.state.isCalculatedPermission = true;
190
+ }
100
191
  /**
101
192
  * 加载完成
102
193
  *
@@ -106,8 +197,13 @@ class DRTabController extends runtime.ControlController {
106
197
  async onMounted() {
107
198
  await super.onMounted();
108
199
  if (this.form) {
109
- this.form.evt.on("onLoadSuccess", (event) => {
110
- this.view.state.srfactiveviewdata = event.data[0];
200
+ this.form.evt.on("onLoadSuccess", async (event) => {
201
+ const data = event.data[0];
202
+ this.view.state.srfactiveviewdata = data;
203
+ if (data.srfreadonly) {
204
+ this.view.context.srfreadonly = true;
205
+ }
206
+ await this.calcDrTabPagesState();
111
207
  this.handleFormChange();
112
208
  });
113
209
  this.form.evt.on("onLoadDraftSuccess", () => {
@@ -118,6 +214,9 @@ class DRTabController extends runtime.ControlController {
118
214
  });
119
215
  }
120
216
  this.initDRTabPages();
217
+ if (!this.form) {
218
+ await this.calcDrTabPagesState();
219
+ }
121
220
  }
122
221
  /**
123
222
  * 处理表单数据变更
@@ -179,13 +278,18 @@ class DRTabController extends runtime.ControlController {
179
278
  if (item.capLanguageRes) {
180
279
  itemCaption = ibiz.i18n.t(item.capLanguageRes.lanResTag, item.caption);
181
280
  }
281
+ const { enableMode, dataAccessAction, testAppDELogicId, testScriptCode } = item;
182
282
  drTabPages.push({
183
283
  tag: item.id,
184
284
  caption: itemCaption,
185
285
  sysImage: item.sysImage,
186
286
  hidden: false,
187
287
  disabled: false,
188
- counterId: item.counterId
288
+ counterId: item.counterId,
289
+ dataAccessAction,
290
+ enableMode,
291
+ testAppDELogicId,
292
+ testScriptCode
189
293
  });
190
294
  });
191
295
  this.state.drTabPages = drTabPages;
@@ -215,7 +319,7 @@ class DRTabController extends runtime.ControlController {
215
319
  this.openNavPosView(drBarItem, isRoutePushed);
216
320
  } else {
217
321
  this.setVisible("form");
218
- if (this.routeDepth) {
322
+ if (this.routeDepth && this.state.drTabPages[0]) {
219
323
  this.router.push(this.state.drTabPages[0].fullPath);
220
324
  }
221
325
  }
@@ -310,6 +414,8 @@ class DRTabController extends runtime.ControlController {
310
414
  this.context,
311
415
  { ...this.params }
312
416
  );
417
+ this.calcItemStateByCounter = this.calcItemStateByCounter.bind(this);
418
+ this.counter.onChange(this.calcItemStateByCounter);
313
419
  }
314
420
  }
315
421
  /**
@@ -323,6 +429,7 @@ class DRTabController extends runtime.ControlController {
323
429
  async onDestroyed() {
324
430
  await super.onDestroyed();
325
431
  if (this.counter) {
432
+ this.counter.offChange(this.calcItemStateByCounter);
326
433
  this.counter.destroy();
327
434
  }
328
435
  }
@@ -23,6 +23,7 @@ const GridFieldColumn = /* @__PURE__ */ vue.defineComponent({
23
23
  },
24
24
  setup(props) {
25
25
  const ns = vue3Util.useNamespace("grid-field-column");
26
+ const c = props.controller;
26
27
  const zIndex = props.controller.grid.state.zIndex;
27
28
  const onCellClick = (event) => {
28
29
  if (props.controller.hasAction) {
@@ -55,13 +56,9 @@ const GridFieldColumn = /* @__PURE__ */ vue.defineComponent({
55
56
  const onActionClick = async (detail, event) => {
56
57
  await props.controller.onActionClick(detail, props.row, event);
57
58
  };
58
- const items = vue.ref([]);
59
- if (props.controller.codeList) {
60
- items.value = props.controller.codeListItems;
61
- }
62
59
  const fn = (data) => {
63
60
  if (data) {
64
- items.value = data;
61
+ c.codeListItems = data;
65
62
  }
66
63
  };
67
64
  vue3Util.useCodeListListen(props.controller.model.appCodeListId, props.controller.context.srfappid, fn);
@@ -76,8 +73,7 @@ const GridFieldColumn = /* @__PURE__ */ vue.defineComponent({
76
73
  formatValue,
77
74
  codeListValue,
78
75
  tooltip,
79
- zIndex,
80
- items
76
+ zIndex
81
77
  };
82
78
  },
83
79
  render() {
@@ -100,7 +96,7 @@ const GridFieldColumn = /* @__PURE__ */ vue.defineComponent({
100
96
  } else if (c.codeList) {
101
97
  content = vue.createVNode(vue.resolveComponent("iBizCodeList"), {
102
98
  "class": this.ns.e("text"),
103
- "codeListItems": this.items,
99
+ "codeListItems": c.codeListItems,
104
100
  "codeList": c.codeList,
105
101
  "value": this.codeListValue,
106
102
  "onClick": this.onTextClick,
@@ -14,9 +14,37 @@ const i18n = vueI18n.createI18n({
14
14
  locale: "zh-CN"
15
15
  });
16
16
  class IBizI18n {
17
+ /**
18
+ * Creates an instance of IBizI18n.
19
+ * @author tony001
20
+ * @date 2024-05-20 22:05:50
21
+ */
17
22
  constructor() {
23
+ /**
24
+ * html元素
25
+ *
26
+ * @author tony001
27
+ * @date 2024-05-20 22:05:58
28
+ * @protected
29
+ * @type {HTMLElement}
30
+ */
18
31
  __publicField(this, "html");
32
+ /**
33
+ * 默认语言
34
+ *
35
+ * @author tony001
36
+ * @date 2024-05-20 22:05:13
37
+ * @protected
38
+ * @type {string}
39
+ */
19
40
  __publicField(this, "defaultLang");
41
+ /**
42
+ * 语言资源映射表
43
+ *
44
+ * @author tony001
45
+ * @date 2024-05-20 22:05:38
46
+ * @protected
47
+ */
20
48
  __publicField(this, "langMap", /* @__PURE__ */ new Map());
21
49
  this.defaultLang = "zh-CN";
22
50
  this.html = document.querySelector("html");
@@ -58,7 +86,7 @@ class IBizI18n {
58
86
  });
59
87
  }
60
88
  /**
61
- * 设置
89
+ * 设置语言
62
90
  *
63
91
  * @author chitanda
64
92
  * @date 2023-08-24 16:08:42
@@ -75,9 +103,26 @@ class IBizI18n {
75
103
  }
76
104
  });
77
105
  }
106
+ /**
107
+ * 获取语言
108
+ *
109
+ * @author tony001
110
+ * @date 2024-05-20 22:05:05
111
+ * @return {*} {string}
112
+ */
78
113
  getLang() {
79
114
  return this.html.getAttribute("lang") || this.defaultLang;
80
115
  }
116
+ /**
117
+ * 格式化
118
+ *
119
+ * @author tony001
120
+ * @date 2024-05-20 22:05:44
121
+ * @param {unknown} tag
122
+ * @param {unknown} [defaultMsg]
123
+ * @param {unknown} [options]
124
+ * @return {*} {string}
125
+ */
81
126
  t(tag, defaultMsg, options) {
82
127
  return i18n.global.t(
83
128
  tag,
@@ -85,6 +130,24 @@ class IBizI18n {
85
130
  options
86
131
  );
87
132
  }
133
+ /**
134
+ * 合并语言资源
135
+ * @param lang
136
+ * @param data
137
+ */
138
+ mergeLocaleMessage(dataOrLang, data) {
139
+ if (typeof dataOrLang === "string") {
140
+ const lang = dataOrLang;
141
+ i18n.global.mergeLocaleMessage(lang, data);
142
+ } else {
143
+ const langData = dataOrLang;
144
+ if (langData && Object.keys(langData).length > 0) {
145
+ Object.keys(langData).forEach((key) => {
146
+ i18n.global.mergeLocaleMessage(key, langData[key]);
147
+ });
148
+ }
149
+ }
150
+ }
88
151
  }
89
152
  const iBizI18n = new IBizI18n();
90
153
 
@@ -99,7 +99,11 @@ class EditViewEngine extends runtime.ViewEngineBase {
99
99
  };
100
100
  this.form.evt.on("onLoadSuccess", (event) => {
101
101
  formDataStateChange(event);
102
- this.view.state.srfactiveviewdata = event.data[0];
102
+ const data = event.data[0];
103
+ this.view.state.srfactiveviewdata = data;
104
+ if (data.srfreadonly) {
105
+ this.view.context.srfreadonly = true;
106
+ }
103
107
  evt.emit("onDataChange", { ...event, actionType: "LOAD" });
104
108
  });
105
109
  this.form.evt.on("onLoadDraftSuccess", (event) => {
@@ -66,7 +66,11 @@ class OptViewEngine extends runtime.ViewEngineBase {
66
66
  }
67
67
  };
68
68
  this.form.evt.on("onLoadSuccess", (event) => {
69
- this.view.state.srfactiveviewdata = event.data[0];
69
+ const data = event.data[0];
70
+ this.view.state.srfactiveviewdata = data;
71
+ if (data.srfreadonly) {
72
+ this.view.context.srfreadonly = true;
73
+ }
70
74
  formDataStateChange(event);
71
75
  });
72
76
  this.form.evt.on("onLoadDraftSuccess", (event) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ibiz-template/vue3-components",
3
- "version": "0.7.15",
3
+ "version": "0.7.16-alpha.0",
4
4
  "description": "使用 rollup 编译 vue 组件或者 jsx",
5
5
  "main": "lib/index.cjs",
6
6
  "module": "es/index.mjs",
@@ -30,12 +30,12 @@
30
30
  "@floating-ui/dom": "^1.5.3",
31
31
  "@ibiz-template-plugin/ai-chat": "^0.0.5",
32
32
  "@ibiz-template-plugin/gantt": "0.1.4",
33
- "@ibiz-template/core": "0.7.7-dev.0",
33
+ "@ibiz-template/core": "0.7.16-alpha.0",
34
34
  "@ibiz-template/devtool": "0.0.1-dev.6",
35
- "@ibiz-template/model-helper": "0.7.15",
36
- "@ibiz-template/runtime": "0.7.15",
35
+ "@ibiz-template/model-helper": "0.7.16-alpha.0",
36
+ "@ibiz-template/runtime": "0.7.16-alpha.0",
37
37
  "@ibiz-template/theme": "^0.7.0",
38
- "@ibiz-template/vue3-util": "0.7.15",
38
+ "@ibiz-template/vue3-util": "0.7.16-alpha.0",
39
39
  "@ibiz-template/web-theme": "^1.1.17",
40
40
  "@ibiz/model-core": "^0.1.27",
41
41
  "@imengyu/vue3-context-menu": "^1.3.5",