@ibiz-template/runtime 0.4.1-dev.0 → 0.4.2

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.
@@ -1,5 +1,6 @@
1
1
  import { IControlProvider, IMDControlController } from '../../../../../interface';
2
2
  import { FormMDCtrlController } from './form-mdctrl.controller';
3
+ import { FormNotifyState } from '../../../../constant';
3
4
  /**
4
5
  * 表单多数据部件(引用实体多数据部件模型)控制器
5
6
  * 类型是列表,卡片,表格时
@@ -26,6 +27,14 @@ export declare class FormMDCtrlMDController extends FormMDCtrlController {
26
27
  * @type {IMDControlController}
27
28
  */
28
29
  mdController: IMDControlController;
30
+ /**
31
+ * 表单项名称
32
+ *
33
+ * @author lxm
34
+ * @date 2022-09-04 18:09:32
35
+ * @readonly
36
+ */
37
+ get name(): string;
29
38
  protected onInit(): Promise<void>;
30
39
  /**
31
40
  * 设置多数据部件控制器
@@ -34,6 +43,7 @@ export declare class FormMDCtrlMDController extends FormMDCtrlController {
34
43
  * @param {IMDControlController} controller
35
44
  */
36
45
  setMDControl(controller: IMDControlController): void;
46
+ updateFormItem(): Promise<void>;
37
47
  /**
38
48
  * 删除多数据选中的数据
39
49
  * @author lxm
@@ -47,6 +57,13 @@ export declare class FormMDCtrlMDController extends FormMDCtrlController {
47
57
  */
48
58
  create(): void;
49
59
  refresh(): void;
60
+ /**
61
+ * 表单状态变更通知
62
+ *
63
+ * @author lxm
64
+ * @date 2022-09-20 18:09:07
65
+ */
66
+ formStateNotify(state: FormNotifyState): Promise<void>;
50
67
  dataChangeNotify(names: string[]): Promise<void>;
51
68
  }
52
69
  //# sourceMappingURL=form-mdctrl-md.controller.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"form-mdctrl-md.controller.d.ts","sourceRoot":"","sources":["../../../../../../src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-md.controller.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,gBAAgB,EAEhB,oBAAoB,EACrB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE;;;;;;;;;GASG;AACH,qBAAa,sBAAuB,SAAQ,oBAAoB;IAC9D;;;;;;OAMG;IACH,UAAU,EAAG,gBAAgB,CAAC;IAE9B;;;;;OAKG;IACH,YAAY,EAAG,oBAAoB,CAAC;cAEpB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAqBvC;;;;;OAKG;IACH,YAAY,CAAC,UAAU,EAAE,oBAAoB,GAAG,IAAI;IAYpD;;;;OAIG;IACH,MAAM,IAAI,IAAI;IAId;;;;OAIG;IACH,MAAM,IAAI,IAAI;IAWd,OAAO,IAAI,IAAI;IAIT,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAQvD"}
