aldehyde 0.2.1 → 0.2.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 (81) hide show
  1. package/lib/controls/code-editor/sql-code-editor.js +1 -1
  2. package/lib/controls/code-editor/sql-code-editor.js.map +1 -1
  3. package/lib/controls/collapse-card/index.js +1 -1
  4. package/lib/controls/collapse-card/index.js.map +1 -1
  5. package/lib/controls/color-picker/index.d.ts.map +1 -1
  6. package/lib/controls/color-picker/index.js +2 -3
  7. package/lib/controls/color-picker/index.js.map +1 -1
  8. package/lib/controls/entity-select/entity-select.d.ts +15 -2
  9. package/lib/controls/entity-select/entity-select.d.ts.map +1 -1
  10. package/lib/controls/entity-select/entity-select.js +88 -17
  11. package/lib/controls/entity-select/entity-select.js.map +1 -1
  12. package/lib/controls/html-editor/draft.js +1 -1
  13. package/lib/controls/html-editor/draft.js.map +1 -1
  14. package/lib/detail/edit/dtmpl-edit-page.d.ts +2 -1
  15. package/lib/detail/edit/dtmpl-edit-page.d.ts.map +1 -1
  16. package/lib/detail/edit/dtmpl-edit-page.js +8 -6
  17. package/lib/detail/edit/dtmpl-edit-page.js.map +1 -1
  18. package/lib/detail/edit/fields-edit-card.js +1 -1
  19. package/lib/detail/edit/fields-edit-card.js.map +1 -1
  20. package/lib/detail/view/act-dtmpl-view.js +1 -1
  21. package/lib/detail/view/act-dtmpl-view.js.map +1 -1
  22. package/lib/{module/dtmpl-view-page.d.ts → detail/view/dtmpl-view-card.d.ts} +5 -5
  23. package/lib/detail/view/dtmpl-view-card.d.ts.map +1 -0
  24. package/lib/{module/dtmpl-view-page.js → detail/view/dtmpl-view-card.js} +7 -7
  25. package/lib/detail/view/dtmpl-view-card.js.map +1 -0
  26. package/lib/detail/view/dtmpl-view-page.d.ts +33 -0
  27. package/lib/detail/view/dtmpl-view-page.d.ts.map +1 -0
  28. package/lib/detail/view/dtmpl-view-page.js +46 -0
  29. package/lib/detail/view/dtmpl-view-page.js.map +1 -0
  30. package/lib/form/form-Item-group.d.ts +0 -1
  31. package/lib/form/form-Item-group.d.ts.map +1 -1
  32. package/lib/form/form-Item-group.js +0 -1
  33. package/lib/form/form-Item-group.js.map +1 -1
  34. package/lib/import/excel-import.js +1 -1
  35. package/lib/import/excel-import.js.map +1 -1
  36. package/lib/index.d.ts +2 -2
  37. package/lib/index.d.ts.map +1 -1
  38. package/lib/index.js +2 -2
  39. package/lib/index.js.map +1 -1
  40. package/lib/layout/coverstyle.css +3 -0
  41. package/lib/layout/menu/user-bar.d.ts +2 -0
  42. package/lib/layout/menu/user-bar.d.ts.map +1 -1
  43. package/lib/layout/menu/user-bar.js +21 -8
  44. package/lib/layout/menu/user-bar.js.map +1 -1
  45. package/lib/layout/menu/userinfo-bar.d.ts.map +1 -1
  46. package/lib/layout/menu/userinfo-bar.js +2 -7
  47. package/lib/layout/menu/userinfo-bar.js.map +1 -1
  48. package/lib/login/context-setter.d.ts.map +1 -1
  49. package/lib/login/context-setter.js.map +1 -1
  50. package/lib/table/query-table.js +2 -2
  51. package/lib/table/query-table.js.map +1 -1
  52. package/lib/table/relation-table.js +1 -1
  53. package/lib/table/relation-table.js.map +1 -1
  54. package/lib/tmpl/hcservice-v3.d.ts.map +1 -1
  55. package/lib/tmpl/hcservice-v3.js.map +1 -1
  56. package/lib/welcome/workbench.js +2 -2
  57. package/lib/welcome/workbench.js.map +1 -1
  58. package/package.json +30 -29
  59. package/src/aldehyde/controls/code-editor/sql-code-editor.tsx +1 -1
  60. package/src/aldehyde/controls/collapse-card/index.tsx +1 -1
  61. package/src/aldehyde/controls/color-picker/index.tsx +2 -5
  62. package/src/aldehyde/controls/entity-select/entity-select.tsx +171 -63
  63. package/src/aldehyde/controls/html-editor/draft.tsx +1 -1
  64. package/src/aldehyde/detail/edit/dtmpl-edit-page.tsx +16 -7
  65. package/src/aldehyde/detail/edit/fields-edit-card.tsx +1 -1
  66. package/src/aldehyde/detail/view/act-dtmpl-view.tsx +1 -1
  67. package/src/aldehyde/{module/dtmpl-view-page.tsx → detail/view/dtmpl-view-card.tsx} +8 -8
  68. package/src/aldehyde/detail/view/dtmpl-view-page.tsx +79 -0
  69. package/src/aldehyde/form/form-Item-group.tsx +0 -2
  70. package/src/aldehyde/import/excel-import.tsx +1 -1
  71. package/src/aldehyde/index.tsx +3 -3
  72. package/src/aldehyde/layout/coverstyle.css +3 -0
  73. package/src/aldehyde/layout/menu/user-bar.tsx +29 -14
  74. package/src/aldehyde/layout/menu/userinfo-bar.tsx +3 -20
  75. package/src/aldehyde/login/context-setter.tsx +1 -1
  76. package/src/aldehyde/table/query-table.tsx +2 -2
  77. package/src/aldehyde/table/relation-table.tsx +1 -1
  78. package/src/aldehyde/tmpl/hcservice-v3.tsx +107 -113
  79. package/src/aldehyde/welcome/workbench.tsx +2 -2
  80. package/lib/module/dtmpl-view-page.d.ts.map +0 -1
  81. package/lib/module/dtmpl-view-page.js.map +0 -1
