aldehyde 0.1.16 → 0.1.19
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.
- package/lib/controls/action/index.d.ts +4 -0
- package/lib/controls/action/index.d.ts.map +1 -1
- package/lib/controls/action/index.js +28 -5
- package/lib/controls/action/index.js.map +1 -1
- package/lib/controls/action/utils.js +1 -1
- package/lib/controls/action/utils.js.map +1 -1
- package/lib/controls/auto-complete/index.d.ts.map +1 -1
- package/lib/controls/auto-complete/index.js.map +1 -1
- package/lib/controls/cascader/index.d.ts +16 -7
- package/lib/controls/cascader/index.d.ts.map +1 -1
- package/lib/controls/cascader/index.js +86 -67
- package/lib/controls/cascader/index.js.map +1 -1
- package/lib/controls/cquery/cquick-button.d.ts +5 -1
- package/lib/controls/cquery/cquick-button.d.ts.map +1 -1
- package/lib/controls/cquery/cquick-button.js +13 -9
- package/lib/controls/cquery/cquick-button.js.map +1 -1
- package/lib/controls/date-picker/index.d.ts.map +1 -1
- package/lib/controls/date-picker/index.js +11 -19
- package/lib/controls/date-picker/index.js.map +1 -1
- package/lib/controls/entity-select/entity-select.d.ts.map +1 -1
- package/lib/controls/entity-select/entity-select.js +6 -4
- package/lib/controls/entity-select/entity-select.js.map +1 -1
- package/lib/controls/entity-select/lab-tree-select.d.ts +25 -0
- package/lib/controls/entity-select/lab-tree-select.d.ts.map +1 -0
- package/lib/controls/entity-select/lab-tree-select.js +121 -0
- package/lib/controls/entity-select/lab-tree-select.js.map +1 -0
- package/lib/controls/entity-select/popover-entity-select.d.ts.map +1 -1
- package/lib/controls/entity-select/popover-entity-select.js +13 -1
- package/lib/controls/entity-select/popover-entity-select.js.map +1 -1
- package/lib/controls/entry-control.d.ts.map +1 -1
- package/lib/controls/entry-control.js +21 -4
- package/lib/controls/entry-control.js.map +1 -1
- package/lib/controls/enum-tag/index.d.ts.map +1 -1
- package/lib/controls/enum-tag/index.js +7 -1
- package/lib/controls/enum-tag/index.js.map +1 -1
- package/lib/controls/input-number/index.js +7 -7
- package/lib/controls/input-number/index.js.map +1 -1
- package/lib/controls/view-control.d.ts.map +1 -1
- package/lib/controls/view-control.js +7 -2
- package/lib/controls/view-control.js.map +1 -1
- package/lib/detail/button/submit-button-bar.d.ts.map +1 -1
- package/lib/detail/button/submit-button-bar.js +8 -2
- package/lib/detail/button/submit-button-bar.js.map +1 -1
- package/lib/detail/edit/{modal-dtmpl-edit.d.ts → dtmpl-edit-page.d.ts} +8 -4
- package/lib/detail/edit/dtmpl-edit-page.d.ts.map +1 -0
- package/lib/detail/edit/{modal-dtmpl-edit.js → dtmpl-edit-page.js} +19 -10
- package/lib/detail/edit/dtmpl-edit-page.js.map +1 -0
- package/lib/detail/edit/dtmpl-edit.d.ts +2 -2
- package/lib/detail/edit/dtmpl-edit.d.ts.map +1 -1
- package/lib/form/criteria-form.js.map +1 -1
- package/lib/form/dtmpl-form.d.ts +4 -0
- package/lib/form/dtmpl-form.d.ts.map +1 -1
- package/lib/form/dtmpl-form.js +7 -4
- package/lib/form/dtmpl-form.js.map +1 -1
- package/lib/form/form-Item-group.d.ts +2 -0
- package/lib/form/form-Item-group.d.ts.map +1 -1
- package/lib/form/form-Item-group.js +5 -1
- package/lib/form/form-Item-group.js.map +1 -1
- package/lib/icon/index.d.ts +11 -0
- package/lib/icon/index.d.ts.map +1 -0
- package/lib/icon/index.js +22 -0
- package/lib/icon/index.js.map +1 -0
- package/lib/index.d.ts +5 -3
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +5 -3
- package/lib/index.js.map +1 -1
- package/lib/layout/menu/userinfo-bar.js +2 -2
- package/lib/layout/menu/userinfo-bar.js.map +1 -1
- package/lib/module/{dtmpl-page.d.ts → dtmpl-view-page.d.ts} +5 -5
- package/lib/module/dtmpl-view-page.d.ts.map +1 -0
- package/lib/module/{dtmpl-page.js → dtmpl-view-page.js} +5 -5
- package/lib/module/dtmpl-view-page.js.map +1 -0
- package/lib/module/ltmpl-page.js +2 -2
- package/lib/module/ltmpl-page.js.map +1 -1
- package/lib/table/act-table.js +3 -3
- package/lib/table/act-table.js.map +1 -1
- package/lib/table/column/column-selector.d.ts +0 -1
- package/lib/table/column/column-selector.d.ts.map +1 -1
- package/lib/table/column/column-selector.js +0 -1
- package/lib/table/column/column-selector.js.map +1 -1
- package/lib/table/index.css +1 -1
- package/lib/table/relation-table.d.ts +3 -1
- package/lib/table/relation-table.d.ts.map +1 -1
- package/lib/table/relation-table.js +11 -5
- package/lib/table/relation-table.js.map +1 -1
- package/lib/tmpl/control-type-supportor.d.ts.map +1 -1
- package/lib/tmpl/control-type-supportor.js +8 -1
- package/lib/tmpl/control-type-supportor.js.map +1 -1
- package/lib/tmpl/hc-data-source.d.ts +1 -0
- package/lib/tmpl/hc-data-source.d.ts.map +1 -1
- package/lib/tmpl/hc-data-source.js +54 -3
- package/lib/tmpl/hc-data-source.js.map +1 -1
- package/lib/tmpl/hcservice-v3.d.ts +3 -1
- package/lib/tmpl/hcservice-v3.d.ts.map +1 -1
- package/lib/tmpl/hcservice-v3.js +28 -0
- package/lib/tmpl/hcservice-v3.js.map +1 -1
- package/lib/tmpl/interface.d.ts +9 -3
- package/lib/tmpl/interface.d.ts.map +1 -1
- package/lib/tmpl/interface.js.map +1 -1
- package/lib/tmpl/tmpl-config-analysis.js +2 -2
- package/lib/tmpl/tmpl-config-analysis.js.map +1 -1
- package/lib/units/index.d.ts +5 -1
- package/lib/units/index.d.ts.map +1 -1
- package/lib/units/index.js +18 -0
- package/lib/units/index.js.map +1 -1
- package/package.json +1 -1
- package/src/aldehyde/controls/action/index.tsx +24 -6
- package/src/aldehyde/controls/action/utils.tsx +1 -1
- package/src/aldehyde/controls/auto-complete/index.tsx +0 -1
- package/src/aldehyde/controls/cascader/index.tsx +114 -0
- package/src/aldehyde/controls/cquery/cquick-button.tsx +13 -12
- package/src/aldehyde/controls/date-picker/index.tsx +15 -18
- package/src/aldehyde/controls/entity-select/entity-select.tsx +6 -4
- package/src/aldehyde/controls/entity-select/lab-tree-select.tsx +148 -0
- package/src/aldehyde/controls/entity-select/popover-entity-select.tsx +13 -1
- package/src/aldehyde/controls/entry-control.tsx +22 -5
- package/src/aldehyde/controls/enum-tag/index.tsx +8 -2
- package/src/aldehyde/controls/input-number/index.tsx +7 -7
- package/src/aldehyde/controls/view-control.tsx +7 -3
- package/src/aldehyde/detail/button/submit-button-bar.tsx +6 -3
- package/src/aldehyde/detail/edit/{modal-dtmpl-edit.tsx → dtmpl-edit-page.tsx} +36 -13
- package/src/aldehyde/detail/edit/dtmpl-edit.tsx +2 -2
- package/src/aldehyde/form/criteria-form.tsx +1 -1
- package/src/aldehyde/form/dtmpl-form.tsx +8 -4
- package/src/aldehyde/form/form-Item-group.tsx +6 -1
- package/src/aldehyde/icon/index.tsx +30 -0
- package/src/aldehyde/index.tsx +6 -4
- package/src/aldehyde/layout/menu/userinfo-bar.tsx +2 -2
- package/src/aldehyde/module/{dtmpl-page.tsx → dtmpl-view-page.tsx} +9 -16
- package/src/aldehyde/module/ltmpl-page.tsx +5 -5
- package/src/aldehyde/table/act-table.tsx +3 -3
- package/src/aldehyde/table/column/column-selector.tsx +0 -1
- package/src/aldehyde/table/index.css +1 -1
- package/src/aldehyde/table/relation-table.tsx +17 -8
- package/src/aldehyde/tmpl/control-type-supportor.tsx +7 -1
- package/src/aldehyde/tmpl/hc-data-source.tsx +59 -6
- package/src/aldehyde/tmpl/hcservice-v3.tsx +30 -1
- package/src/aldehyde/tmpl/interface.tsx +10 -4
- package/src/aldehyde/tmpl/tmpl-config-analysis.tsx +2 -2
- package/src/aldehyde/units/index.tsx +26 -2
- package/lib/detail/edit/modal-dtmpl-edit.d.ts.map +0 -1
- package/lib/detail/edit/modal-dtmpl-edit.js.map +0 -1
- package/lib/module/dtmpl-page.d.ts.map +0 -1
- package/lib/module/dtmpl-page.js.map +0 -1
- package/src/aldehyde/controls/cascader/index.js +0 -97
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
2
|
import {Drawer, Space,Button,ButtonProps} from 'antd'
|
|
3
|
-
import {CQueryConfig} from "../../tmpl/interface";
|
|
3
|
+
import {CQueryConfig,PageType} from "../../tmpl/interface";
|
|
4
4
|
import LtmplPage from "./../../module/ltmpl-page";
|
|
5
5
|
import {
|
|
6
6
|
EditOutlined,
|
|
7
7
|
} from '@ant-design/icons';
|
|
8
|
-
|
|
9
8
|
import Units from '../../units'
|
|
10
|
-
import
|
|
11
|
-
|
|
9
|
+
import DtmplEditPage from "../../detail/edit/dtmpl-edit-page";
|
|
10
|
+
import DtmplEdit from "../../detail/edit/dtmpl-edit";
|
|
12
11
|
interface CquickButtonProps extends ButtonProps{
|
|
13
12
|
mainCode:string;
|
|
14
13
|
cQueryConfig:CQueryConfig;
|
|
14
|
+
pageType:PageType;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
interface CquickButtonState {
|
|
@@ -29,7 +29,9 @@ class CquickButton extends React.PureComponent<CquickButtonProps, CquickButtonSt
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
static defaultProps={
|
|
33
|
+
pageType:'modal'
|
|
34
|
+
}
|
|
33
35
|
|
|
34
36
|
showDraw=(currentId:string)=>{
|
|
35
37
|
// console.log("点击了L2MenuQuickBar",currentId);
|
|
@@ -47,9 +49,8 @@ class CquickButton extends React.PureComponent<CquickButtonProps, CquickButtonSt
|
|
|
47
49
|
|
|
48
50
|
|
|
49
51
|
render() {
|
|
50
|
-
const {cQueryConfig,mainCode,type,...button}=this.props;
|
|
52
|
+
const {cQueryConfig,mainCode,type,pageType,...button}=this.props;
|
|
51
53
|
const {showDraw,} = this.state;
|
|
52
|
-
|
|
53
54
|
console.log("cQuery mainCode",mainCode);
|
|
54
55
|
let mcode=mainCode && mainCode.indexOf("@R@")>0?mainCode.split("@R@")[0]:mainCode;
|
|
55
56
|
return (
|
|
@@ -65,13 +66,14 @@ class CquickButton extends React.PureComponent<CquickButtonProps, CquickButtonSt
|
|
|
65
66
|
}}>{outlinedMap[cQueryConfig.title]?outlinedMap[cQueryConfig.title]:cQueryConfig.title}</Button>}
|
|
66
67
|
{!showDraw?null:
|
|
67
68
|
cQueryConfig.type=='edit'?
|
|
68
|
-
|
|
69
|
+
<DtmplEditPage pageType={pageType} visible={showDraw} onCancel={()=>{
|
|
69
70
|
this.setState({
|
|
70
71
|
showDraw:false,
|
|
71
72
|
})}}
|
|
72
73
|
sourceId={cQueryConfig.id}
|
|
73
|
-
|
|
74
|
-
|
|
74
|
+
code={mcode}
|
|
75
|
+
onOk={this.closeDrawer} />
|
|
76
|
+
:
|
|
75
77
|
<Drawer
|
|
76
78
|
placement={'left'}
|
|
77
79
|
title="关联查询"
|
|
@@ -94,8 +96,7 @@ class CquickButton extends React.PureComponent<CquickButtonProps, CquickButtonSt
|
|
|
94
96
|
}
|
|
95
97
|
</Drawer>
|
|
96
98
|
}
|
|
97
|
-
|
|
98
|
-
</>
|
|
99
|
+
</>
|
|
99
100
|
);
|
|
100
101
|
}
|
|
101
102
|
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
2
|
import {DatePicker as AntdDatePicker,TimePicker} from "antd";
|
|
3
3
|
import moment from "moment";
|
|
4
|
+
import type { Moment } from "moment";
|
|
4
5
|
import {FieldConfig,EControlProps} from "../../tmpl/interface";
|
|
5
6
|
import Units from "../../units";
|
|
6
|
-
import
|
|
7
|
+
import type { RangePickerProps } from 'antd/es/date-picker';
|
|
7
8
|
|
|
8
9
|
const {RangePicker} = AntdDatePicker;
|
|
9
10
|
|
|
@@ -15,38 +16,30 @@ interface DataPickerProps extends EControlProps{
|
|
|
15
16
|
|
|
16
17
|
const DatePicker: React.FC<DataPickerProps> = (props) => {
|
|
17
18
|
|
|
18
|
-
const {id,value:propsValue, itemType, fieldConfig, onChange,style} = props;
|
|
19
|
+
const {id,value:propsValue, itemType, fieldConfig, onChange,style,min,max} = props;
|
|
19
20
|
let value=propsValue;
|
|
20
21
|
let format = Units.getMomentFormat(itemType);
|
|
21
22
|
|
|
22
|
-
const changeValue = (value) => {
|
|
23
|
+
const changeValue = (value:Moment) => {
|
|
23
24
|
if (onChange) {
|
|
24
|
-
onChange(value?
|
|
25
|
+
onChange(value?value.format(format):undefined);
|
|
25
26
|
}
|
|
26
27
|
}
|
|
27
28
|
|
|
28
|
-
const changeRangeValue = (value:
|
|
29
|
+
const changeRangeValue = (value:Moment[]) => {
|
|
29
30
|
if (onChange) {
|
|
30
31
|
if(!value){
|
|
31
32
|
onChange(value);
|
|
32
33
|
}else if(value.length===2 && value[0] && value[1]){
|
|
33
|
-
onChange(
|
|
34
|
+
onChange(value[0].format(format)+"~"+value[1].format(format));
|
|
34
35
|
}
|
|
35
36
|
}
|
|
36
37
|
}
|
|
37
38
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
// changeRangeValue(TmplConfigAnalysis.current(value,format));
|
|
43
|
-
// break;
|
|
44
|
-
// default:
|
|
45
|
-
// changeValue(TmplConfigAnalysis.current(value,format)[0]);
|
|
46
|
-
// break;
|
|
47
|
-
// }
|
|
48
|
-
//
|
|
49
|
-
// }
|
|
39
|
+
const disabledDate: RangePickerProps['disabledDate'] = current => {
|
|
40
|
+
// console.log('current',moment(min,format).format(format));
|
|
41
|
+
return current && ( (max && moment(current.format(format),format) > moment(max,format)) || (min && moment(current.format(format),format) <moment(min,format)));
|
|
42
|
+
};
|
|
50
43
|
|
|
51
44
|
let entryControl = undefined;
|
|
52
45
|
let picker:"date" | "time" | "year" | "month" | "week" | "quarter"="date";
|
|
@@ -63,6 +56,7 @@ const DatePicker: React.FC<DataPickerProps> = (props) => {
|
|
|
63
56
|
style={{...style}}
|
|
64
57
|
picker={picker}
|
|
65
58
|
format={format}
|
|
59
|
+
disabledDate={disabledDate}
|
|
66
60
|
value={momentValue}
|
|
67
61
|
disabled={fieldConfig.disabled}
|
|
68
62
|
onChange={changeValue}
|
|
@@ -75,6 +69,7 @@ const DatePicker: React.FC<DataPickerProps> = (props) => {
|
|
|
75
69
|
entryControl = <AntdDatePicker
|
|
76
70
|
id={id}
|
|
77
71
|
style={{...style}}
|
|
72
|
+
disabledDate={disabledDate}
|
|
78
73
|
showTime={{format: Units.getDateTimeFormat(itemType)}}
|
|
79
74
|
picker='date'
|
|
80
75
|
format={format}
|
|
@@ -94,6 +89,7 @@ const DatePicker: React.FC<DataPickerProps> = (props) => {
|
|
|
94
89
|
entryControl = <RangePicker id={id} picker={picker}
|
|
95
90
|
style={{...style}}
|
|
96
91
|
format={format}
|
|
92
|
+
disabledDate={disabledDate}
|
|
97
93
|
value={momentValue}
|
|
98
94
|
disabled={fieldConfig.disabled}
|
|
99
95
|
onChange={changeRangeValue}/>;
|
|
@@ -108,6 +104,7 @@ const DatePicker: React.FC<DataPickerProps> = (props) => {
|
|
|
108
104
|
format={format}
|
|
109
105
|
style={{...style}}
|
|
110
106
|
value={momentValue}
|
|
107
|
+
disabledDate={disabledDate}
|
|
111
108
|
disabled={fieldConfig.disabled}
|
|
112
109
|
onChange={changeRangeValue}/>;
|
|
113
110
|
break;
|
|
@@ -201,10 +201,12 @@ export default class EntitySelect extends React.PureComponent<InnerEntitySelectP
|
|
|
201
201
|
pageInfo = queryData.pageInfo;
|
|
202
202
|
queryData.entities.forEach((item, index) => {
|
|
203
203
|
let title = item.fieldMap[titleId];
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
204
|
+
if(title){
|
|
205
|
+
let ts=title.split('@R@');
|
|
206
|
+
let t=ts && ts.length>0?ts[ts.length-1]:title;
|
|
207
|
+
let option = this.toOption(item.code,t , onEntityClick);
|
|
208
|
+
options.push(option);
|
|
209
|
+
}
|
|
208
210
|
})
|
|
209
211
|
return {options, touchEnd: queryData.touchEnd};
|
|
210
212
|
}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import * as React from 'react'
|
|
2
|
+
import {Button, Select, Spin,TreeSelect} from 'antd'
|
|
3
|
+
import {EControlProps, PageInfo, QueryData, QueryKey, SelectConfig, SourceName} from "../../tmpl/interface";
|
|
4
|
+
import {SearchOutlined} from '@ant-design/icons';
|
|
5
|
+
import debounce from 'lodash/debounce';
|
|
6
|
+
import './index.css';
|
|
7
|
+
import HcserviceV3 from "../../tmpl/hcservice-v3";
|
|
8
|
+
import HCDataSource from "../../tmpl/hc-data-source";
|
|
9
|
+
|
|
10
|
+
interface LabTreeSelectProps extends EControlProps {
|
|
11
|
+
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
interface LabTreeSelectState {
|
|
15
|
+
treeData: object[],
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
type LoadDataSource = {
|
|
19
|
+
options: any[],
|
|
20
|
+
touchEnd: boolean,
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export default class LabTreeSelect extends React.PureComponent<LabTreeSelectProps, LabTreeSelectState> {
|
|
24
|
+
|
|
25
|
+
static defaultProps = {
|
|
26
|
+
maxSelected: 100,
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
state = {
|
|
30
|
+
treeData: [],
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
async componentDidMount() {
|
|
34
|
+
this.setState({treeData:await this.loadSchoolLevelUnit()}) ;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
//第一步查根
|
|
38
|
+
loadSchoolLevelUnit=async ()=>{
|
|
39
|
+
let data=[];
|
|
40
|
+
let res=await HcserviceV3.requestLtmplQueryTop('221036732522497',{});
|
|
41
|
+
|
|
42
|
+
if(res.entities){
|
|
43
|
+
res.entities.forEach((item, index) => {
|
|
44
|
+
let d={};
|
|
45
|
+
d["id"]=item.code;
|
|
46
|
+
d['level']=1;
|
|
47
|
+
d["pId"]=0;
|
|
48
|
+
d["title"]= item.fieldMap['228431869288450'];
|
|
49
|
+
d["value"]=d["id"]+"@R@"+d["title"];
|
|
50
|
+
d["key"]=d["value"];
|
|
51
|
+
d["selectable"]=false;
|
|
52
|
+
data.push(d);
|
|
53
|
+
})
|
|
54
|
+
}
|
|
55
|
+
return data;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
loadLab=async (mainCode)=>{
|
|
59
|
+
let data=[];
|
|
60
|
+
let res=await HcserviceV3.requestLtmplQueryTop('228261345665025',{mainCode});
|
|
61
|
+
|
|
62
|
+
if(res.entities){
|
|
63
|
+
res.entities.forEach((item, index) => {
|
|
64
|
+
let d={};
|
|
65
|
+
d["id"]=item.code;
|
|
66
|
+
d['level']=2;
|
|
67
|
+
d["pId"]=mainCode;
|
|
68
|
+
d["title"]= item.fieldMap['227350535774211'];
|
|
69
|
+
d["value"]=d["id"]+"@R@"+d["title"];
|
|
70
|
+
d["key"]=d["value"];
|
|
71
|
+
d["selectable"]=false;
|
|
72
|
+
data.push(d);
|
|
73
|
+
})
|
|
74
|
+
}
|
|
75
|
+
return data;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
loadRoom=async (mainCode)=>{
|
|
79
|
+
let data=[];
|
|
80
|
+
let res=await HcserviceV3.requestLtmplQueryTop('228261733638145',{mainCode});
|
|
81
|
+
|
|
82
|
+
if(res.entities){
|
|
83
|
+
res.entities.forEach((item, index) => {
|
|
84
|
+
let d={};
|
|
85
|
+
d["id"]=item.code;
|
|
86
|
+
d['level']=3;
|
|
87
|
+
d["pId"]=mainCode;
|
|
88
|
+
d["title"]= item.fieldMap['227349996806149'];
|
|
89
|
+
d["value"]=d["id"]+"@R@"+d["title"];
|
|
90
|
+
d["key"]=d["value"];
|
|
91
|
+
d["isLeaf"]=true;
|
|
92
|
+
data.push(d);
|
|
93
|
+
})
|
|
94
|
+
}
|
|
95
|
+
return data;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
onChange=(newValue: string)=>{
|
|
99
|
+
const {onChange} = this.props;
|
|
100
|
+
console.log("newValue",newValue);
|
|
101
|
+
onChange(newValue);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
onLoadData = async (node) => {
|
|
106
|
+
console.log('node:',node);
|
|
107
|
+
const {treeData}=this.state;
|
|
108
|
+
if(node['level']==1){
|
|
109
|
+
//加载实验室
|
|
110
|
+
let d = await this.loadLab(node['id']);
|
|
111
|
+
console.log('treeData dddd ',d);
|
|
112
|
+
this.setState({
|
|
113
|
+
treeData:[...treeData,...d]
|
|
114
|
+
})
|
|
115
|
+
}else if(node['level']==2){
|
|
116
|
+
let d = await this.loadRoom(node['id']);
|
|
117
|
+
console.log('treeData dddd ',d);
|
|
118
|
+
this.setState({
|
|
119
|
+
treeData:[...treeData,...d]
|
|
120
|
+
})
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
render() {
|
|
125
|
+
const {id,value, fieldConfig, style} = this.props;
|
|
126
|
+
const {treeData} = this.state;
|
|
127
|
+
let v;
|
|
128
|
+
if(value){
|
|
129
|
+
v=value.split("@R@")[1];
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
console.log('treeData',treeData);
|
|
133
|
+
return (
|
|
134
|
+
<TreeSelect
|
|
135
|
+
treeDataSimpleMode
|
|
136
|
+
style={{ width: '100%' ,minWidth:'260px'}}
|
|
137
|
+
value={v}
|
|
138
|
+
dropdownStyle={{ maxHeight: 400, overflow: 'auto' }}
|
|
139
|
+
placeholder="--请选择--"
|
|
140
|
+
onChange={this.onChange}
|
|
141
|
+
loadData={this.onLoadData}
|
|
142
|
+
treeData={treeData}
|
|
143
|
+
/>
|
|
144
|
+
)
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
|
|
@@ -33,7 +33,19 @@ export default class EntitySelect extends React.PureComponent<EntitySelectProps,
|
|
|
33
33
|
let newValue = [];
|
|
34
34
|
if (selectedRows) {
|
|
35
35
|
for (let row of selectedRows) {
|
|
36
|
-
|
|
36
|
+
let title:string=null;
|
|
37
|
+
if(row.title instanceof Array){
|
|
38
|
+
title = row.title[0];
|
|
39
|
+
}else{
|
|
40
|
+
title = row.title;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
console.log('1323',title);
|
|
44
|
+
if(row.title && row.title.includes("@R@")){
|
|
45
|
+
let ts= title.split('@R@');
|
|
46
|
+
title=ts[ts.length-1];
|
|
47
|
+
}
|
|
48
|
+
newValue.push(row.code + '@R@' + title);
|
|
37
49
|
}
|
|
38
50
|
}
|
|
39
51
|
onChange(newValue);
|
|
@@ -12,10 +12,13 @@ import loadable from "@loadable/component";
|
|
|
12
12
|
import HCDataSource from "../tmpl/hc-data-source";
|
|
13
13
|
import Upload from '../controls/upload';
|
|
14
14
|
import Progress from './progress'
|
|
15
|
-
|
|
15
|
+
import Cascader from './cascader'
|
|
16
16
|
import EntitySelect from "./entity-select/entity-select";
|
|
17
17
|
import PopoverEntitySelect from './entity-select/popover-entity-select'
|
|
18
18
|
import ColorPicker from './color-picker'
|
|
19
|
+
import LabTreeSelect from './entity-select/lab-tree-select'
|
|
20
|
+
import Units from "../units";
|
|
21
|
+
import {ProgramConfig} from "../index";
|
|
19
22
|
// import EntitySelect from "./entity-select/inner-entity-select";
|
|
20
23
|
// import ChemStruc from "./chemstruc/graph";
|
|
21
24
|
const CheckboxGroup=Checkbox.Group;
|
|
@@ -66,8 +69,13 @@ function renderControl(id:any,fieldConfig: FieldConfig, fieldValue: any, onChang
|
|
|
66
69
|
let disabled: boolean = fieldConfig.disabled;
|
|
67
70
|
|
|
68
71
|
let viewOrEdit: ViewOrEdit = 'edit';
|
|
72
|
+
let fieldConfigM:string=fieldConfig.min;
|
|
73
|
+
let min=(fieldConfigM || fieldConfigM=='0' ) ? Units.configParamTrans(fieldConfigM) : undefined;
|
|
74
|
+
fieldConfigM=fieldConfig.max;
|
|
75
|
+
let max=(fieldConfigM || fieldConfigM=='0' ) ? Units.configParamTrans(fieldConfigM) : undefined;;
|
|
76
|
+
|
|
69
77
|
let controlProps = {
|
|
70
|
-
id, fieldConfig, itemType, viewOrEdit, onChange, disabled, value: fieldValue, style: {minWidth: 220, width: '100%'}
|
|
78
|
+
id, fieldConfig,min,max, itemType, viewOrEdit, onChange, disabled, value: fieldValue, style: {minWidth: 220, width: '100%'}
|
|
71
79
|
}
|
|
72
80
|
|
|
73
81
|
let antdControlProps = {
|
|
@@ -80,6 +88,11 @@ function renderControl(id:any,fieldConfig: FieldConfig, fieldValue: any, onChang
|
|
|
80
88
|
disabled={true}
|
|
81
89
|
/>;
|
|
82
90
|
|
|
91
|
+
//自定义组件为先
|
|
92
|
+
if(ProgramConfig.getCustomEditControl(itemType)){
|
|
93
|
+
return React.createElement(ProgramConfig.getCustomEditControl(itemType),controlProps);
|
|
94
|
+
}
|
|
95
|
+
|
|
83
96
|
switch (itemType) {
|
|
84
97
|
case 'int':
|
|
85
98
|
case 'decimal':
|
|
@@ -183,7 +196,7 @@ function renderControl(id:any,fieldConfig: FieldConfig, fieldValue: any, onChang
|
|
|
183
196
|
entryControl = <AutoComplete {...controlProps} />
|
|
184
197
|
break;
|
|
185
198
|
case 'caselect':
|
|
186
|
-
entryControl
|
|
199
|
+
entryControl =<Cascader {...controlProps}></Cascader>;
|
|
187
200
|
break;
|
|
188
201
|
case 'relation':
|
|
189
202
|
entryControl = unSupportControl;
|
|
@@ -200,11 +213,15 @@ function renderControl(id:any,fieldConfig: FieldConfig, fieldValue: any, onChang
|
|
|
200
213
|
case 'relselect':
|
|
201
214
|
case 'refselect':
|
|
202
215
|
case 'entity-select':
|
|
203
|
-
entryControl=<EntitySelect maxSelected={
|
|
216
|
+
entryControl=<EntitySelect maxSelected={max?parseInt(max):undefined} {...controlProps} />
|
|
204
217
|
// entryControl = <EntitySelect {...controlProps} sourceName={'rcriteria'}></EntitySelect>
|
|
205
218
|
break;
|
|
206
219
|
case 'table-entity-select':
|
|
207
|
-
entryControl=<PopoverEntitySelect maxSelected={
|
|
220
|
+
entryControl=<PopoverEntitySelect maxSelected={max?parseInt(max):undefined} {...controlProps} />
|
|
221
|
+
// entryControl = <EntitySelect {...controlProps} sourceName={'rcriteria'}></EntitySelect>
|
|
222
|
+
break;
|
|
223
|
+
case 'lab-tree-select':
|
|
224
|
+
entryControl=<LabTreeSelect maxSelected={max?parseInt(max):undefined} {...controlProps} />
|
|
208
225
|
// entryControl = <EntitySelect {...controlProps} sourceName={'rcriteria'}></EntitySelect>
|
|
209
226
|
break;
|
|
210
227
|
case 'progress':
|
|
@@ -5,7 +5,6 @@ import HCDataSource from "../../tmpl/hc-data-source";
|
|
|
5
5
|
|
|
6
6
|
interface EnumTagsProps extends VControlProps {
|
|
7
7
|
|
|
8
|
-
|
|
9
8
|
}
|
|
10
9
|
|
|
11
10
|
|
|
@@ -15,10 +14,17 @@ const EnumTags: React.FC<EnumTagsProps> = (props) => {
|
|
|
15
14
|
let viewControl = undefined;
|
|
16
15
|
let tagList = [];
|
|
17
16
|
if (value) {
|
|
18
|
-
value
|
|
17
|
+
let v=value;
|
|
18
|
+
if(value instanceof Array){
|
|
19
|
+
|
|
20
|
+
}else {
|
|
21
|
+
v=value.split(',');
|
|
22
|
+
}
|
|
23
|
+
v.forEach(v => {
|
|
19
24
|
let color = HCDataSource.getEnumValueColor(fieldConfig.mstrucId, value);
|
|
20
25
|
tagList.push(<Tag key={v} color={color ? color : 'blue'}>{v}</Tag>)
|
|
21
26
|
})
|
|
27
|
+
|
|
22
28
|
}
|
|
23
29
|
viewControl = <span className="infoStyle">
|
|
24
30
|
{tagList}
|
|
@@ -9,7 +9,7 @@ interface InputNumberProps extends EControlProps {
|
|
|
9
9
|
|
|
10
10
|
const InputNumber: React.FC<InputNumberProps> = (props) => {
|
|
11
11
|
|
|
12
|
-
const {id,value, itemType, fieldConfig, onChange,style} = props;
|
|
12
|
+
const {id,value, itemType, fieldConfig, onChange,style,min,max} = props;
|
|
13
13
|
|
|
14
14
|
let entryControl = undefined;
|
|
15
15
|
|
|
@@ -53,7 +53,7 @@ const InputNumber: React.FC<InputNumberProps> = (props) => {
|
|
|
53
53
|
|
|
54
54
|
switch (itemType) {
|
|
55
55
|
case 'int':
|
|
56
|
-
entryControl = <AntdInputNumber style={{...style}} min={
|
|
56
|
+
entryControl = <AntdInputNumber style={{...style}} min={min} max={max}
|
|
57
57
|
{...antdControlProps} value={valueSingle}
|
|
58
58
|
onKeyUp={changeInt} onChange={changeValue}
|
|
59
59
|
/>
|
|
@@ -62,7 +62,7 @@ const InputNumber: React.FC<InputNumberProps> = (props) => {
|
|
|
62
62
|
case 'float':
|
|
63
63
|
case 'double':
|
|
64
64
|
entryControl = <AntdInputNumber style={{...style}}
|
|
65
|
-
{...antdControlProps} value={valueSingle} min={
|
|
65
|
+
{...antdControlProps} value={valueSingle} min={min} max={max}
|
|
66
66
|
// style={{width}}
|
|
67
67
|
step={0.1} onChange={changeValue}
|
|
68
68
|
/>
|
|
@@ -70,11 +70,11 @@ const InputNumber: React.FC<InputNumberProps> = (props) => {
|
|
|
70
70
|
case 'intrange':
|
|
71
71
|
entryControl =
|
|
72
72
|
<Space>
|
|
73
|
-
<AntdInputNumber min={
|
|
73
|
+
<AntdInputNumber min={min} max={max}
|
|
74
74
|
placeholder={`开始`} value={valueBegin}
|
|
75
75
|
onKeyUp={changeInt} onChange={changeBeginValue}
|
|
76
76
|
/>~
|
|
77
|
-
<AntdInputNumber min={
|
|
77
|
+
<AntdInputNumber min={min} max={max}
|
|
78
78
|
placeholder={`结束`} value={valueEnd}
|
|
79
79
|
onKeyUp={changeInt} onChange={changeEndValue}
|
|
80
80
|
/>
|
|
@@ -83,12 +83,12 @@ const InputNumber: React.FC<InputNumberProps> = (props) => {
|
|
|
83
83
|
case 'decimalrange':
|
|
84
84
|
entryControl =
|
|
85
85
|
<Space>
|
|
86
|
-
<AntdInputNumber min={
|
|
86
|
+
<AntdInputNumber min={min} max={max}
|
|
87
87
|
placeholder={`开始`} value={valueBegin}
|
|
88
88
|
onChange={changeBeginValue} step={0.1}
|
|
89
89
|
disabled={disabled}
|
|
90
90
|
/>~
|
|
91
|
-
<AntdInputNumber min={
|
|
91
|
+
<AntdInputNumber min={min} max={max}
|
|
92
92
|
placeholder={`结束`} value={valueEnd} step={0.1}
|
|
93
93
|
onChange={changeEndValue} disabled={disabled}
|
|
94
94
|
/>
|
|
@@ -13,6 +13,7 @@ import moment from "moment";
|
|
|
13
13
|
import Progress from './progress'
|
|
14
14
|
import ColorPicker from "./color-picker";
|
|
15
15
|
import EllipsisText from './text/ellipsis-text'
|
|
16
|
+
import {ProgramConfig} from "../index";
|
|
16
17
|
//import ChemStruc from "./chemstruc/graph";
|
|
17
18
|
// import HtmlEditor from "../HtmlEditor/tinymce";
|
|
18
19
|
const Loading = <Spin tip="Loading...">
|
|
@@ -54,12 +55,15 @@ function renderControl(fieldConfig: FieldConfig, fieldValue: any,pHolderType:Con
|
|
|
54
55
|
|
|
55
56
|
let placeholder = !fieldConfig.disabled ? `请输入${fieldConfig.title}` : "无需输入";
|
|
56
57
|
let disabled: boolean = fieldConfig.disabled;
|
|
57
|
-
let value = fieldValue ? fieldValue : fieldConfig.defaultValue ? fieldConfig.defaultValue : "";
|
|
58
|
+
let value = fieldValue ? fieldValue : fieldConfig.defaultValue && !Units.isConfigDefaultValue(fieldConfig.defaultValue) ? fieldConfig.defaultValue : "";
|
|
58
59
|
let viewOrEdit:ViewOrEdit='view';
|
|
59
60
|
let controlProps = {
|
|
60
61
|
fieldConfig, itemType, value,viewOrEdit,
|
|
61
62
|
}
|
|
62
|
-
|
|
63
|
+
//自定义组件为先
|
|
64
|
+
if(ProgramConfig.getCustomEditControl(itemType)){
|
|
65
|
+
return React.createElement(ProgramConfig.getCustomViewControl(itemType),controlProps);
|
|
66
|
+
}
|
|
63
67
|
const unSupportControl =
|
|
64
68
|
<span className="infoStyle">{`暂未完成-${itemType}`}</span>;
|
|
65
69
|
|
|
@@ -126,7 +130,7 @@ function renderControl(fieldConfig: FieldConfig, fieldValue: any,pHolderType:Con
|
|
|
126
130
|
viewControl = unSupportControl;
|
|
127
131
|
break;
|
|
128
132
|
case 'caselect':
|
|
129
|
-
viewControl =
|
|
133
|
+
viewControl = <span className="infoStyle">{value}</span>;
|
|
130
134
|
break;
|
|
131
135
|
case 'relation':
|
|
132
136
|
viewControl = unSupportControl
|
|
@@ -94,7 +94,7 @@ class SubmitButtonBar extends React.PureComponent<SubmitButtonProps, SubmitButto
|
|
|
94
94
|
// type="primary"
|
|
95
95
|
// >{item.title}</Button>
|
|
96
96
|
// </Popconfirm>
|
|
97
|
-
return <Action hiddenType={'disabled'} buttonType={'primary'} serial={serial} key={item.id} formRef={formRef} actionConfig={item} doAction={doSubmit}></Action>
|
|
97
|
+
return <Action iconType={'icon-title'} hiddenType={'disabled'} buttonType={'primary'} serial={serial} key={item.id} formRef={formRef} actionConfig={item} doAction={doSubmit}></Action>
|
|
98
98
|
}
|
|
99
99
|
})
|
|
100
100
|
}
|
|
@@ -104,8 +104,11 @@ class SubmitButtonBar extends React.PureComponent<SubmitButtonProps, SubmitButto
|
|
|
104
104
|
|
|
105
105
|
|
|
106
106
|
return (
|
|
107
|
-
<Affix
|
|
108
|
-
|
|
107
|
+
<Affix
|
|
108
|
+
//style={{position: 'absolute', right: 10, maxHeight: 100}}
|
|
109
|
+
// offsetBottom={this.calcOffsetBottom(buttons, actions)}>
|
|
110
|
+
style={{position: 'absolute',bottom:60,right: 15,}} offsetBottom={this.calcOffsetBottom(buttons, actions)}
|
|
111
|
+
>
|
|
109
112
|
<div className={'submitButtonBar'} >
|
|
110
113
|
<ul>
|
|
111
114
|
{buttons.includes('dtmplSave') ? <li key={100}>
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {Button, FormInstance, Modal, Popconfirm} from 'antd'
|
|
3
|
-
import {DtmplBaseProps, DtmplConfig, DtmplData} from "../../tmpl/interface";
|
|
2
|
+
import {Button, Drawer, FormInstance, Modal, Popconfirm, Space} from 'antd'
|
|
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";
|
|
6
6
|
import Units from "../../units";
|
|
7
7
|
import HcserviceV3 from "../../tmpl/hcservice-v3";
|
|
8
8
|
import Action from "../../controls/action";
|
|
9
|
+
import DtmplEdit from "./dtmpl-edit";
|
|
9
10
|
|
|
10
11
|
interface ModalEditorProps extends DtmplBaseProps {
|
|
11
|
-
height
|
|
12
|
+
height?: any,
|
|
13
|
+
width?:number,
|
|
12
14
|
visible: boolean,
|
|
13
15
|
onOk: (code: string) => void,
|
|
14
16
|
onCancel: () => void,
|
|
15
|
-
|
|
17
|
+
pageType:PageType;
|
|
16
18
|
}
|
|
17
19
|
|
|
18
20
|
interface ModalEditorState {
|
|
@@ -23,7 +25,7 @@ interface ModalEditorState {
|
|
|
23
25
|
dtmplData:DtmplData,
|
|
24
26
|
}
|
|
25
27
|
|
|
26
|
-
export default class
|
|
28
|
+
export default class DtmplEditPage extends React.PureComponent<ModalEditorProps, ModalEditorState> {
|
|
27
29
|
formRef = React.createRef<FormInstance>();
|
|
28
30
|
autoSaveTimer = -1000000000000000;
|
|
29
31
|
autoSaveInterval=undefined;
|
|
@@ -35,12 +37,13 @@ export default class ModalDtmplEdit extends React.PureComponent<ModalEditorProps
|
|
|
35
37
|
static defaultProps = {
|
|
36
38
|
showConfirm: true,
|
|
37
39
|
height: 500,
|
|
40
|
+
width:1250,
|
|
38
41
|
//antd modal
|
|
39
42
|
forceRender: true,
|
|
40
43
|
style: {maxWidth: 'calc(100vw - 60px)', maxHeight: 'calc(100vh - 50px)'},
|
|
41
44
|
okText: "确定",
|
|
42
45
|
cancelText: "取消",
|
|
43
|
-
|
|
46
|
+
pageType:'modal'
|
|
44
47
|
}
|
|
45
48
|
state = {
|
|
46
49
|
id:'modelDtmplEdit'+Units.getRandomNum(6),
|
|
@@ -160,7 +163,7 @@ export default class ModalDtmplEdit extends React.PureComponent<ModalEditorProps
|
|
|
160
163
|
//处理action
|
|
161
164
|
if (dtmplConfig) {
|
|
162
165
|
dtmplConfig.actions.forEach((ac, index) => {
|
|
163
|
-
footerButtons.unshift(<Action hiddenType={'disabled'} serial={serial} key={ac.id} formRef={this.formRef} actionConfig={ac} doAction={this.doSubmit}></Action>);
|
|
166
|
+
footerButtons.unshift(<Action iconType={'icon-title'} hiddenType={'disabled'} serial={serial} key={ac.id} formRef={this.formRef} actionConfig={ac} doAction={this.doSubmit}></Action>);
|
|
164
167
|
})
|
|
165
168
|
}
|
|
166
169
|
footerButtons.unshift(<Popconfirm key="back" placement="topLeft" title={"确定要取消本次修改内容吗?"} onConfirm={onCancel} okText="确定" cancelText="取消">
|
|
@@ -171,12 +174,12 @@ export default class ModalDtmplEdit extends React.PureComponent<ModalEditorProps
|
|
|
171
174
|
}
|
|
172
175
|
|
|
173
176
|
render() {
|
|
174
|
-
const {height, onOk, onCancel, code, sourceId, visible,mainCode} = this.props
|
|
177
|
+
const {height, onOk, onCancel, code, sourceId, visible,mainCode,width,pageType} = this.props
|
|
175
178
|
const {dtmplConfig,id,dtmplData} = this.state;
|
|
176
179
|
|
|
177
|
-
return <Modal
|
|
180
|
+
return (<> {pageType=='modal'? <Modal
|
|
178
181
|
visible={visible}
|
|
179
|
-
width={
|
|
182
|
+
width={width}
|
|
180
183
|
title={dtmplConfig ? dtmplConfig.title : ""}
|
|
181
184
|
bodyStyle={{height: height, overflow: 'auto'}}
|
|
182
185
|
destroyOnClose={true}
|
|
@@ -185,13 +188,33 @@ export default class ModalDtmplEdit extends React.PureComponent<ModalEditorProps
|
|
|
185
188
|
footer={this.getFooter()}
|
|
186
189
|
>
|
|
187
190
|
{visible} <div onClick={this.onClickBody}>
|
|
188
|
-
{/*<Scrollbars autoHide autoHideTimeout={1000}>*/}
|
|
189
191
|
<DtmplForm parentId={id} dtmplConfig={dtmplConfig} formRef={this.formRef} sourceId={sourceId}
|
|
190
192
|
onFinish={onOk}
|
|
191
193
|
showConfirm={false} dtmplData={dtmplData} onValuesChange={this.onValuesChange} />
|
|
192
|
-
{/*</Scrollbars>*/}
|
|
193
194
|
</div>
|
|
194
|
-
|
|
195
|
+
</Modal>
|
|
196
|
+
:
|
|
197
|
+
<Drawer
|
|
198
|
+
placement={'left'}
|
|
199
|
+
closable={true}
|
|
200
|
+
mask={false}
|
|
201
|
+
onClose={onCancel}
|
|
202
|
+
visible={visible}
|
|
203
|
+
width={width}
|
|
204
|
+
style={{
|
|
205
|
+
maxWidth: 1960,
|
|
206
|
+
}}
|
|
207
|
+
extra={
|
|
208
|
+
<Space>{this.getFooter()}</Space>
|
|
209
|
+
}
|
|
210
|
+
>
|
|
211
|
+
<DtmplForm parentId={id} dtmplConfig={dtmplConfig} formRef={this.formRef} sourceId={sourceId}
|
|
212
|
+
onFinish={onOk}
|
|
213
|
+
showConfirm={false} dtmplData={dtmplData} onValuesChange={this.onValuesChange} />
|
|
214
|
+
</Drawer>
|
|
215
|
+
}
|
|
216
|
+
</>
|
|
217
|
+
)
|
|
195
218
|
|
|
196
219
|
}
|
|
197
220
|
|