1
+ {"version":3,"file":"form-mdctrl-md.controller.d.ts","sourceRoot":"","sources":["../../../../../../src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-md.controller.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,gBAAgB,EAEhB,oBAAoB,EACrB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;;;;GASG;AACH,qBAAa,sBAAuB,SAAQ,oBAAoB;IAC9D;;;;;;OAMG;IACH,UAAU,EAAG,gBAAgB,CAAC;IAE9B;;;;;OAKG;IACH,YAAY,EAAG,oBAAoB,CAAC;IAEpC;;;;;;OAMG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;cAEe,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAqBvC;;;;;OAKG;IACH,YAAY,CAAC,UAAU,EAAE,oBAAoB,GAAG,IAAI;IAYpD,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAM/B;;;;OAIG;IACH,MAAM,IAAI,IAAI;IAId;;;;OAIG;IACH,MAAM,IAAI,IAAI;IAWd,OAAO,IAAI,IAAI;IAQf;;;;;OAKG;IACG,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtD,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAQvD"}
@@ -12,6 +12,16 @@ import { FormMDCtrlController } from './form-mdctrl.controller';
12
12
  * @extends {FormDetailController<IDEFormMDCtrl>}
13
13
  */
14
14
  export class FormMDCtrlMDController extends FormMDCtrlController {
15
+ /**
16
+ * 表单项名称
17
+ *
18
+ * @author lxm
19
+ * @date 2022-09-04 18:09:32
20
+ * @readonly
21
+ */
22
+ get name() {
23
+ return this.model.id;
24
+ }
15
25
  async onInit() {
16
26
  await super.onInit();
17
27
  const { contentControl } = this.model;
@@ -46,6 +56,11 @@ export class FormMDCtrlMDController extends FormMDCtrlController {
46
56
  this.updateFormItem();
47
57
  });
48
58
  }
59
+ updateFormItem() {
60
+ const items = this.mdController.state.items || [];
61
+ this.data[this.name] = items;
62
+ return super.updateFormItem();
63
+ }
49
64
  /**
50
65
  * 删除多数据选中的数据
51
66
  * @author lxm
@@ -68,7 +83,22 @@ export class FormMDCtrlMDController extends FormMDCtrlController {
68
83
  }
69
84
  }
70
85
  refresh() {
71
- this.mdController.refresh();
86
+ if (this.mdController) {
87
+ this.mdController.refresh();
88
+ }
89
+ else {
90
+ ibiz.log.debug('mdController不存在');
91
+ }
92
+ }
93
+ /**
94
+ * 表单状态变更通知
95
+ *
96
+ * @author lxm
97
+ * @date 2022-09-20 18:09:07
98
+ */
99
+ async formStateNotify(state) {
100
+ await super.formStateNotify(state);
101
+ this.refresh();
72
102
  }
73
103
  async dataChangeNotify(names) {
74
104
  await super.dataChangeNotify(names);
@@ -101,9 +101,9 @@ export async function exportData(header, data, fileName) {
101
101
  }
102
102
  try {
103
103
  exportExcel.exportJsonToExcel({
104
- header,
105
- data,
106
- filename: fileName,
104
+ header, // 表头内容 数组格式
105
+ data, // 具体数据 这是个二维数组
106
+ filename: fileName, // 文件名称
107
107
  autoWidth: true, // 单元格是否自适应
108
108
  });
109
109
  return { ok: true };
@@ -1 +1 @@
1
- {"version":3,"file":"front-ui-action-provider.d.ts","sourceRoot":"","sources":["../../../src/ui-action/provider/front-ui-action-provider.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAa,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,eAAe,EAAc,MAAM,iBAAiB,CAAC;AAE9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;;;;;;;GAQG;AACH,qBAAa,qBAAsB,SAAQ,oBAAoB;IACvD,UAAU,CACd,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,eAAe,CAAC;IA+D3B;;;;;;;;OAQG;IAEH,SAAS,CAAC,OAAO,CACf,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,cAAc,GACnB,eAAe;IAalB;;;;;;OAMG;cACa,YAAY,CAC1B,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,IAAI,CAAC;IA4ChB;;;;;;OAMG;cACa,iBAAiB,CAC/B,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,eAAe,CAAC;IA8B3B;;;;;;OAMG;cACa,iBAAiB,CAC/B,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,IAAI,CAAC;CAoDjB"}
1
+ {"version":3,"file":"front-ui-action-provider.d.ts","sourceRoot":"","sources":["../../../src/ui-action/provider/front-ui-action-provider.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAa,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,eAAe,EAAc,MAAM,iBAAiB,CAAC;AAE9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;;;;;;;GAQG;AACH,qBAAa,qBAAsB,SAAQ,oBAAoB;IACvD,UAAU,CACd,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,eAAe,CAAC;IA+D3B;;;;;;;;OAQG;IAEH,SAAS,CAAC,OAAO,CACf,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,cAAc,GACnB,eAAe;IAalB;;;;;;OAMG;cACa,YAAY,CAC1B,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,IAAI,CAAC;IAgEhB;;;;;;OAMG;cACa,iBAAiB,CAC/B,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,eAAe,CAAC;IA8B3B;;;;;;OAMG;cACa,iBAAiB,CAC/B,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,IAAI,CAAC;CAoDjB"}
@@ -85,19 +85,19 @@ export class FrontUIActionProvider extends UIActionProviderBase {
85
85
  * @return {*}
86
86
  */
87
87
  async executePrint(action, args) {
88
- var _a, _b;
88
+ var _a, _b, _c;
89
89
  // 处理参数
90
- const { resultParams } = await this.handleParams(action, args.context, args.data, args.params);
90
+ const { resultContext, resultParams } = await this.handleParams(action, args.context, args.data, args.params);
91
91
  const appDataEntity = await ibiz.hub.getAppDataEntity(action.appDataEntityId);
92
92
  const appDEPrint = (_a = appDataEntity.appDEPrints) === null || _a === void 0 ? void 0 : _a.find(print => {
93
93
  return print.id === action.appDEPrintId;
94
94
  });
95
95
  if (appDEPrint) {
96
96
  let requestUrl = '';
97
- const { context } = args;
98
- if (context && context[appDataEntity.codeName.toLowerCase()]) {
97
+ if (resultContext &&
98
+ resultContext[appDataEntity.codeName.toLowerCase()]) {
99
99
  // TODO 临时写死printdata, 非标准,后续优化
100
- requestUrl += `/${(_b = appDataEntity.codeName2) === null || _b === void 0 ? void 0 : _b.toLowerCase()}/printdata/${context[appDataEntity.codeName.toLowerCase()]}`;
100
+ requestUrl += `/${(_b = appDataEntity.codeName2) === null || _b === void 0 ? void 0 : _b.toLowerCase()}/printdata/${resultContext[appDataEntity.codeName.toLowerCase()]}`;
101
101
  }
102
102
  else {
103
103
  throw new RuntimeError('没有找到数据主键');
@@ -108,8 +108,26 @@ export class FrontUIActionProvider extends UIActionProviderBase {
108
108
  params: Object.assign({ srfprinttag: appDEPrint.codeName }, resultParams),
109
109
  });
110
110
  if (res.ok) {
111
- const link = window.URL.createObjectURL(res.data);
112
- window.open(link, '_blank');
111
+ // 存在srfcontenttype参数需响应文件
112
+ if (resultParams && resultParams.srfcontenttype) {
113
+ // 获取文件
114
+ const disposition = res.headers['content-disposition'];
115
+ const filename = (_c = disposition
116
+ .split(';')
117
+ .find((str) => str.indexOf('filename=') !== -1)) === null || _c === void 0 ? void 0 : _c.slice(9);
118
+ const href = URL.createObjectURL(res.data);
119
+ const a = document.createElement('a');
120
+ a.href = href;
121
+ a.download = filename;
122
+ document.body.appendChild(a);
123
+ a.click();
124
+ document.body.removeChild(a);
125
+ URL.revokeObjectURL(href);
126
+ }
127
+ else {
128
+ const link = window.URL.createObjectURL(res.data);
129
+ window.open(link, '_blank');
130
+ }
113
131
  }
114
132
  else {
115
133
  throw new RuntimeError('打印失败');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ibiz-template/runtime",
3
- "version": "0.4.1-dev.0",
3
+ "version": "0.4.2",
4
4
  "description": "控制器包",
5
5
  "type": "module",
6
6
  "main": "out/index.js",
@@ -46,7 +46,7 @@
46
46
  "ramda": "^0.29.1"
47
47
  },
48
48
  "peerDependencies": {
49
- "@ibiz-template/core": "^0.3.0",
49
+ "@ibiz-template/core": "^0.4.0",
50
50
  "@ibiz/model-core": "^0.0.21",
51
51
  "async-validator": "^4.2.5",
52
52
  "dayjs": "^1.11.7",
@@ -59,5 +59,5 @@
59
59
  "qx-util": "^0.4.8",
60
60
  "ramda": "^0.29.0"
61
61
  },
62
- "gitHead": "4097fde2afcc68a383bbd1369f226bee8fb7a510"
62
+ "gitHead": "67c43e4d05bb716942928870c29d0ab87b2d1561"
63
63
  }
@@ -10,6 +10,7 @@ import {
10
10
  } from '../../../../../interface';
11
11
  import { getControlProvider } from '../../../../../register';
12
12
  import { FormMDCtrlController } from './form-mdctrl.controller';
13
+ import { FormNotifyState } from '../../../../constant';
13
14
 
14
15
  /**
15
16
  * 表单多数据部件(引用实体多数据部件模型)控制器
@@ -39,6 +40,17 @@ export class FormMDCtrlMDController extends FormMDCtrlController {
39
40
  */
40
41
  mdController!: IMDControlController;
41
42
 
43
+ /**
44
+ * 表单项名称
45
+ *
46
+ * @author lxm
47
+ * @date 2022-09-04 18:09:32
48
+ * @readonly
49
+ */
50
+ get name(): string {
51
+ return this.model.id!;
52
+ }
53
+
42
54
  protected async onInit(): Promise<void> {
43
55
  await super.onInit();
44
56
  const { contentControl } = this.model;
@@ -78,6 +90,12 @@ export class FormMDCtrlMDController extends FormMDCtrlController {
78
90
  });
79
91
  }
80
92
 
93
+ updateFormItem(): Promise<void> {
94
+ const items = this.mdController.state.items || [];
95
+ this.data[this.name] = items;
96
+ return super.updateFormItem();
97
+ }
98
+
81
99
  /**
82
100
  * 删除多数据选中的数据
83
101
  * @author lxm
@@ -104,7 +122,22 @@ export class FormMDCtrlMDController extends FormMDCtrlController {
104
122
  }
105
123
 
106
124
  refresh(): void {
107
- this.mdController.refresh();
125
+ if (this.mdController) {
126
+ this.mdController.refresh();
127
+ } else {
128
+ ibiz.log.debug('mdController不存在');
129
+ }
130
+ }
131
+
132
+ /**
133
+ * 表单状态变更通知
134
+ *
135
+ * @author lxm
136
+ * @date 2022-09-20 18:09:07
137
+ */
138
+ async formStateNotify(state: FormNotifyState): Promise<void> {
139
+ await super.formStateNotify(state);
140
+ this.refresh();
108
141
  }
109
142
 
110
143
  async dataChangeNotify(names: string[]): Promise<void> {
@@ -124,7 +124,7 @@ export class FrontUIActionProvider extends UIActionProviderBase {
124
124
  args: IUILogicParams,
125
125
  ): Promise<void> {
126
126
  // 处理参数
127
- const { resultParams } = await this.handleParams(
127
+ const { resultContext, resultParams } = await this.handleParams(
128
128
  action,
129
129
  args.context,
130
130
  args.data,
@@ -138,11 +138,13 @@ export class FrontUIActionProvider extends UIActionProviderBase {
138
138
  });
139
139
  if (appDEPrint) {
140
140
  let requestUrl: string = '';
141
- const { context } = args;
142
- if (context && context[appDataEntity.codeName!.toLowerCase()]) {
141
+ if (
142
+ resultContext &&
143
+ resultContext[appDataEntity.codeName!.toLowerCase()]
144
+ ) {
143
145
  // TODO 临时写死printdata, 非标准,后续优化
144
146
  requestUrl += `/${appDataEntity.codeName2?.toLowerCase()}/printdata/${
145
- context[appDataEntity.codeName!.toLowerCase()]
147
+ resultContext[appDataEntity.codeName!.toLowerCase()]
146
148
  }`;
147
149
  } else {
148
150
  throw new RuntimeError('没有找到数据主键');
@@ -156,8 +158,26 @@ export class FrontUIActionProvider extends UIActionProviderBase {
156
158
  },
157
159
  });
158
160
  if (res.ok) {
159
- const link = window.URL.createObjectURL(res.data as Blob);
160
- window.open(link, '_blank');
161
+ // 存在srfcontenttype参数需响应文件
162
+ if (resultParams && resultParams.srfcontenttype) {
163
+ // 获取文件
164
+ const disposition = res.headers['content-disposition'];
165
+ const filename = disposition
166
+ .split(';')
167
+ .find((str: string) => str.indexOf('filename=') !== -1)
168
+ ?.slice(9);
169
+ const href = URL.createObjectURL(res.data as Blob);
170
+ const a = document.createElement('a');
171
+ a.href = href;
172
+ a.download = filename;
173
+ document.body.appendChild(a);
174
+ a.click();
175
+ document.body.removeChild(a);
176
+ URL.revokeObjectURL(href);
177
+ } else {
178
+ const link = window.URL.createObjectURL(res.data as Blob);
179
+ window.open(link, '_blank');
180
+ }
161
181
  } else {
162
182
  throw new RuntimeError('打印失败');
163
183
  }