@@ -1,25 +1,32 @@
1
1
  import * as React from 'react'
2
- import {Button, Select, Spin} from 'antd'
2
+ import {Button, Col, Divider, Row, Select, Spin, Tag} from 'antd'
3
3
  import {EControlProps, PageInfo, QueryData, QueryKey, SelectConfig} from "../../tmpl/interface";
4
- import {SearchOutlined} from '@ant-design/icons';
4
+ import {AlignLeftOutlined, EditOutlined, PlusOutlined, SearchOutlined} from '@ant-design/icons';
5
5
  import debounce from 'lodash/debounce';
6
6
  import './index.css';
7
7
  import HcserviceV3 from "../../tmpl/hcservice-v3";
8
8
  import HCDataSource from "../../tmpl/hc-data-source";
9
+ import DtmplViewPage from "../../detail/view/dtmpl-view-page";
10
+ import DtmplEditPage from "../../detail/edit/dtmpl-edit-page";
11
+ import {CustomTagProps} from 'rc-select/lib/BaseSelect';
9
12
 
10
13
  interface InnerEntitySelectProps extends EControlProps {
11
14
  maxSelected?: number,
12
15
  onEntityClick?: (code: string) => void,
13
- baseCriteria:object,
16
+ baseCriteria: object,
17
+ actions: Array<'add' | 'delete' | 'edit' | 'detail'>
14
18
  };
15
19
 
16
20
  interface InnerEntitySelectState {
17
21
  titleId: string,
18
22
  optionCacheKey: string,
19
- pageNo:number,
23
+ pageNo: number,
20
24
  loading: boolean,
21
- optionsCache: object ;
22
- selectConfig: SelectConfig
25
+ optionsCache: object;
26
+ selectConfig: SelectConfig,
27
+ showView: boolean,
28
+ drawCode: string,
29
+ showEdit: boolean,
23
30
  };
24
31
 
