aldehyde 0.2.309 → 0.2.311
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/index.d.ts +2 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -1
- package/lib/layout2/components/user-button.d.ts +4 -1
- package/lib/layout2/components/user-button.d.ts.map +1 -1
- package/lib/layout2/components/user-button.js +4 -5
- package/lib/layout2/components/user-button.js.map +1 -1
- package/lib/layout3/css/main.css +12 -1
- package/lib/layout3/css/sider.css +0 -3
- package/lib/layout3/css/tabs-layout.css +0 -11
- package/lib/layout3/header.js +1 -1
- package/lib/layout3/header.js.map +1 -1
- package/lib/layout3/main.d.ts.map +1 -1
- package/lib/layout3/main.js +0 -1
- package/lib/layout3/main.js.map +1 -1
- package/lib/layout3/page.d.ts.map +1 -1
- package/lib/layout3/page.js +2 -2
- package/lib/layout3/page.js.map +1 -1
- package/lib/layout3/sider.d.ts.map +1 -1
- package/lib/layout3/sider.js +0 -2
- package/lib/layout3/sider.js.map +1 -1
- package/lib/login2/login.d.ts +4 -0
- package/lib/login2/login.d.ts.map +1 -1
- package/lib/login2/login.js +14 -41
- package/lib/login2/login.js.map +1 -1
- package/lib/login3/img/login-bg.png +0 -0
- package/lib/login3/img/login-content-bg.png +0 -0
- package/lib/login3/img/logo.png +0 -0
- package/lib/login3/index.less +104 -0
- package/lib/login3/login-page.d.ts +9 -0
- package/lib/login3/login-page.d.ts.map +1 -0
- package/lib/login3/login-page.js +35 -0
- package/lib/login3/login-page.js.map +1 -0
- package/lib/table/relation-table.d.ts.map +1 -1
- package/lib/table/relation-table.js +12 -2
- 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 +1 -0
- package/lib/tmpl/control-type-supportor.js.map +1 -1
- package/package.json +1 -1
- package/src/aldehyde/index.tsx +3 -1
- package/src/aldehyde/layout2/components/user-button.tsx +18 -15
- package/src/aldehyde/layout3/css/main.css +12 -1
- package/src/aldehyde/layout3/css/sider.css +0 -3
- package/src/aldehyde/layout3/css/tabs-layout.css +0 -11
- package/src/aldehyde/layout3/header.tsx +1 -1
- package/src/aldehyde/layout3/main.tsx +0 -1
- package/src/aldehyde/layout3/page.tsx +2 -1
- package/src/aldehyde/layout3/sider.tsx +0 -2
- package/src/aldehyde/login2/login.tsx +99 -100
- package/src/aldehyde/login3/img/login-bg.png +0 -0
- package/src/aldehyde/login3/img/login-content-bg.png +0 -0
- package/src/aldehyde/login3/img/logo.png +0 -0
- package/src/aldehyde/login3/index.less +104 -0
- package/src/aldehyde/login3/login-page.tsx +66 -0
- package/src/aldehyde/table/relation-table.tsx +10 -2
- package/src/aldehyde/tmpl/control-type-supportor.tsx +1 -0
- package/lib/lowcode-components/lowcode-view/component/screen-fit/index.less +0 -13
|
@@ -1,34 +1,44 @@
|
|
|
1
|
-
import {Button, Col, Form, Input, Row} from "antd";
|
|
1
|
+
import { Button, Col, Form, Input, Row } from "antd";
|
|
2
2
|
import React, { useEffect, useState } from "react";
|
|
3
3
|
import HCserviceV3 from "../tmpl/hcservice-v3";
|
|
4
4
|
import { useLocale } from "../locale/useLocale";
|
|
5
5
|
import { useParams } from "react-router-dom";
|
|
6
6
|
import Units from "../units";
|
|
7
|
-
import {SafetyCertificateOutlined} from "@ant-design/icons";
|
|
7
|
+
import { SafetyCertificateOutlined } from "@ant-design/icons";
|
|
8
8
|
import { useSessionStorageState } from 'ahooks';
|
|
9
|
-
import {KeepAliveTab} from "../hooks/use-tabs";
|
|
9
|
+
import { KeepAliveTab } from "../hooks/use-tabs";
|
|
10
|
+
|
|
10
11
|
type LoginPropType = {
|
|
11
12
|
onFinish?: (token: string) => void;
|
|
12
13
|
title?: any;
|
|
13
14
|
programCode?: string;
|
|
14
15
|
autoSaveUser?: boolean;
|
|
16
|
+
version?: string;
|
|
17
|
+
style?: { [key: string]: any };
|
|
15
18
|
};
|
|
16
19
|
|
|
17
20
|
type FormType = {
|
|
18
21
|
username: string;
|
|
19
22
|
password: string;
|
|
20
|
-
kaptchaText:string;
|
|
23
|
+
kaptchaText: string;
|
|
21
24
|
};
|
|
22
25
|
|
|
26
|
+
const defStyle = {
|
|
27
|
+
input: { borderRadius: "50px", background: "#EEF3FB" },
|
|
28
|
+
kaptcha: { borderRadius: "30px", background: "#EEF3FB" },
|
|
29
|
+
button: { shape: "round" }
|
|
30
|
+
}
|
|
31
|
+
|
|
23
32
|
const Login = (props: LoginPropType) => {
|
|
33
|
+
const { version = "v2", style = defStyle } = props;
|
|
24
34
|
// locale
|
|
25
35
|
const { translate } = useLocale();
|
|
26
36
|
const [keepAliveTabs, setKeepAliveTabs] = useSessionStorageState<KeepAliveTab[]>('keepAliveTabs', {
|
|
27
|
-
|
|
28
|
-
|
|
37
|
+
defaultValue: [],
|
|
38
|
+
});
|
|
29
39
|
|
|
30
40
|
useEffect(() => {
|
|
31
|
-
localStorage.setItem("version",
|
|
41
|
+
localStorage.setItem("version", version);
|
|
32
42
|
}, []);
|
|
33
43
|
|
|
34
44
|
const { programCode: routeProgramCode } = useParams();
|
|
@@ -36,17 +46,17 @@ const Login = (props: LoginPropType) => {
|
|
|
36
46
|
if (routeProgramCode === undefined) return;
|
|
37
47
|
Units.setProgramCode(routeProgramCode);
|
|
38
48
|
}, [routeProgramCode]);
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
49
|
+
const [loading, setLoading] = useState<boolean>(false);
|
|
50
|
+
const [needKaptcha, setNeedKaptcha] = useState<boolean>(false);
|
|
51
|
+
const [kaptchaImg, setKaptchaImg] = useState<string>(null);
|
|
52
|
+
const [kaptchaToken, setKaptchaToken] = useState<string>(null);
|
|
43
53
|
|
|
44
|
-
|
|
54
|
+
// form
|
|
45
55
|
const [form] = Form.useForm<FormType>();
|
|
46
56
|
const submit = async () => {
|
|
47
|
-
|
|
57
|
+
setKeepAliveTabs([]);
|
|
48
58
|
try {
|
|
49
|
-
const { username, password,kaptchaText } = await form.validateFields();
|
|
59
|
+
const { username, password, kaptchaText } = await form.validateFields();
|
|
50
60
|
|
|
51
61
|
setLoading(true);
|
|
52
62
|
const { programCode, onFinish } = props;
|
|
@@ -56,16 +66,16 @@ const Login = (props: LoginPropType) => {
|
|
|
56
66
|
);
|
|
57
67
|
const res = await HCserviceV3.login(
|
|
58
68
|
{ username, password },
|
|
59
|
-
|
|
60
|
-
|
|
69
|
+
kaptchaToken,
|
|
70
|
+
kaptchaText,
|
|
61
71
|
pubkey,
|
|
62
72
|
programCode ? programCode : routeProgramCode
|
|
63
73
|
);
|
|
64
74
|
if (res.status === "success") {
|
|
65
75
|
onFinish(res.token);
|
|
66
|
-
}else if (res.status === "error") {
|
|
67
|
-
|
|
68
|
-
|
|
76
|
+
} else if (res.status === "error") {
|
|
77
|
+
setNeedKaptcha(true);
|
|
78
|
+
await getKaptchaToken();
|
|
69
79
|
}
|
|
70
80
|
setLoading(false);
|
|
71
81
|
} catch (err) {
|
|
@@ -73,31 +83,31 @@ const Login = (props: LoginPropType) => {
|
|
|
73
83
|
}
|
|
74
84
|
};
|
|
75
85
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
+
const handleKeyDown = (event) => {
|
|
87
|
+
//按下enter键,触发login事件
|
|
88
|
+
switch (event.keyCode) {
|
|
89
|
+
case 13:
|
|
90
|
+
submit();
|
|
91
|
+
break;
|
|
92
|
+
default:
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
};
|
|
86
96
|
|
|
87
|
-
|
|
97
|
+
const getKaptchaToken = async () => {
|
|
88
98
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
99
|
+
let res = await HCserviceV3.getKaptchaToken(routeProgramCode);
|
|
100
|
+
if (res) {
|
|
101
|
+
let kaptchaImg;
|
|
102
|
+
if (res.img && res.img.indexOf("data:") == 0) {
|
|
103
|
+
kaptchaImg = res.img;
|
|
104
|
+
} else {
|
|
105
|
+
kaptchaImg = `data:image/png;base64,${res.img}`;
|
|
106
|
+
}
|
|
107
|
+
setKaptchaImg(kaptchaImg);
|
|
108
|
+
setKaptchaToken(res.kaptchaToken);
|
|
109
|
+
}
|
|
110
|
+
};
|
|
101
111
|
|
|
102
112
|
// button
|
|
103
113
|
return (
|
|
@@ -115,11 +125,10 @@ const Login = (props: LoginPropType) => {
|
|
|
115
125
|
<Input
|
|
116
126
|
placeholder={translate("请输入用户名")}
|
|
117
127
|
style={{
|
|
118
|
-
borderRadius: "50px",
|
|
119
|
-
background: "#EEF3FB",
|
|
120
128
|
height: "50px",
|
|
121
129
|
fontSize: "15px",
|
|
122
130
|
lineHeight: "15px",
|
|
131
|
+
...style.input
|
|
123
132
|
}}
|
|
124
133
|
/>
|
|
125
134
|
</Form.Item>
|
|
@@ -132,70 +141,59 @@ const Login = (props: LoginPropType) => {
|
|
|
132
141
|
placeholder={translate("请输入密码")}
|
|
133
142
|
onKeyDown={handleKeyDown}
|
|
134
143
|
style={{
|
|
135
|
-
borderRadius: "50px",
|
|
136
|
-
background: "#EEF3FB",
|
|
137
144
|
height: "50px",
|
|
138
145
|
fontSize: "15px",
|
|
139
146
|
lineHeight: "15px",
|
|
147
|
+
...style.input
|
|
140
148
|
}}
|
|
141
149
|
/>
|
|
142
150
|
</Form.Item>
|
|
143
151
|
{needKaptcha ? (
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
cursor: "pointer"
|
|
188
|
-
}}
|
|
189
|
-
// height={50}
|
|
190
|
-
width={110}
|
|
191
|
-
title={translate("${点击刷新}")}
|
|
192
|
-
onClick={getKaptchaToken}
|
|
193
|
-
src={kaptchaImg}
|
|
194
|
-
></img>
|
|
195
|
-
</Col>
|
|
196
|
-
</Row>
|
|
152
|
+
<Row gutter={8}>
|
|
153
|
+
<Col span={16}>
|
|
154
|
+
<Form.Item
|
|
155
|
+
name="kaptchaText"
|
|
156
|
+
rules={[
|
|
157
|
+
{
|
|
158
|
+
required: true,
|
|
159
|
+
message: translate("${请输入}${验证码}!"),
|
|
160
|
+
},
|
|
161
|
+
]}
|
|
162
|
+
>
|
|
163
|
+
<Input
|
|
164
|
+
style={{
|
|
165
|
+
height: "50px",
|
|
166
|
+
fontSize: "15px",
|
|
167
|
+
lineHeight: "15px",
|
|
168
|
+
...style.input
|
|
169
|
+
}}
|
|
170
|
+
onKeyDown={handleKeyDown}
|
|
171
|
+
prefix={
|
|
172
|
+
<SafetyCertificateOutlined className="site-form-item-icon" />
|
|
173
|
+
}
|
|
174
|
+
placeholder={translate("${验证码}")}
|
|
175
|
+
//onKeyDown={this.handleKeyDown}
|
|
176
|
+
/>
|
|
177
|
+
</Form.Item>
|
|
178
|
+
</Col>
|
|
179
|
+
<Col span={8}>
|
|
180
|
+
<img
|
|
181
|
+
style={{
|
|
182
|
+
height: "50px",
|
|
183
|
+
fontSize: "15px",
|
|
184
|
+
lineHeight: "15px",
|
|
185
|
+
cursor: "pointer",
|
|
186
|
+
width: "100%",
|
|
187
|
+
...style.kaptcha
|
|
188
|
+
}}
|
|
189
|
+
title={translate("${点击刷新}")}
|
|
190
|
+
onClick={getKaptchaToken}
|
|
191
|
+
src={kaptchaImg}
|
|
192
|
+
/>
|
|
193
|
+
</Col>
|
|
194
|
+
</Row>
|
|
197
195
|
) : (
|
|
198
|
-
|
|
196
|
+
""
|
|
199
197
|
)}
|
|
200
198
|
|
|
201
199
|
<Form.Item wrapperCol={{ span: 24 }}>
|
|
@@ -210,6 +208,7 @@ const Login = (props: LoginPropType) => {
|
|
|
210
208
|
fontSize: "15px",
|
|
211
209
|
lineHeight: "15px",
|
|
212
210
|
}}
|
|
211
|
+
{...style.button}
|
|
213
212
|
>
|
|
214
213
|
{translate("登录")}
|
|
215
214
|
</Button>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
.login-page {
|
|
2
|
+
width: 100%;
|
|
3
|
+
height: 100%;
|
|
4
|
+
min-height: 640px;
|
|
5
|
+
position: relative;
|
|
6
|
+
background-size: 100% 100%;
|
|
7
|
+
background-repeat: no-repeat;
|
|
8
|
+
display: flex;
|
|
9
|
+
flex-direction: row-reverse;
|
|
10
|
+
justify-content: flex-start;
|
|
11
|
+
align-items: center;
|
|
12
|
+
|
|
13
|
+
.login-logo-img {
|
|
14
|
+
position: absolute;
|
|
15
|
+
top: 20%;
|
|
16
|
+
left: 5%;
|
|
17
|
+
z-index: 1;
|
|
18
|
+
width: 40%;
|
|
19
|
+
min-width: 600px;
|
|
20
|
+
max-width: 1000px;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.login-content {
|
|
24
|
+
width: 500px;
|
|
25
|
+
background: linear-gradient(0deg, #FFFFFF 65%, #DFEDFF);
|
|
26
|
+
background-size: 100% 100%;
|
|
27
|
+
background-repeat: no-repeat;
|
|
28
|
+
margin-right: 5%;
|
|
29
|
+
z-index: 9;
|
|
30
|
+
|
|
31
|
+
.login-logo {
|
|
32
|
+
width: 100%;
|
|
33
|
+
padding: 0 40px;
|
|
34
|
+
|
|
35
|
+
.login-logo-text,
|
|
36
|
+
.login-logo-text-sub {
|
|
37
|
+
font-size: 28px;
|
|
38
|
+
padding: 12px 0 20px;
|
|
39
|
+
font-family: YouSheBiaoTiHei;
|
|
40
|
+
text-align: justify;
|
|
41
|
+
font-style: normal;
|
|
42
|
+
text-transform: none;
|
|
43
|
+
background-image: linear-gradient(180deg, #FFFFFF 0%, #90DEFF 100%);
|
|
44
|
+
/* 可以调整方向和颜色 */
|
|
45
|
+
/* 2. 关键: 将背景裁剪到文字形状 */
|
|
46
|
+
-webkit-background-clip: text;
|
|
47
|
+
/* 对于 Webkit 内核浏览器 (如 Safari, 老版Chrome) */
|
|
48
|
+
background-clip: text;
|
|
49
|
+
/* 标准属性 */
|
|
50
|
+
/* 3. 关键: 将文字颜色设置为透明,以显示背景渐变 */
|
|
51
|
+
-webkit-text-fill-color: transparent;
|
|
52
|
+
/* 对于 Webkit 内核浏览器 */
|
|
53
|
+
color: transparent;
|
|
54
|
+
/* 标准属性,但注意某些环境下可能需 -webkit-text-fill-color 配合 */
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.login-logo-text-sub {
|
|
58
|
+
font-size: 32px;
|
|
59
|
+
padding-top: 0;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.login-form {
|
|
64
|
+
padding: 40px;
|
|
65
|
+
min-height: 442px;
|
|
66
|
+
position: relative;
|
|
67
|
+
|
|
68
|
+
.ant-input::placeholder {
|
|
69
|
+
color: #9FCFF8;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.ant-input-password-icon {
|
|
73
|
+
color: #ffffff;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// 解决输入框自动填充时背景颜色变白的问题
|
|
77
|
+
input:-webkit-autofill,
|
|
78
|
+
input:-webkit-autofill:hover,
|
|
79
|
+
input:-webkit-autofill:focus,
|
|
80
|
+
input:-webkit-autofill:active {
|
|
81
|
+
transition: all 5000s ease-in-out 0s;
|
|
82
|
+
transition-property: background-color, color;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.reset-password {
|
|
86
|
+
width: 100%;
|
|
87
|
+
text-align: center;
|
|
88
|
+
|
|
89
|
+
.ant-btn-variant-link {
|
|
90
|
+
color: #9FCFF8;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.login-copyright {
|
|
95
|
+
font-weight: 600;
|
|
96
|
+
font-size: 14px;
|
|
97
|
+
color: #ffffff;
|
|
98
|
+
position: absolute;
|
|
99
|
+
bottom: 40px;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
}
|
|
104
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Login from "../login2/login";
|
|
3
|
+
import LoginBgPng from "./img/login-bg.png";
|
|
4
|
+
import LoginContentBgPng from "./img/login-content-bg.png";
|
|
5
|
+
import logoPng from "./img/logo.png";
|
|
6
|
+
import { useLocale } from "../locale/useLocale";
|
|
7
|
+
import HCDataSource from "../tmpl/hc-data-source";
|
|
8
|
+
import ProgramConfig from "../units";
|
|
9
|
+
import ResetPassword from "../layout/menu/reset-password";
|
|
10
|
+
import "./index.less";
|
|
11
|
+
|
|
12
|
+
type LoginPageProps = {
|
|
13
|
+
programName?: string;
|
|
14
|
+
copyright?: string;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
const LoginPage = (props: LoginPageProps) => {
|
|
18
|
+
|
|
19
|
+
const { translate } = useLocale();
|
|
20
|
+
|
|
21
|
+
return (
|
|
22
|
+
<div
|
|
23
|
+
className="login-page"
|
|
24
|
+
style={{ backgroundImage: `url(${LoginBgPng})` }}
|
|
25
|
+
>
|
|
26
|
+
<img src={logoPng} alt="" className="login-logo-img" />
|
|
27
|
+
<div className="login-content" style={{ backgroundImage: `url(${LoginContentBgPng})` }} >
|
|
28
|
+
<div className="login-logo">
|
|
29
|
+
<div className="login-logo-text">
|
|
30
|
+
{translate("${欢迎,登录}")}
|
|
31
|
+
</div>
|
|
32
|
+
<div className="login-logo-text-sub">
|
|
33
|
+
{props.programName == "Aldehyde" ? "" :
|
|
34
|
+
<>
|
|
35
|
+
{props.programName ? translate("${" + props.programName + "}") : translate("${" + ProgramConfig.programName() + "}")}
|
|
36
|
+
</>
|
|
37
|
+
}
|
|
38
|
+
</div>
|
|
39
|
+
</div>
|
|
40
|
+
<div className="login-form">
|
|
41
|
+
<Login
|
|
42
|
+
onFinish={(token) => {
|
|
43
|
+
HCDataSource.clear();
|
|
44
|
+
window.location.hash = "/v3/home";
|
|
45
|
+
ProgramConfig.setHydrocarbonToken(token);
|
|
46
|
+
}}
|
|
47
|
+
version="v3"
|
|
48
|
+
style={{
|
|
49
|
+
input: { background: "#00132B", borderColor: "#155b82", color: "#ffffff" },
|
|
50
|
+
kaptcha: { background: "#00132B", borderRadius: "6px" },
|
|
51
|
+
button: { shape: "default" }
|
|
52
|
+
}}
|
|
53
|
+
/>
|
|
54
|
+
<div className="reset-password">
|
|
55
|
+
<ResetPassword showUserName={true} />
|
|
56
|
+
</div>
|
|
57
|
+
<div className="login-copyright">
|
|
58
|
+
{"Copyright ◎ 2025" + (props.copyright ? props.copyright : "浙江恩赫控股集团有限公司")}
|
|
59
|
+
</div>
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
62
|
+
</div >
|
|
63
|
+
);
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
export default LoginPage;
|
|
@@ -524,7 +524,11 @@ class RelationTable extends React.PureComponent<
|
|
|
524
524
|
|
|
525
525
|
//追加
|
|
526
526
|
if (value) {
|
|
527
|
-
|
|
527
|
+
if(fieldGroupConfig.addRowPosition && fieldGroupConfig.addRowPosition==='end'){
|
|
528
|
+
selectdDatas.push(...value);
|
|
529
|
+
}else{
|
|
530
|
+
selectdDatas.unshift(...value);
|
|
531
|
+
}
|
|
528
532
|
}
|
|
529
533
|
|
|
530
534
|
onChange(fieldGroupConfig, selectdDatas);
|
|
@@ -603,7 +607,11 @@ class RelationTable extends React.PureComponent<
|
|
|
603
607
|
}
|
|
604
608
|
}
|
|
605
609
|
if (isAdd) {
|
|
606
|
-
|
|
610
|
+
if(fieldGroupConfig.addRowPosition && fieldGroupConfig.addRowPosition==='end'){
|
|
611
|
+
datas.push(dtmplData);
|
|
612
|
+
}else{
|
|
613
|
+
datas.unshift(dtmplData);
|
|
614
|
+
}
|
|
607
615
|
}
|
|
608
616
|
onChange(fieldGroupConfig, datas);
|
|
609
617
|
};
|
|
@@ -45,6 +45,7 @@ SupportInputTypes.add('yes-no-switch');
|
|
|
45
45
|
SupportInputTypes.add('caselect');
|
|
46
46
|
SupportInputTypes.add('relation');
|
|
47
47
|
SupportInputTypes.add('file');
|
|
48
|
+
SupportInputTypes.add('direct-file');
|
|
48
49
|
SupportInputTypes.add('picture');
|
|
49
50
|
SupportInputTypes.add('chemstruc');
|
|
50
51
|
SupportInputTypes.add('sql-code-editor');
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
.react-screen-box {
|
|
2
|
-
background-size: 100% 100%;
|
|
3
|
-
width: 100%;
|
|
4
|
-
height: 100%;
|
|
5
|
-
|
|
6
|
-
.screen-wrapper {
|
|
7
|
-
transition-property: all;
|
|
8
|
-
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
9
|
-
transition-duration: 300ms;
|
|
10
|
-
position: relative;
|
|
11
|
-
transform-origin: left top;
|
|
12
|
-
}
|
|
13
|
-
}
|