25
32
  type OptionCache = {
@@ -45,19 +52,57 @@ export default class EntitySelect extends React.PureComponent<InnerEntitySelectP
45
52
  state = {
46
53
  titleId: undefined,
47
54
  optionCacheKey: undefined,
48
- pageNo:1,
55
+ pageNo: 1,
49
56
  loading: false,
50
57
  optionsCache: {},
51
- selectConfig:undefined,
58
+ selectConfig: undefined,
59
+ showView: false,
60
+ showEdit: false,
61
+ drawCode: undefined,
52
62
  }
63
+ dropdownRender = (menu) => {
64
+ const {fieldConfig, actions} = this.props;
65
+ // console.log("menu",menu);
66
+ return <>
67
+ {menu}
68
+ {actions && actions.indexOf('add') ?
69
+ <>
70
+ <Divider style={{margin: '8px 0'}}/>
71
+ <Row justify="end">
72
+ <Col>
73
+ <Button type="text" icon={<PlusOutlined style={{color: '#0958d9'}}/>}
74
+ onClick={() => this.editItem()}>
75
+ 添加{fieldConfig.title}
76
+ </Button>
77
+ </Col>
78
+ </Row></> : null}
79
+ </>
80
+ };
81
+
82
+ editItem = (code?) => {
83
+ this.setState({
84
+ showEdit: true,
85
+ showView: false,
86
+ drawCode: code,
87
+ });
88
+ }
89
+
90
+ showItem = (code) => {
91
+ this.setState({
92
+ showEdit: false,
93
+ showView: true,
94
+ drawCode: code,
95
+ });
96
+ }
97
+
53
98
 
54
99
  componentDidUpdate(prevProps) {
55
- const {baseCriteria,mainCode,fieldConfig} = this.props;
56
- let {baseCriteria:preBaseCriteria,mainCode:preMainCode,fieldConfig:preFieldConfig}=prevProps;
57
- if((baseCriteria && JSON.stringify(baseCriteria) != JSON.stringify(preBaseCriteria) )||(mainCode && mainCode != preMainCode)
58
- ||(fieldConfig && preFieldConfig && fieldConfig.id != preFieldConfig.id)){
100
+ const {baseCriteria, mainCode, fieldConfig} = this.props;
101
+ let {baseCriteria: preBaseCriteria, mainCode: preMainCode, fieldConfig: preFieldConfig} = prevProps;
102
+ if ((baseCriteria && JSON.stringify(baseCriteria) != JSON.stringify(preBaseCriteria)) || (mainCode && mainCode != preMainCode)
103
+ || (fieldConfig && preFieldConfig && fieldConfig.id != preFieldConfig.id)) {
59
104
  this.setState({
60
- optionsCache:{}
105
+ optionsCache: {}
61
106
  })
62
107
  }
63
108
  }
@@ -70,22 +115,50 @@ export default class EntitySelect extends React.PureComponent<InnerEntitySelectP
70
115
 
71
116
 
72
117
  toOption = (code: string, title: string, onEntityClick) => {
118
+ const {actions}=this.props;
73
119
  let option = {
74
- code:code,
120
+ code: code,
75
121
  value: code + '@R@' + title,
76
- showlabel: onEntityClick ? <Button size={'small'} style={{padding: '0px'}} type="link" title=""
77
- onClick={(e) => {
78
- e.stopPropagation();
79
- onEntityClick(code);
80
- }}>{title}
81
- </Button> : title,
82
- label: title,
122
+ // showlabel: onEntityClick ? <Button size={'small'} style={{padding: '0px'}} type="link" title=""
123
+ // onClick={(e) => {
124
+ // e.stopPropagation();
125
+ // onEntityClick(code);
126
+ // }}>{title}
127
+ // </Button> : title,
128
+ label: <>
129
+ {title}
130
+ {actions && actions.indexOf("detail") ?
131
+ <Button size={'small'} type={'text'}><AlignLeftOutlined style={{color: '#0958d9'}} onClick={(event) => {
132
+ event.stopPropagation();
133
+ this.showItem(code);
134
+ }}/></Button>:null}
135
+
136
+ {actions && actions.indexOf("edit") ?
137
+ <Button size={'small'} type={'text'}><EditOutlined style={{color: '#0958d9'}} onClick={(event) => {
138
+ event.stopPropagation();
139
+ this.editItem(code);
140
+ }}/></Button>:null}
141
+
142
+ </>,
83
143
  };
84
144
  return option;
85
145
  }
86
146
 
87
- toValueArray=(value)=>{
88
- let valueArray: string[]=[];
147
+ doClose = () => {
148
+ this.setState({
149
+ drawCode: undefined,
150
+ showEdit: false,
151
+ showView: false,
152
+ })
153
+
154
+ }
155
+
156
+ drawSubmited = () => {
157
+ this.doClose();
158
+ }
159
+
160
+ toValueArray = (value) => {
161
+ let valueArray: string[] = [];
89
162
  if (value instanceof Array) {
90
163
  valueArray = value;
91
164
  } else {
@@ -95,11 +168,11 @@ export default class EntitySelect extends React.PureComponent<InnerEntitySelectP
95
168
  valueArray = [];
96
169
  }
97
170
  }
98
- let result=[];
171
+ let result = [];
99
172
  for (let v of valueArray) {
100
173
  if (v) {
101
174
  let vs = v.split("@R@");
102
- if(vs[1]!='null'){
175
+ if (vs[1] != 'null') {
103
176
  result.push(v);
104
177
  }
105
178
  }
@@ -112,27 +185,27 @@ export default class EntitySelect extends React.PureComponent<InnerEntitySelectP
112
185
  let options: object[] = [];
113
186
  //console.log('options value', value);
114
187
 
115
- let valueArray: string[]=this.toValueArray(value);
188
+ let valueArray: string[] = this.toValueArray(value);
116
189
  for (let v of valueArray) {
117
- if (v) {
118
- let vs = v.split("@R@");
119
- if(vs[1]!='null'){
120
- options.push(this.toOption(vs[0], vs[1], onEntityClick));
121
- }
190
+ if (v) {
191
+ let vs = v.split("@R@");
192
+ if (vs[1] != 'null') {
193
+ options.push(this.toOption(vs[0], vs[1], onEntityClick));
122
194
  }
195
+ }
123
196
  }
124
197
 
125
198
  //添加补充项
126
- if(fieldConfig.suppleOptions){
127
- fieldConfig.suppleOptions.forEach((o)=>{
128
- let had=false;
129
- options.forEach((s)=>{
130
- if(s['code']==o.code){
131
- had=true;
199
+ if (fieldConfig.suppleOptions) {
200
+ fieldConfig.suppleOptions.forEach((o) => {
201
+ let had = false;
202
+ options.forEach((s) => {
203
+ if (s['code'] == o.code) {
204
+ had = true;
132
205
  return;
133
206
  }
134
207
  })
135
- if(!had) {
208
+ if (!had) {
136
209
  options.push(this.toOption(o.code, o.title, undefined));
137
210
  }
138
211
  })
@@ -142,7 +215,7 @@ export default class EntitySelect extends React.PureComponent<InnerEntitySelectP
142
215
  }
143
216
 
144
217
  fetchNextPage = async () => {
145
- const {optionCacheKey, titleId,optionsCache} = this.state;
218
+ const {optionCacheKey, titleId, optionsCache} = this.state;
146
219
  let optionCache = optionsCache[optionCacheKey];
147
220
  let pageInfo = optionCache.pageInfo;
148
221
  if (!optionCache.touchEnd) {
@@ -153,15 +226,15 @@ export default class EntitySelect extends React.PureComponent<InnerEntitySelectP
153
226
  optionCache.touchEnd = dataSource.touchEnd;
154
227
  }
155
228
  this.setState({
156
- pageNo:pageInfo.pageNo,
229
+ pageNo: pageInfo.pageNo,
157
230
  })
158
231
  }
159
232
  }
160
233
 
161
234
  fetchOptions = async (searchText) => {
162
- const { fieldConfig,mainCode,baseCriteria} = this.props;
163
- const {optionsCache,selectConfig}=this.state;
164
- let optionCacheKey="withoutValue";
235
+ const {fieldConfig, mainCode, baseCriteria} = this.props;
236
+ const {optionsCache, selectConfig} = this.state;
237
+ let optionCacheKey = "withoutValue";
165
238
  //先从缓存里拿
166
239
  if (searchText) {
167
240
  optionCacheKey = searchText;
@@ -172,9 +245,9 @@ export default class EntitySelect extends React.PureComponent<InnerEntitySelectP
172
245
  this.setState({
173
246
  loading: true,
174
247
  })
175
- let selectConfig_=selectConfig;
248
+ let selectConfig_ = selectConfig;
176
249
  if (!selectConfig_) {
177
- selectConfig_ = await HCDataSource.requestSelectConfig( fieldConfig.id);
250
+ selectConfig_ = await HCDataSource.requestSelectConfig(fieldConfig.id);
178
251
  }
179
252
  let pageInfo = {
180
253
  pageNo: 1,
@@ -196,15 +269,18 @@ export default class EntitySelect extends React.PureComponent<InnerEntitySelectP
196
269
  /** 构建 dataSource **/
197
270
  //构建过滤条件
198
271
  let criteriaData = {};
199
- let mainCode_=mainCode;
200
- if(baseCriteria){
201
- criteriaData={...baseCriteria}
202
- if(!mainCode){
203
- mainCode_=baseCriteria['mainCode']; //当只在条件中设置mainCode时,保证生效不被设置为null
272
+ let mainCode_ = mainCode;
273
+ if (baseCriteria) {
274
+ criteriaData = {...baseCriteria}
275
+ if (!mainCode) {
276
+ mainCode_ = baseCriteria['mainCode']; //当只在条件中设置mainCode时,保证生效不被设置为null
204
277
  }
205
278
  }
206
279
  criteriaData[formItemName] = searchText;
207
- let queryKey: QueryKey = await HcserviceV3.requestLtmplQueryKey( fieldConfig.id, {...criteriaData, ...pageInfo,mainCode});
280
+ let queryKey: QueryKey = await HcserviceV3.requestLtmplQueryKey(fieldConfig.id, {
281
+ ...criteriaData, ...pageInfo,
282
+ mainCode
283
+ });
208
284
  let sourceData = await this.loadData(queryKey.key, pageInfo, titleId);
209
285
 
210
286
  optionCache = {
@@ -214,12 +290,12 @@ export default class EntitySelect extends React.PureComponent<InnerEntitySelectP
214
290
  searchValue: searchText,
215
291
  touchEnd: sourceData.touchEnd
216
292
  };
217
- optionsCache[optionCacheKey]=optionCache;
293
+ optionsCache[optionCacheKey] = optionCache;
218
294
  this.setState({
219
295
  optionCacheKey,
220
296
  titleId,
221
- optionsCache:{...optionsCache},
222
- selectConfig:selectConfig_,
297
+ optionsCache: {...optionsCache},
298
+ selectConfig: selectConfig_,
223
299
  loading: false,
224
300
  })
225
301
  } else {
@@ -252,9 +328,27 @@ export default class EntitySelect extends React.PureComponent<InnerEntitySelectP
252
328
  }
253
329
  }
254
330
 
331
+ tagRender = (props: CustomTagProps) => {
332
+ const {label, closable, onClose} = props;
333
+ const onPreventMouseDown = (event: React.MouseEvent<HTMLSpanElement>) => {
334
+ event.preventDefault();
335
+ event.stopPropagation();
336
+ };
337
+ return (
338
+ <Tag
339
+ onMouseDown={onPreventMouseDown}
340
+ closable={closable}
341
+ onClose={onClose}
342
+ style={{marginRight: 3}}
343
+ >
344
+ {label}
345
+ </Tag>
346
+ );
347
+ };
348
+
255
349
 
256
350
  loadData = async (queryKey: string, pageInfo: PageInfo, titleId: string): Promise<LoadDataSource> => {
257
- const {onEntityClick,baseCriteria} = this.props;
351
+ const {onEntityClick, baseCriteria} = this.props;
258
352
 
259
353
  let queryData: QueryData = await HcserviceV3.requestQueryData(queryKey, pageInfo);
260
354
  let options: object[] = [];
@@ -264,11 +358,11 @@ export default class EntitySelect extends React.PureComponent<InnerEntitySelectP
264
358
  //放入全局对象缓存
265
359
  //这个缓存后续还需要完善,因为太多了,容易爆掉
266
360
  HCDataSource.cache(item);
267
- if(title){
268
- let ts=title.split('@R@');
269
- let t=ts && ts.length>0?ts[ts.length-1]:title;
270
- if(t!='null'){
271
- let option = this.toOption(item.code,t , onEntityClick);
361
+ if (title) {
362
+ let ts = title.split('@R@');
363
+ let t = ts && ts.length > 0 ? ts[ts.length - 1] : title;
364
+ if (t != 'null') {
365
+ let option = this.toOption(item.code, t, onEntityClick);
272
366
  options.push(option);
273
367
  }
274
368
  }
@@ -294,8 +388,8 @@ export default class EntitySelect extends React.PureComponent<InnerEntitySelectP
294
388
  }
295
389
 
296
390
  render() {
297
- const {id,value, fieldConfig, onChange,disabled, style, maxSelected, onEntityClick} = this.props;
298
- const {optionCacheKey, loading,optionsCache} = this.state;
391
+ const {id, value, fieldConfig, onChange, disabled, style, maxSelected, onEntityClick, actions} = this.props;
392
+ const {optionCacheKey, loading, optionsCache, drawCode, showEdit, showView} = this.state;
299
393
  let initOptions = this.toOptions(value, onEntityClick);
300
394
  let exists;
301
395
  let properOptions = [...initOptions];
@@ -313,7 +407,7 @@ export default class EntitySelect extends React.PureComponent<InnerEntitySelectP
313
407
  }
314
408
  }
315
409
 
316
- return <Select
410
+ return <><Select
317
411
  disabled={disabled}
318
412
  id={id}
319
413
  style={{...style}}
@@ -325,6 +419,8 @@ export default class EntitySelect extends React.PureComponent<InnerEntitySelectP
325
419
  allowClear={true}
326
420
  showArrow={true}
327
421
  suffixIcon={<SearchOutlined/>}
422
+ dropdownRender={this.dropdownRender}
423
+ tagRender={actions && (actions.indexOf("detail") || actions.indexOf("edit")) ? this.tagRender : undefined}
328
424
  onSearch={this.debounceFetcher()}
329
425
  onClick={() => {
330
426
  debounce(this.fetchOptions, 100)(undefined)
@@ -337,7 +433,19 @@ export default class EntitySelect extends React.PureComponent<InnerEntitySelectP
337
433
  }
338
434
  }}>
339
435
  </Select>
436
+ {showView && drawCode ?
437
+ <DtmplViewPage pageType={"drawer"} placement={'left'} onClose={this.doClose} open={showView}
438
+ sourceId={fieldConfig.id} code={drawCode}></DtmplViewPage> : null}
439
+ {showEdit ? <DtmplEditPage pageType={"drawer"} placement={'left'} open={showEdit}
440
+ onCancel={this.doClose}
441
+ width={960}
442
+ sourceId={fieldConfig.id}
443
+ code={drawCode}
444
+ onOk={this.drawSubmited}/> : null}
445
+ </>
340
446
  }
447
+
448
+
341
449
  }
342
450
 
343
451
 
@@ -140,7 +140,7 @@ export default class Draft extends React.PureComponent<DraftProps, DraftState>{
140
140
  },
141
141
  }
142
142
 
143
- entryControl= <Card style={{width:'100%'}} bodyStyle={{padding:'2px',minHeight:'280px'}}>
143
+ entryControl= <Card style={{width:'100%'}} bodyStyle={{padding:'2px',minHeight:'280px'}} size={'small'}>
144
144
  <Editor
145
145
  readOnly={disabled}
146
146
  toolbarHidden={viewOrEdit=='view'? true: false}
@@ -1,5 +1,5 @@
1
- import React from 'react';
2
- import {Button, Drawer, FormInstance, Modal, Popconfirm, Space} from 'antd'
1
+ import React, {ReactNode} from 'react';
2
+ import {Button, Drawer, FormInstance, Modal, Popconfirm, Space,Card} from 'antd'
3
3
  import {DtmplBaseProps, DtmplConfig, DtmplData, PageType} from "../../tmpl/interface";
4
4
  import DtmplForm from '../../form/dtmpl-form';
5
5
  import HCDataSource from "../../tmpl/hc-data-source";
@@ -14,7 +14,8 @@ interface ModalEditorProps extends DtmplBaseProps {
14
14
  onOk: (code: string) => void,
15
15
  onCancel: () => void,
16
16
  pageType:PageType;
17
- placement?:'top' | 'right' | 'bottom' | 'left'
17
+ placement?:'top' | 'right' | 'bottom' | 'left',
18
+ title?:ReactNode,
18
19
  }
19
20
 
20
21
  interface ModalEditorState {
@@ -186,13 +187,15 @@ export default class DtmplEditPage extends React.PureComponent<ModalEditorProps,
186
187
  }
187
188
 
188
189
  render() {
189
- const {height, onOk, onCancel, code, sourceId, open,mainCode,width,pageType,placement,maxColsOnRow} = this.props
190
+ const {height, onOk, onCancel, code, sourceId, open,mainCode,width,pageType,placement,maxColsOnRow,title} = this.props
190
191
  const {dtmplConfig,id,dtmplData} = this.state;
191
192
 
193
+ let title1=title?title:dtmplConfig ? dtmplConfig.title : "";
194
+
192
195
  return (<> {pageType=='modal'? <Modal
193
196
  open={open}
194
197
  width={width}
195
- title={dtmplConfig ? dtmplConfig.title : ""}
198
+ title={title1}
196
199
  bodyStyle={{height: height, overflow: 'auto'}}
197
200
  destroyOnClose={true}
198
201
  centered
@@ -205,8 +208,9 @@ export default class DtmplEditPage extends React.PureComponent<ModalEditorProps,
205
208
  showConfirm={false} dtmplData={dtmplData} onValuesChange={this.onValuesChange} />
206
209
  </div>
207
210
  </Modal>
208
- :
211
+ :pageType=='drawer'?
209
212
  <Drawer
213
+ title={title1}
210
214
  placement={placement}
211
215
  closable={true}
212
216
  mask={false}
@@ -223,7 +227,12 @@ export default class DtmplEditPage extends React.PureComponent<ModalEditorProps,
223
227
  <DtmplForm mainCode={mainCode} parentId={id} dtmplConfig={dtmplConfig} formRef={this.formRef} sourceId={sourceId}
224
228
  onFinish={onOk} maxColsOnRow={maxColsOnRow}
225
229
  showConfirm={false} dtmplData={dtmplData} onValuesChange={this.onValuesChange} />
226
- </Drawer>
230
+ </Drawer>:<Card title={title1}>
231
+ <DtmplForm mainCode={mainCode} parentId={id} dtmplConfig={dtmplConfig} formRef={this.formRef} sourceId={sourceId}
232
+ onFinish={onOk} maxColsOnRow={maxColsOnRow}
233
+ showConfirm={false} dtmplData={dtmplData} onValuesChange={this.onValuesChange} />
234
+ </Card>
235
+
227
236
  }
228
237
  </>
229
238
  )
@@ -85,7 +85,7 @@ export default class FieldsEditCard extends React.PureComponent<FieldsEditCardPr
85
85
  >确定</Button>
86
86
  }
87
87
 
88
- return <Card
88
+ return <Card size={'small'}
89
89
  style={{width: 1000}}
90
90
  title={title}
91
91
  bodyStyle={{overflow: 'auto'}}
@@ -93,7 +93,7 @@ class ActDtmplView extends React.PureComponent<ActDtmplViewProps, ActDtmplViewSt
93
93
  }
94
94
  return (
95
95
  <div className={`detailPage ${showRightNav_ ? 'showRightNav' : 'noRightNav'}`}>
96
- <Card bordered={false}
96
+ <Card bordered={false} size={'small'}
97
97
  key={"detailTitle"}
98
98
  className="hoverable pageHeader"
99
99
  >
@@ -1,20 +1,20 @@
1
1
  import React from 'react'
2
- import DtmplEditPage from "../detail/edit/dtmpl-edit-page";
3
- import ActDtmplView from "../detail/view/act-dtmpl-view";
2
+ import DtmplEditPage from "../edit/dtmpl-edit-page";
3
+ import ActDtmplView from "./act-dtmpl-view";
4
4
 
5
5
  //以列表为入口的,页面内列表,基本原则是所有交互在页面内完成,不会触发路由。
6
6
 
7
- export interface DtmplViewPageProps {
7
+ export interface DtmplViewCardProps {
8
8
  sourceId?:string,
9
9
  code?:string;
10
10
  mainCode?:string;
11
11
  };
12
12
 
13
- export interface DtmplViewPageState {
13
+ export interface DtmplViewCardState {
14
14
  showDtmplEdit:boolean;
15
15
  };
16
16
 
17
- class DtmplViewPage extends React.PureComponent<DtmplViewPageProps, DtmplViewPageState> {
17
+ class DtmplViewCard extends React.PureComponent<DtmplViewCardProps, DtmplViewCardState> {
18
18
 
19
19
  state = {
20
20
  showDtmplEdit:false,
@@ -48,16 +48,16 @@ class DtmplViewPage extends React.PureComponent<DtmplViewPageProps, DtmplViewPag
48
48
  const { sourceId,code,mainCode} = this.props;
49
49
  return <>
50
50
  <ActDtmplView goDtmpl={this.goDtmpl} sourceId={sourceId} code={code} mainCode={mainCode}></ActDtmplView>
51
- <DtmplEditPage open={showDtmplEdit} onCancel={()=>{
51
+ {showDtmplEdit? <DtmplEditPage open={showDtmplEdit} onCancel={()=>{
52
52
  this.setState({
53
53
  showDtmplEdit:false,
54
54
  })}}
55
55
  sourceId={sourceId}
56
56
  code={code}
57
- onOk={this.handleDtmplEdit} />
57
+ onOk={this.handleDtmplEdit} />:null}
58
58
  </>
59
59
  }
60
60
  }
61
61
 
62
- export default DtmplViewPage;
62
+ export default DtmplViewCard;
63
63
 
@@ -0,0 +1,79 @@
1
+ import React, {ReactNode} from 'react'
2
+ import {Drawer, Space, Button, Modal} from 'antd'
3
+ import {SolutionOutlined} from '@ant-design/icons';
4
+ import DtmplViewCard from "../../detail/view/dtmpl-view-card";
5
+ import {DtmplBaseProps, PageType} from "../../tmpl/interface";
6
+
7
+ interface DtmplViewPageProps extends DtmplBaseProps{
8
+ title?:ReactNode,
9
+ open: boolean,
10
+ onClose: () => void,
11
+ pageType?:PageType;
12
+ placement?:'top' | 'right' | 'bottom' | 'left',
13
+ width?:string|number,
14
+ height?:string|number,
15
+ }
16
+
17
+ interface DtmplViewPageState {
18
+
19
+ }
20
+
21
+
22
+ class DtmplViewPage extends React.PureComponent<DtmplViewPageProps, DtmplViewPageState> {
23
+ state={
24
+
25
+ }
26
+
27
+ static defaultProps = {
28
+ height: 500,
29
+ width:1250,
30
+ forceRender: true,
31
+ style: {maxWidth: 'calc(100vw - 60px)', maxHeight: 'calc(100vh - 50px)'},
32
+ cancelText: "关闭",
33
+ pageType:'modal',
34
+ placement:'left',
35
+ open:false,
36
+ }
37
+
38
+ async componentDidMount() {
39
+
40
+ }
41
+
42
+ render() {
43
+ const {title,sourceId,code,placement,open,onClose,pageType,width,height}=this.props;
44
+ return <>{pageType=="modal"?
45
+ <Modal
46
+ open={open}
47
+ width={width}
48
+ title={title}
49
+ bodyStyle={{height: height, overflow: 'auto'}}
50
+ destroyOnClose={true}
51
+ centered
52
+ onCancel={onClose}
53
+ ><DtmplViewCard sourceId={sourceId} code={code}></DtmplViewCard>
54
+ </Modal>
55
+ :pageType=='drawer'?
56
+ <Drawer
57
+ placement={placement}
58
+ title={title}
59
+ closable={true}
60
+ mask={false}
61
+ onClose={onClose}
62
+ open={open}
63
+ width={width}
64
+ style={{
65
+ maxWidth: 1960,
66
+ }}
67
+ extra={
68
+ <Space>
69
+ <Button onClick={()=>onClose()}>关闭</Button>
70
+ </Space>
71
+ }
72
+ >
73
+ <DtmplViewCard sourceId={sourceId} code={code}></DtmplViewCard>
74
+ </Drawer>: <DtmplViewCard sourceId={sourceId} code={code}></DtmplViewCard>}
75
+ </>
76
+ }
77
+ }
78
+
79
+ export default DtmplViewPage;
@@ -1,12 +1,10 @@
1
1
  import React, {RefObject} from 'react'
2
2
  import {Col, Form, Row} from 'antd'
3
- import 'moment/locale/zh-cn';
4
3
  import {FieldConfig} from "../tmpl/interface";
5
4
  import EntryControl from "../controls/entry-control";
6
5
  import Units from '../units'
7
6
  import {FormInstance} from "antd/lib/form/hooks/useForm";
8
7
 
9
-
10
8
  const FormItem = Form.Item
11
9
 
12
10
  export interface FieldGroupProps {
@@ -247,7 +247,7 @@ export default class ExcelImport extends React.PureComponent<ExcelImportProps, E
247
247
  </h3>
248
248
  <Row>
249
249
  <Col span={14} offset={5}>
250
- <Card style={{minWidth:600}}>
250
+ <Card size={'small'} style={{minWidth:600}}>
251
251
  <Upload {...props}>
252
252
  <Button>
253
253
  <UploadOutlined />选择导入文件
@@ -52,8 +52,8 @@ const ImportRoute = loadable(() =>
52
52
  const LtmplRoute = loadable(() =>
53
53
  import("./routable/ltmpl-route"), {fallback: Loading});
54
54
  //import DtmplViewPage from './module/dtmpl-view-page';
55
- const DtmplViewPage = loadable(() =>
56
- import("./module/dtmpl-view-page"), {fallback: Loading});
55
+ const DtmplViewCard = loadable(() =>
56
+ import("./detail/view/dtmpl-view-card"), {fallback: Loading});
57
57
  const DtmplEditCard = loadable(() =>
58
58
  import("./detail/edit/dtmpl-edit-card"), {fallback: Loading});
59
59
  // import DtmplEdit from './detail/edit/dtmpl-edit';
@@ -91,7 +91,7 @@ const DtmplEditPage = loadable(() =>
91
91
 
92
92
 
93
93
 
94
- export {ActTable,SelectTable,Loginit,DtmplRoute,ImportRoute,LtmplRoute,DtmplViewPage,LtmplPage,Menu2layers,Block,UserBar,
94
+ export {ActTable,SelectTable,Loginit,DtmplRoute,ImportRoute,LtmplRoute,DtmplViewCard,LtmplPage,Menu2layers,Block,UserBar,
95
95
  ResetPassword,Footer,EntryControl,ViewControl,ProgramConfig,HydrocarbonService,QuickEntrance,Workbench,PopoverEntitySelect,DtmplEditCard
96
96
  ,DatePicker,DtmplEditPage,TmplInterface,TmplDataSource,Superagent,DtmplEdit,HCWelcome,MainPage,ExcelImportRoute,CustomPageRouter,HCCustomPageRouter,L2MenuMessageBar,L2MenuQuickBar,ContextSetter,}
97
97
 
@@ -32,6 +32,9 @@
32
32
  line-height: 1;
33
33
  overflow-x: auto;
34
34
  }
35
+ .ant-table-thead > tr > th {
36
+ font-weight: 500!important;
37
+ }
35
38
  .ant-table-thead > tr > th, .ant-table-tbody > tr > td{
36
39
  padding:8px 10px;
37
40
  white-space :nowrap;