zerod 0.6.0 → 0.6.3
Sign up to get free protection for your applications and to get access to all the features.
- package/components/Zform/index.jsx +68 -7
- package/components/Zform/style.scss +5 -4
- package/components/ZgapFilling/common.js +4 -1
- package/components/Zinfo/ColInfoItem.jsx +43 -4
- package/components/Zinfo/index.jsx +9 -9
- package/components/Zinfo/style.scss +12 -1
- package/components/ZliveForm/FormGroup.jsx +24 -8
- package/components/ZliveForm/common.js +15 -4
- package/components/ZliveForm/controls.js +9 -11
- package/components/ZliveForm/index.jsx +27 -2
- package/components/ZliveForm/liveFormActions/AddTagName.jsx +2 -0
- package/components/ZliveForm/liveFormActions/fieldTypeProperties/3_select.js +9 -1
- package/components/ZliveForm/liveFormActions/fieldTypeProperties/8_checkbox.js +8 -0
- package/components/ZliveForm/liveFormActions/fieldTypeProperties/9_radio.js +8 -0
- package/components/ZliveFormMultiRow/index.jsx +2 -0
- package/components/ZliveInfoMultiRow/ColTd.jsx +59 -19
- package/components/ZliveInfoMultiRow/style.scss +15 -7
- package/components/ZliveInfoViewer/common.js +94 -18
- package/components/ZliveInfoViewer/index.jsx +28 -7
- package/components/ZliveInfoViewer/style.scss +47 -6
- package/components/ZmainHOC/doc/rootRouter.md +6 -3
- package/components/ZmainHOC/index.jsx +2 -0
- package/components/ZpageHeader/rootRouter.md +6 -4
- package/components/zTool/index.js +1 -0
- package/package.json +2 -10
@@ -1,4 +1,5 @@
|
|
1
1
|
import React from 'react';
|
2
|
+
import ReactDOM from 'react-dom';
|
2
3
|
import { Form, Modal, Input, Button, Row, Col, message, ConfigProvider } from 'antd';
|
3
4
|
import zh_CN from 'antd/lib/locale-provider/zh_CN';
|
4
5
|
import PropTypes from 'prop-types';
|
@@ -227,7 +228,7 @@ export const Zform = Form.create()(
|
|
227
228
|
let newValue = value;
|
228
229
|
if (this.props.momentFormat) {
|
229
230
|
const currentItem = formItems.find((item) => item.key === key);
|
230
|
-
if (currentItem && currentItem.format) {
|
231
|
+
if (currentItem && currentItem.format && !moment.isMoment(value)) {
|
231
232
|
const toMoment = (val, format) => {
|
232
233
|
return moment(val, format);
|
233
234
|
};
|
@@ -245,7 +246,30 @@ export const Zform = Form.create()(
|
|
245
246
|
return newValue;
|
246
247
|
}
|
247
248
|
},
|
249
|
+
setErrorsId(rootEl, valuesIdMap) {
|
250
|
+
setTimeout(() => {
|
251
|
+
let root = rootEl || this.currRootEl;
|
252
|
+
|
253
|
+
if (root) {
|
254
|
+
if (root.localName === 'td') {
|
255
|
+
root = root.parentElement;
|
256
|
+
}
|
257
|
+
// console.dir(root);
|
258
|
+
Object.keys(valuesIdMap).forEach((key) => {
|
259
|
+
const inputEl = root.querySelector(`#${key}`);
|
260
|
+
let parEl = inputEl.parentElement;
|
261
|
+
while (parEl && !(parEl.className || '').includes('ant-form-item-control')) {
|
262
|
+
parEl = parEl.parentElement;
|
263
|
+
}
|
264
|
+
if (parEl) {
|
265
|
+
parEl.querySelector('.ant-form-explain').id = valuesIdMap[key];
|
266
|
+
}
|
267
|
+
});
|
268
|
+
}
|
269
|
+
}, 100);
|
270
|
+
},
|
248
271
|
setFieldsValue: (vals) => {
|
272
|
+
this.valuesIdMap = {};
|
249
273
|
const values = vals || this.props.values || this.props.formDefaultValues;
|
250
274
|
if (values) {
|
251
275
|
const saveSettingValues = { ...(this.state.saveSettingValues || {}), ...(values || {}) };
|
@@ -256,21 +280,32 @@ export const Zform = Form.create()(
|
|
256
280
|
const forms = !this.props.onlySetCurrentValues ? this.methods.getForms() : [this.form];
|
257
281
|
const otherFormItems = (this.props.getOtherFormItems && this.props.getOtherFormItems()) || [];
|
258
282
|
forms.forEach((form) => {
|
283
|
+
const valuesIdMap = {};
|
259
284
|
const formItems = form.zformItems.concat(otherFormItems);
|
260
285
|
if (values && formItems.length) {
|
261
286
|
const newValues = {};
|
287
|
+
const newFields = {};
|
262
288
|
formItems.forEach((field) => {
|
263
289
|
const key = field.key;
|
264
290
|
const value = values[key];
|
265
|
-
if (value
|
291
|
+
if (value && typeof value === 'object' && !Array.isArray(value) && value.errors) {
|
292
|
+
newFields[key] = {
|
293
|
+
value: this.methods.treatValue({ key, value: value.value, formItems }),
|
294
|
+
errors: value.errors.map((item) => new Error(item)),
|
295
|
+
};
|
296
|
+
valuesIdMap[key] = value.valueId;
|
297
|
+
} else if (value !== undefined) {
|
266
298
|
newValues[key] = this.methods.treatValue({ key, value, formItems });
|
267
299
|
}
|
268
300
|
});
|
269
|
-
|
270
|
-
if (
|
271
|
-
console.log(newValues, '----0');
|
301
|
+
|
302
|
+
if (Object.keys(newValues).length) {
|
272
303
|
form.setFieldsValue(newValues);
|
273
304
|
}
|
305
|
+
if (Object.keys(newFields).length) {
|
306
|
+
form.setFields(newFields);
|
307
|
+
}
|
308
|
+
this.methods.setErrorsId(form.zform.currRootEl, valuesIdMap);
|
274
309
|
}
|
275
310
|
});
|
276
311
|
},
|
@@ -482,6 +517,17 @@ export const Zform = Form.create()(
|
|
482
517
|
}
|
483
518
|
const_initItems.call(this, formItems, this.form, this.methods.changeFormItems, () => {
|
484
519
|
const_execAsync.call(this, (...rest) => {
|
520
|
+
// const fields = formItems.reduce((tol, curr) => {
|
521
|
+
// const fieldErr = {};
|
522
|
+
// if (Array.isArray(curr.errorMsgs) && curr.errorMsgs.length) {
|
523
|
+
// const val = this.form.getFieldValue(curr.key);
|
524
|
+
// fieldErr[curr.key] = { value: val, errors: curr.errorMsgs };
|
525
|
+
// }
|
526
|
+
// return { ...tol, ...fieldErr };
|
527
|
+
// }, {});
|
528
|
+
// if (Object.keys(fields).length) {
|
529
|
+
// this.methods.setFields(fields);
|
530
|
+
// }
|
485
531
|
this.form.formReady = true;
|
486
532
|
this.props.afterItemsRendered && this.props.afterItemsRendered(...rest);
|
487
533
|
});
|
@@ -536,6 +582,7 @@ export const Zform = Form.create()(
|
|
536
582
|
saveOptionsMapKey: this.form.saveOptionsMapKey,
|
537
583
|
getAsyncQueue: () => this.allAsync,
|
538
584
|
saveSettingValues: this.state.saveSettingValues || {},
|
585
|
+
zform: this,
|
539
586
|
};
|
540
587
|
this.prevSettingValues = this.state.saveSettingValues;
|
541
588
|
this.prevPropsForm = this.props.form;
|
@@ -580,7 +627,13 @@ export const Zform = Form.create()(
|
|
580
627
|
const items = this.getFormItems();
|
581
628
|
const wrapperClassname = classNames('z-form', className || '');
|
582
629
|
return this.setAntdConfigProvider(
|
583
|
-
<Form
|
630
|
+
<Form
|
631
|
+
ref={(el) => {
|
632
|
+
this.currRootEl = ReactDOM.findDOMNode(el);
|
633
|
+
}}
|
634
|
+
onSubmit={this.methods.onSubmit}
|
635
|
+
className={wrapperClassname}
|
636
|
+
style={style}>
|
584
637
|
<Row type="flex" className={`z-form-row z-form-label-${labelLayout} z-form-control-${controlSize}`}>
|
585
638
|
{items}
|
586
639
|
</Row>
|
@@ -599,7 +652,15 @@ export const Zform = Form.create()(
|
|
599
652
|
);
|
600
653
|
}
|
601
654
|
setAntdConfigProvider(children) {
|
602
|
-
return
|
655
|
+
return (
|
656
|
+
<ConfigProvider
|
657
|
+
ref={(el) => {
|
658
|
+
this.currRootEl = ReactDOM.findDOMNode(el);
|
659
|
+
}}
|
660
|
+
locale={zh_CN}>
|
661
|
+
{children}
|
662
|
+
</ConfigProvider>
|
663
|
+
);
|
603
664
|
}
|
604
665
|
},
|
605
666
|
);
|
@@ -1,9 +1,10 @@
|
|
1
1
|
@import "../../scss/common/z-form";
|
2
2
|
:global {
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
.z-form-control-small{
|
4
|
+
.ant-form-item-control{
|
5
|
+
line-height: 30px;
|
6
|
+
}
|
7
|
+
}
|
7
8
|
.z-no-control-border {
|
8
9
|
.ant-input,
|
9
10
|
.ant-select-selection,
|
@@ -4,7 +4,7 @@ export function analysisTextTemplate(textTemplate) {
|
|
4
4
|
}
|
5
5
|
export function analysisTextTemplateForBLOCK(textTemplate) {
|
6
6
|
let texts = textTemplate;
|
7
|
-
const placeRules = textTemplate.match(/<(div)[^>]*?>(?:<(div)[^>]*?>[\s\S]*?<\/\2>|[\s\S])*?<\/\1>/g);
|
7
|
+
const placeRules = textTemplate.match(/<(div)[^>]*?>(?:<(div)[^>]*?>(?:<(div)[^>]*?>[\s\S]*?<\/\3>|[\s\S])*?<\/\2>|[\s\S])*?<\/\1>/g);
|
8
8
|
const blocks = [];
|
9
9
|
let controls = [];
|
10
10
|
if (placeRules) {
|
@@ -203,3 +203,6 @@ export function getControlDefaultValue({ blocks }) {
|
|
203
203
|
}
|
204
204
|
return defaultValue;
|
205
205
|
}
|
206
|
+
|
207
|
+
|
208
|
+
|
@@ -1,17 +1,24 @@
|
|
1
1
|
import React from 'react';
|
2
|
-
|
2
|
+
import { Icon, Popover } from 'antd';
|
3
3
|
import ZpageLoading from '../ZpageLoading';
|
4
4
|
import ZtextBreak from '../ZtextBreak';
|
5
5
|
|
6
6
|
class ColInfoItem extends React.PureComponent {
|
7
7
|
static defaultProps = {
|
8
8
|
item: {},
|
9
|
+
data: {},
|
9
10
|
};
|
10
11
|
|
11
12
|
state = {
|
12
13
|
loading: this.props.loading,
|
13
14
|
item: this.props.item,
|
15
|
+
data: {},
|
16
|
+
dataErrors: {},
|
14
17
|
};
|
18
|
+
|
19
|
+
componentDidMount() {
|
20
|
+
this.methods.disponseData();
|
21
|
+
}
|
15
22
|
componentDidUpdate(prevProps) {
|
16
23
|
if (this.props.item !== prevProps.item) {
|
17
24
|
this.setState({
|
@@ -19,10 +26,12 @@ class ColInfoItem extends React.PureComponent {
|
|
19
26
|
loading: this.props.loading,
|
20
27
|
});
|
21
28
|
}
|
29
|
+
if (this.props.data !== prevProps.data) {
|
30
|
+
this.methods.disponseData();
|
31
|
+
}
|
22
32
|
}
|
23
33
|
render() {
|
24
|
-
const { data } = this.
|
25
|
-
const { item } = this.state;
|
34
|
+
const { item, data, dataErrors } = this.state;
|
26
35
|
const control = this.state.loading ? (
|
27
36
|
<span>加载中...</span>
|
28
37
|
) : typeof item.control === 'function' ? (
|
@@ -30,8 +39,9 @@ class ColInfoItem extends React.PureComponent {
|
|
30
39
|
) : (
|
31
40
|
data[item.key]
|
32
41
|
);
|
42
|
+
const isError = Array.isArray(dataErrors[item.key]) && dataErrors[item.key].length;
|
33
43
|
return (
|
34
|
-
<div className=
|
44
|
+
<div className={`z-info ${isError ? 'z-info-error' : ''}`}>
|
35
45
|
{item.label !== false ? (
|
36
46
|
<div
|
37
47
|
className="z-info-left z-info-left-content"
|
@@ -41,12 +51,41 @@ class ColInfoItem extends React.PureComponent {
|
|
41
51
|
) : null}
|
42
52
|
<div className="z-info-right z-info-right-content">
|
43
53
|
<ZpageLoading showLoading={this.state.loading} size="small" />
|
54
|
+
{isError ? (
|
55
|
+
<Popover
|
56
|
+
content={
|
57
|
+
<div>
|
58
|
+
{dataErrors[item.key].map((msg) => {
|
59
|
+
return <p key={msg}>{msg}</p>;
|
60
|
+
})}
|
61
|
+
</div>
|
62
|
+
}
|
63
|
+
title="错误信息">
|
64
|
+
<Icon type="warning" className="error-info-icon" />
|
65
|
+
</Popover>
|
66
|
+
) : null}
|
44
67
|
{typeof control === 'string' ? <ZtextBreak text={control} /> : control}
|
45
68
|
</div>
|
46
69
|
</div>
|
47
70
|
);
|
48
71
|
}
|
49
72
|
methods = {
|
73
|
+
disponseData: () => {
|
74
|
+
const data = {};
|
75
|
+
const dataErrors = {};
|
76
|
+
Object.keys(this.props.data).forEach((key) => {
|
77
|
+
const value = this.props.data[key];
|
78
|
+
data[key] = value;
|
79
|
+
if (value && typeof value === 'object' && !Array.isArray(value) && value.errors) {
|
80
|
+
data[key] = value.value;
|
81
|
+
dataErrors[key] = value.errors;
|
82
|
+
}
|
83
|
+
});
|
84
|
+
this.setState({
|
85
|
+
data,
|
86
|
+
dataErrors,
|
87
|
+
});
|
88
|
+
},
|
50
89
|
showLoading: (show) => {
|
51
90
|
this.setState({
|
52
91
|
loading: show,
|
@@ -16,15 +16,15 @@ class Zinfo extends React.PureComponent {
|
|
16
16
|
};
|
17
17
|
static defaultProps = {
|
18
18
|
items: [
|
19
|
-
{
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
},
|
19
|
+
// {
|
20
|
+
// lable: '字段名',
|
21
|
+
// key: 'name',
|
22
|
+
// span: null,
|
23
|
+
// render: () => {
|
24
|
+
// return (value, record) => <span>{value}</span>;
|
25
|
+
// },
|
26
|
+
// width: '160px',
|
27
|
+
// },
|
28
28
|
],
|
29
29
|
fieldValue: {},
|
30
30
|
colCount: 2,
|
@@ -16,11 +16,22 @@
|
|
16
16
|
margin-bottom: -1px;
|
17
17
|
}
|
18
18
|
.z-info-right-content {
|
19
|
+
position: relative;
|
19
20
|
border-right: 1px solid $border-color;
|
20
21
|
margin-right: -1px;
|
21
22
|
overflow: hidden;
|
23
|
+
.error-info-icon{
|
24
|
+
margin-right: 10px;
|
25
|
+
font-size: 16px;
|
26
|
+
vertical-align: middle;
|
27
|
+
}
|
28
|
+
}
|
29
|
+
.z-info-error{
|
30
|
+
.z-info-left-content,
|
31
|
+
.z-info-right-content {
|
32
|
+
color: #F52833;
|
33
|
+
}
|
22
34
|
}
|
23
|
-
|
24
35
|
}
|
25
36
|
.z-info-col + .z-info-col {
|
26
37
|
.z-info-left-content,
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import React, { useState, useEffect, useRef, useImperativeHandle, useCallback } from 'react';
|
1
|
+
import React, { useState, useEffect, useRef, useImperativeHandle, useCallback, useMemo } from 'react';
|
2
2
|
import ReactDOM from 'react-dom';
|
3
3
|
import Zform from '../Zform';
|
4
4
|
import FormContext from './FormContext';
|
@@ -79,7 +79,24 @@ const FormGroup = React.memo(
|
|
79
79
|
return firstShow;
|
80
80
|
},
|
81
81
|
}));
|
82
|
-
|
82
|
+
const groupTitle = useMemo(() => {
|
83
|
+
let title = null;
|
84
|
+
let labelShowTag = group.labelShowTag;
|
85
|
+
if (typeof labelShowTag !== 'number') {
|
86
|
+
labelShowTag = 1;
|
87
|
+
}
|
88
|
+
switch (labelShowTag) {
|
89
|
+
case 0:
|
90
|
+
title = null;
|
91
|
+
break;
|
92
|
+
case 2:
|
93
|
+
title = group.name;
|
94
|
+
break;
|
95
|
+
default:
|
96
|
+
title = <ZpanelTitle>{group.name}</ZpanelTitle>;
|
97
|
+
}
|
98
|
+
return title;
|
99
|
+
}, [group.labelShowTag, group.name]);
|
83
100
|
const [groupAttr, setGroupAttr] = useState({});
|
84
101
|
return firstShow ? (
|
85
102
|
<Col
|
@@ -90,14 +107,12 @@ const FormGroup = React.memo(
|
|
90
107
|
domRef.current = ReactDOM.findDOMNode(el);
|
91
108
|
}}>
|
92
109
|
<div className={`z-panel z-view-form-panel ${className || ''}`}>
|
93
|
-
{group.panelHeaderShow ? (
|
110
|
+
{groupTitle || group.panelHeaderShow ? (
|
94
111
|
<div className="z-panel-heading z-flex-space-between z-flex-wrap">
|
95
112
|
<div className="z-flex-items-v-center">
|
96
|
-
{typeof titleLeftRender === 'function'
|
97
|
-
titleLeftRender(group, groupAttr, setGroupAttr)
|
98
|
-
|
99
|
-
<ZpanelTitle>{group.name}</ZpanelTitle>
|
100
|
-
)}
|
113
|
+
{typeof titleLeftRender === 'function'
|
114
|
+
? titleLeftRender(group, groupAttr, setGroupAttr)
|
115
|
+
: groupTitle}
|
101
116
|
</div>
|
102
117
|
<div className="z-flex-items-v-center">
|
103
118
|
{typeof titleRightRender === 'function' &&
|
@@ -108,6 +123,7 @@ const FormGroup = React.memo(
|
|
108
123
|
<div className={group.groupLayout === 'horizontal' ? 'z-flex-1' : 'z-padding-15'}>
|
109
124
|
<MyForm
|
110
125
|
group={group}
|
126
|
+
controlSize={group.controlSize}
|
111
127
|
onSubmit={onSubmit}
|
112
128
|
onValidated={onValidated}
|
113
129
|
labelLayout={labelLayout || 'inline'}
|
@@ -40,10 +40,10 @@ export const labelShowTags = [
|
|
40
40
|
label: '默认组名样式',
|
41
41
|
value: 1,
|
42
42
|
},
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
43
|
+
{
|
44
|
+
label: '组名样式2',
|
45
|
+
value: 2,
|
46
|
+
},
|
47
47
|
];
|
48
48
|
//以 "seq" 字段排序
|
49
49
|
function sortList(o1, o2) {
|
@@ -165,6 +165,7 @@ export function getGroupItem(opt = {}, index) {
|
|
165
165
|
config: groupConfig,
|
166
166
|
hidden: group.hidden,
|
167
167
|
show: opt.linkages === null ? index === 0 : !group.hidden,
|
168
|
+
controlSize: opt.controlSize,
|
168
169
|
};
|
169
170
|
}
|
170
171
|
//从formData生成group数据
|
@@ -207,6 +208,7 @@ export function translateGroups({
|
|
207
208
|
doLinkageAction:
|
208
209
|
typeof doLinkageAction === 'function' ? doLinkageAction : doLinkageActionDefault,
|
209
210
|
groupLayout: formDataConf.groupLayout,
|
211
|
+
controlSize: formDataConf.controlSize,
|
210
212
|
getExtendComponents,
|
211
213
|
},
|
212
214
|
index,
|
@@ -312,3 +314,12 @@ export function treeDataAddKey(tree = [], distMap, srcMap, isLeaf) {
|
|
312
314
|
})
|
313
315
|
: [];
|
314
316
|
}
|
317
|
+
|
318
|
+
export function getResponseData(result = {}, dataIndex = 'data') {
|
319
|
+
const dotLs = dataIndex.split('.');
|
320
|
+
let data = result[dotLs.shift()];
|
321
|
+
while (dotLs.length) {
|
322
|
+
data = data[dotLs.shift()];
|
323
|
+
}
|
324
|
+
return data;
|
325
|
+
}
|
@@ -8,7 +8,7 @@ import moment from 'moment';
|
|
8
8
|
import MapChooseAddress from './liveFormControls/ZmapChooseAddress';
|
9
9
|
import TreeSelectLoader from './liveFormControls/TreeSelectLoader';
|
10
10
|
import CascaderLoader from './liveFormControls/CascaderLoader';
|
11
|
-
import { treeDataAddKey } from './common';
|
11
|
+
import { treeDataAddKey, getResponseData } from './common';
|
12
12
|
import UsersSelection from './liveFormControls/UsersSelection';
|
13
13
|
import CurrentUserInfo from './liveFormControls/CurrentUserInfo';
|
14
14
|
import ZsearchInput from './liveFormControls/ZsearchInput';
|
@@ -101,15 +101,6 @@ function paseFieldConfig(e, needDefault) {
|
|
101
101
|
return config;
|
102
102
|
}
|
103
103
|
|
104
|
-
function getResponseData(result = {}, dataIndex = 'data') {
|
105
|
-
const dotLs = dataIndex.split('.');
|
106
|
-
let data = result[dotLs.shift()];
|
107
|
-
while (dotLs.length) {
|
108
|
-
data = data[dotLs.shift()];
|
109
|
-
}
|
110
|
-
return data;
|
111
|
-
}
|
112
|
-
|
113
104
|
function selectControl(controlName) {
|
114
105
|
return function (e = {}, linkages, getGroupsFn = () => [], opt = {}, requestQuery = {}, currentForm) {
|
115
106
|
//当isAsync为true,并且selectionsType是异步类型,就强制异步请求
|
@@ -146,7 +137,14 @@ function selectControl(controlName) {
|
|
146
137
|
dropdownMatchSelectWidth: false,
|
147
138
|
...others,
|
148
139
|
...opt,
|
149
|
-
selectList
|
140
|
+
selectList: config.optionShowValue
|
141
|
+
? selectList.map((item) => {
|
142
|
+
return {
|
143
|
+
...item,
|
144
|
+
label: item.value !== item.label ? `${item.value}.${item.label}` : item.label,
|
145
|
+
};
|
146
|
+
})
|
147
|
+
: selectList,
|
150
148
|
onChange: (...rest) => {
|
151
149
|
(typeof e.doLinkageAction === 'function' ? e.doLinkageAction : doLinkageAction)({
|
152
150
|
ages: linkages,
|
@@ -24,7 +24,7 @@ import { getGroupItem, pareLinkages, removeSomeLinkage, labelShowTags } from './
|
|
24
24
|
import ZfullLayer from '../ZfullLayer';
|
25
25
|
import AddTagName from './liveFormActions/AddTagName';
|
26
26
|
import ZliveFormMultiRow from '../ZliveFormMultiRow';
|
27
|
-
const formDataConfigkeys = ['groupLayout', 'initialValueApi'];
|
27
|
+
const formDataConfigkeys = ['groupLayout', 'initialValueApi', 'controlSize'];
|
28
28
|
//校验、提取最新的formData数据
|
29
29
|
function commitFormData(formViewerRef, layoutFormRef, linkageRef, onSave) {
|
30
30
|
layoutFormRef.current.validateFields((errors, values) => {
|
@@ -409,10 +409,35 @@ function useGetItems(
|
|
409
409
|
initialValue: 'vertical',
|
410
410
|
}),
|
411
411
|
},
|
412
|
+
{
|
413
|
+
key: 'controlSize',
|
414
|
+
label: '表单尺寸',
|
415
|
+
span: 3,
|
416
|
+
show: false,
|
417
|
+
labelFocused: true,
|
418
|
+
render: (form, changeFormItems) =>
|
419
|
+
controls['3'].getControl(
|
420
|
+
{
|
421
|
+
config: {
|
422
|
+
selectList: [
|
423
|
+
{ label: '大', value: 'large' },
|
424
|
+
{ label: '中', value: 'default' },
|
425
|
+
{ label: '小', value: 'small' },
|
426
|
+
],
|
427
|
+
},
|
428
|
+
},
|
429
|
+
undefined,
|
430
|
+
undefined,
|
431
|
+
{},
|
432
|
+
),
|
433
|
+
options: controls['3'].getOptions({
|
434
|
+
initialValue: 'default',
|
435
|
+
}),
|
436
|
+
},
|
412
437
|
{
|
413
438
|
key: 'initialValueApi',
|
414
439
|
label: '异步获取表单初始值的后台接口',
|
415
|
-
span:
|
440
|
+
span: 18,
|
416
441
|
show: false,
|
417
442
|
labelFocused: true,
|
418
443
|
hiddenRendering: true,
|
@@ -8,6 +8,8 @@ const defaultTags = [
|
|
8
8
|
{ label: '整行展示字段', value: '3' },
|
9
9
|
{ label: 'ZliveInfoViewer里面强制展示字段', value: '4' },
|
10
10
|
{ label: 'ZliveInfoViewer里面强制隐藏字段', value: '5' },
|
11
|
+
{ label: 'ZliveInfoViewer里面显示选项', value: '6' },
|
12
|
+
{ label: 'ZliveInfoViewer里面Popover查看可选项', value: '7' },
|
11
13
|
];
|
12
14
|
const colors = ['#F8AD3A', '#01D0A2', '#3277FA', '#B94354', '#7469F1'];
|
13
15
|
const AddTagName = React.memo(
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import React from 'react';
|
2
2
|
import { getControl, getOptions } from '../../../Zform/controls';
|
3
3
|
import { itemsFromTree } from '../../../zTool';
|
4
|
-
import { getCorresFormItem, urlRules } from './common';
|
4
|
+
import { getCorresFormItem, urlRules, getSwitchOpt } from './common';
|
5
5
|
import ZselectInput from '../../liveFormControls/ZselectInput';
|
6
6
|
import RequestConfigBtn from '../../liveFormControls/RequestConfigBtn';
|
7
7
|
//下拉、单选框/多选框的属性
|
@@ -237,6 +237,7 @@ export function getSelectCommonProperties({ itemsRef, controlList, formItemsLink
|
|
237
237
|
...getSelectionProperties({ itemsRef, controlList, formItemsLinkAction }),
|
238
238
|
...getSelectListFieldNamesProperties({ itemsRef, controlList, formItemsLinkAction }),
|
239
239
|
...getNotFoundContentProperties({ itemsRef, controlList, formItemsLinkAction }),
|
240
|
+
|
240
241
|
];
|
241
242
|
}
|
242
243
|
export default {
|
@@ -263,6 +264,13 @@ export default {
|
|
263
264
|
},
|
264
265
|
options: getOptions({ required: true, initialValue: 'single' }),
|
265
266
|
},
|
267
|
+
{
|
268
|
+
key: 'optionShowValue',
|
269
|
+
show: false,
|
270
|
+
label: '是否选项的值与Label一起显示',
|
271
|
+
labelFocused: true,
|
272
|
+
...getSwitchOpt({ initialValue: false }),
|
273
|
+
},
|
266
274
|
...getSelectCommonProperties({ itemsRef, controlList, formItemsLinkAction }),
|
267
275
|
...getMaxSelectProperties({ itemsRef, controlList, formItemsLinkAction }),
|
268
276
|
];
|
@@ -1,12 +1,20 @@
|
|
1
1
|
import React from 'react';
|
2
2
|
import { getSelectCommonProperties, getMaxSelectProperties } from './3_select';
|
3
3
|
import { getControl, getOptions } from '../../../Zform/controls';
|
4
|
+
import { getSwitchOpt } from './common';
|
4
5
|
export default {
|
5
6
|
label: '多选框',
|
6
7
|
value: 8,
|
7
8
|
getFieldPropertiesFormItems({ formItemsRef: itemsRef, componentList: controlList, formItemsLinkAction }) {
|
8
9
|
return [
|
9
10
|
...getSelectCommonProperties({ itemsRef, controlList, formItemsLinkAction }),
|
11
|
+
{
|
12
|
+
key: 'optionShowValue',
|
13
|
+
show: false,
|
14
|
+
label: '是否选项的值与Label一起显示',
|
15
|
+
labelFocused: true,
|
16
|
+
...getSwitchOpt({ initialValue: false }),
|
17
|
+
},
|
10
18
|
{
|
11
19
|
key: 'colCount',
|
12
20
|
show: false,
|
@@ -1,12 +1,20 @@
|
|
1
1
|
import React from 'react';
|
2
2
|
import { getSelectCommonProperties } from './3_select';
|
3
3
|
import { getControl, getOptions } from '../../../Zform/controls';
|
4
|
+
import { getSwitchOpt } from './common';
|
4
5
|
export default {
|
5
6
|
label: '单选框',
|
6
7
|
value: 9,
|
7
8
|
getFieldPropertiesFormItems({ formItemsRef: itemsRef, componentList: controlList, formItemsLinkAction }) {
|
8
9
|
return [
|
9
10
|
...getSelectCommonProperties({ itemsRef, controlList, formItemsLinkAction }),
|
11
|
+
{
|
12
|
+
key: 'optionShowValue',
|
13
|
+
show: false,
|
14
|
+
label: '是否选项的值与Label一起显示',
|
15
|
+
labelFocused: true,
|
16
|
+
...getSwitchOpt({ initialValue: false }),
|
17
|
+
},
|
10
18
|
{
|
11
19
|
key: 'colCount',
|
12
20
|
show: false,
|
@@ -21,6 +21,7 @@ const ZliveFormMultiRow = (props) => {
|
|
21
21
|
disabled,
|
22
22
|
getExtendComponents,
|
23
23
|
onAdd,
|
24
|
+
controlSize,
|
24
25
|
} = props;
|
25
26
|
const [state, setState] = useState({ items: [], titleGroups: [] });
|
26
27
|
const multiRowMethodsRef = useRef();
|
@@ -150,6 +151,7 @@ const ZliveFormMultiRow = (props) => {
|
|
150
151
|
);
|
151
152
|
return (
|
152
153
|
<ZmultiRowFormControl
|
154
|
+
controlSize={controlSize}
|
153
155
|
showAddButton={showAddButton}
|
154
156
|
showRemoveButton={showRemoveButton}
|
155
157
|
value={value}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import React from 'react';
|
2
|
-
import PropTypes from 'prop-types';
|
3
|
-
|
2
|
+
// import PropTypes from 'prop-types';
|
3
|
+
import { Popover, Icon } from 'antd';
|
4
4
|
import './style.scss';
|
5
5
|
|
6
6
|
import ZpageLoading from '../ZpageLoading';
|
@@ -8,24 +8,17 @@ import ZpageLoading from '../ZpageLoading';
|
|
8
8
|
export default class ColTd extends React.PureComponent {
|
9
9
|
static defaultProps = {
|
10
10
|
item: {},
|
11
|
-
|
12
|
-
methods = {
|
13
|
-
showLoading: (show) => {
|
14
|
-
this.setState({
|
15
|
-
loading: show,
|
16
|
-
});
|
17
|
-
},
|
18
|
-
getStateItem: () => this.state.item,
|
19
|
-
changeItem: (newItem = {}) => {
|
20
|
-
this.setState({
|
21
|
-
item: { ...this.state.item, ...newItem },
|
22
|
-
});
|
23
|
-
},
|
11
|
+
data: {},
|
24
12
|
};
|
25
13
|
state = {
|
26
14
|
loading: this.props.loading,
|
27
15
|
item: this.props.item,
|
16
|
+
data: {},
|
17
|
+
dataErrors: {},
|
28
18
|
};
|
19
|
+
componentDidMount() {
|
20
|
+
this.methods.disponseData();
|
21
|
+
}
|
29
22
|
componentDidUpdate(prevProps) {
|
30
23
|
if (this.props.item !== prevProps.item) {
|
31
24
|
this.setState({
|
@@ -33,22 +26,69 @@ export default class ColTd extends React.PureComponent {
|
|
33
26
|
loading: this.props.loading,
|
34
27
|
});
|
35
28
|
}
|
29
|
+
if (this.props.data !== prevProps.data) {
|
30
|
+
this.methods.disponseData();
|
31
|
+
}
|
36
32
|
}
|
37
33
|
render() {
|
38
|
-
const { data } = this.
|
39
|
-
const
|
34
|
+
const { item, data, dataErrors } = this.state;
|
35
|
+
const isError = Array.isArray(dataErrors[item.key]) && dataErrors[item.key].length;
|
40
36
|
const control = this.state.loading ? (
|
41
37
|
<span>加载中...</span>
|
42
|
-
) : typeof item.control
|
38
|
+
) : typeof item.control === 'function' ? (
|
43
39
|
item.control(data[item.key], data, item)
|
44
40
|
) : (
|
45
41
|
data[item.key]
|
46
42
|
);
|
47
43
|
return (
|
48
44
|
<td>
|
49
|
-
<div
|
45
|
+
<div className={isError ? 'is-error' : ''}>
|
46
|
+
{isError ? (
|
47
|
+
<Popover
|
48
|
+
content={
|
49
|
+
<div>
|
50
|
+
{dataErrors[item.key].map((msg) => {
|
51
|
+
return <p key={msg}>{msg}</p>;
|
52
|
+
})}
|
53
|
+
</div>
|
54
|
+
}
|
55
|
+
title="错误信息">
|
56
|
+
<Icon type="warning" className="error-info-icon" />
|
57
|
+
</Popover>
|
58
|
+
) : null}
|
59
|
+
{control}
|
60
|
+
</div>
|
50
61
|
<ZpageLoading showLoading={this.state.loading} size="small" />
|
51
62
|
</td>
|
52
63
|
);
|
53
64
|
}
|
65
|
+
methods = {
|
66
|
+
disponseData: () => {
|
67
|
+
const data = {};
|
68
|
+
const dataErrors = {};
|
69
|
+
Object.keys(this.props.data).forEach((key) => {
|
70
|
+
const value = this.props.data[key];
|
71
|
+
data[key] = value;
|
72
|
+
if (value && typeof value === 'object' && !Array.isArray(value) && value.errors) {
|
73
|
+
data[key] = value.value;
|
74
|
+
dataErrors[key] = value.errors;
|
75
|
+
}
|
76
|
+
});
|
77
|
+
this.setState({
|
78
|
+
data,
|
79
|
+
dataErrors,
|
80
|
+
});
|
81
|
+
},
|
82
|
+
showLoading: (show) => {
|
83
|
+
this.setState({
|
84
|
+
loading: show,
|
85
|
+
});
|
86
|
+
},
|
87
|
+
getStateItem: () => this.state.item,
|
88
|
+
changeItem: (newItem = {}) => {
|
89
|
+
this.setState({
|
90
|
+
item: { ...this.state.item, ...newItem },
|
91
|
+
});
|
92
|
+
},
|
93
|
+
};
|
54
94
|
}
|
@@ -1,14 +1,22 @@
|
|
1
|
-
:global{
|
2
|
-
.z-live-info-multi-row-body{
|
3
|
-
tr>td{
|
4
|
-
|
1
|
+
:global {
|
2
|
+
.z-live-info-multi-row-body {
|
3
|
+
tr > td {
|
4
|
+
position: relative;
|
5
|
+
padding: 10px 12px;
|
5
6
|
overflow: hidden;
|
6
|
-
|
7
|
+
.is-error {
|
8
|
+
color: #f52833;
|
9
|
+
}
|
10
|
+
.error-info-icon {
|
11
|
+
margin-right: 10px;
|
12
|
+
font-size: 16px;
|
13
|
+
vertical-align: middle;
|
14
|
+
}
|
7
15
|
}
|
8
16
|
}
|
9
|
-
.z-live-info-multi-row-pagination{
|
17
|
+
.z-live-info-multi-row-pagination {
|
10
18
|
display: flex;
|
11
19
|
justify-content: flex-end;
|
12
20
|
margin-top: 10px;
|
13
21
|
}
|
14
|
-
}
|
22
|
+
}
|
@@ -8,7 +8,8 @@ import { imgTypeRegExp } from '../ZliveForm/regExpression';
|
|
8
8
|
import ZpdfViewer from '../ZpdfViewer';
|
9
9
|
import MultiRowInfoControl from './MultiRowInfoControl';
|
10
10
|
import ZgapFilling from '../ZgapFilling';
|
11
|
-
|
11
|
+
import { treeDataAddKey, getResponseData } from '../ZliveForm/common';
|
12
|
+
import { Popover } from 'antd';
|
12
13
|
export function getPrivateImgs({ files, config }) {
|
13
14
|
const privates = files.filter((item) => item.storage === 'PRIVATE');
|
14
15
|
let asycnPromise = Promise.resolve();
|
@@ -69,7 +70,20 @@ export function valueAccuracy({
|
|
69
70
|
}) {
|
70
71
|
let value = '';
|
71
72
|
let fileList = [];
|
72
|
-
let render =
|
73
|
+
let render = (text) => text;
|
74
|
+
const valLabel = formValues[`${field.fieldKey}Label`];
|
75
|
+
const val = formValues[field.fieldKey];
|
76
|
+
const strSyml = field.fieldType === 6 ? '/' : field.fieldType === 5 ? ' ~ ' : ' , ';
|
77
|
+
if (valLabel) {
|
78
|
+
value = Array.isArray(valLabel) ? valLabel.join(strSyml) : valLabel;
|
79
|
+
} else if (Array.isArray(val)) {
|
80
|
+
value = val[0] && (dataType.isObject(val[0]) || Array.isArray(val[0])) ? val : val.join(strSyml);
|
81
|
+
} else if (Array.isArray(config.selectList) && config.selectList.length) {
|
82
|
+
const selectItem = config.selectList.find((item) => item.value == val);
|
83
|
+
value = selectItem ? selectItem.label : val;
|
84
|
+
} else {
|
85
|
+
value = val;
|
86
|
+
}
|
73
87
|
switch (field.fieldType) {
|
74
88
|
case 11:
|
75
89
|
case 16:
|
@@ -253,23 +267,85 @@ export function valueAccuracy({
|
|
253
267
|
}
|
254
268
|
break;
|
255
269
|
}
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
270
|
+
case 3:
|
271
|
+
case 8:
|
272
|
+
case 9:
|
273
|
+
if (config.tagName.some((item) => ['6', '7'].includes(item.value))) {
|
274
|
+
const {
|
275
|
+
selectionsType,
|
276
|
+
// selectionsFromKey,
|
277
|
+
selectionsUrl,
|
278
|
+
selectionsQuery,
|
279
|
+
selectListFieldNames,
|
280
|
+
responseDataIndex,
|
281
|
+
} = config;
|
282
|
+
const isPopover = config.tagName.some((item) => ['7'].includes(item.value));
|
283
|
+
const getListVivew = function (selectList = [], optionShowValue) {
|
284
|
+
return (text) => {
|
285
|
+
const listView = (
|
286
|
+
optionShowValue
|
287
|
+
? selectList.map((item) => {
|
288
|
+
return {
|
289
|
+
...item,
|
290
|
+
label: item.value !== item.label ? `${item.value}.${item.label}` : item.label,
|
291
|
+
};
|
292
|
+
})
|
293
|
+
: selectList
|
294
|
+
).map((item) => {
|
295
|
+
return (
|
296
|
+
<p className="z-text-darkGray" key={item.value}>
|
297
|
+
{item.label}
|
298
|
+
</p>
|
299
|
+
);
|
300
|
+
});
|
301
|
+
const textStyle = {};
|
302
|
+
if (isPopover) {
|
303
|
+
textStyle.paddingTop = '20px';
|
304
|
+
} else {
|
305
|
+
textStyle.marginBottom = '8px';
|
306
|
+
}
|
307
|
+
return (
|
308
|
+
<div style={{ flex: 1 }}>
|
309
|
+
<div style={textStyle}>{text}</div>
|
310
|
+
{isPopover ? (
|
311
|
+
<Popover
|
312
|
+
overlayClassName="z-infoViewer-options-overlay"
|
313
|
+
content={<div>{listView}</div>}
|
314
|
+
title="可选项">
|
315
|
+
<div className="z-infoViewer-options-open">查看可选项</div>
|
316
|
+
</Popover>
|
317
|
+
) : (
|
318
|
+
<div className="z-infoViewer-options-wrapper">{listView}</div>
|
319
|
+
)}
|
320
|
+
</div>
|
321
|
+
);
|
322
|
+
};
|
323
|
+
};
|
324
|
+
render = () => {
|
325
|
+
if (+selectionsType === 2) {
|
326
|
+
return httpAjax(
|
327
|
+
selectionsUrl.selectionsUrlMethod,
|
328
|
+
selectionsUrl.selectionsUrl,
|
329
|
+
{
|
330
|
+
...selectionsQuery,
|
331
|
+
},
|
332
|
+
selectionsUrl.requestConfig,
|
333
|
+
).then((re) => {
|
334
|
+
const selectList = treeDataAddKey(
|
335
|
+
getResponseData(re, responseDataIndex) || [],
|
336
|
+
undefined,
|
337
|
+
selectListFieldNames,
|
338
|
+
undefined,
|
339
|
+
);
|
340
|
+
return getListVivew(selectList, config.optionShowValue);
|
341
|
+
});
|
342
|
+
}
|
343
|
+
return getListVivew(config.selectList, config.optionShowValue);
|
344
|
+
};
|
271
345
|
}
|
272
|
-
|
346
|
+
|
347
|
+
break;
|
348
|
+
default:
|
273
349
|
}
|
274
350
|
return { value, render, fileList };
|
275
351
|
}
|
@@ -142,7 +142,7 @@ const InfoViewer = (props) => {
|
|
142
142
|
: Array.isArray(config.tagName)
|
143
143
|
? config.tagName
|
144
144
|
: [];
|
145
|
-
|
145
|
+
config.tagName = tagName;
|
146
146
|
let fieldShowed = true;
|
147
147
|
if (tagName.some((item) => ['5'].includes(item.value))) {
|
148
148
|
//"5"强制隐藏
|
@@ -220,12 +220,33 @@ const InfoViewer = (props) => {
|
|
220
220
|
<>
|
221
221
|
{typeof children === 'function'
|
222
222
|
? children({ groups, fieldValue })
|
223
|
-
: groups.map((g) =>
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
223
|
+
: groups.map((g) => {
|
224
|
+
let title = null;
|
225
|
+
let labelShowTag = g.labelShowTag;
|
226
|
+
if (typeof labelShowTag !== 'number') {
|
227
|
+
labelShowTag = 1;
|
228
|
+
}
|
229
|
+
switch (labelShowTag) {
|
230
|
+
case 0:
|
231
|
+
title = null;
|
232
|
+
break;
|
233
|
+
case 2:
|
234
|
+
title = <div className="z-margin-bottom-10">{g.name}</div>;
|
235
|
+
break;
|
236
|
+
default:
|
237
|
+
title = <ZpanelTitle className="z-margin-bottom-10">{g.name}</ZpanelTitle>;
|
238
|
+
}
|
239
|
+
return (
|
240
|
+
<div key={g.name} className="z-infoViewer-group">
|
241
|
+
{title}
|
242
|
+
<Zinfo
|
243
|
+
items={g.formItems}
|
244
|
+
fieldValue={fieldValue}
|
245
|
+
colCount={2}
|
246
|
+
layoutType="freeCol"></Zinfo>
|
247
|
+
</div>
|
248
|
+
);
|
249
|
+
})}
|
229
250
|
{imgUrls.length
|
230
251
|
? ReactDOM.createPortal(
|
231
252
|
<div
|
@@ -1,6 +1,47 @@
|
|
1
1
|
@import '../../scss/common/z-info.scss';
|
2
|
-
|
2
|
+
@import '../../scss/vars.scss';
|
3
3
|
:global {
|
4
|
+
.z-infoViewer-options-overlay{
|
5
|
+
.ant-popover-inner-content{
|
6
|
+
max-height: calc(100vh - 60px);
|
7
|
+
overflow: auto;
|
8
|
+
}
|
9
|
+
}
|
10
|
+
.z-infoViewer-options-open {
|
11
|
+
display: block;
|
12
|
+
color: $--darkGray;
|
13
|
+
position: absolute;
|
14
|
+
top: 0;
|
15
|
+
right: 0;
|
16
|
+
padding: 4px 6px;
|
17
|
+
background-color: $--light-grey;
|
18
|
+
font-size: 12px;
|
19
|
+
line-height: 1em;
|
20
|
+
}
|
21
|
+
.z-infoViewer-options-wrapper {
|
22
|
+
border: 1px solid $--light-grey;
|
23
|
+
padding: 6px;
|
24
|
+
position: relative;
|
25
|
+
color: $--gray;
|
26
|
+
overflow: hidden;
|
27
|
+
&::after {
|
28
|
+
content: '可选项';
|
29
|
+
display: block;
|
30
|
+
color: $--darkGray;
|
31
|
+
position: absolute;
|
32
|
+
top: 0;
|
33
|
+
right: 0;
|
34
|
+
padding: 4px 6px;
|
35
|
+
background-color: $--light-grey;
|
36
|
+
font-size: 12px;
|
37
|
+
line-height: 1em;
|
38
|
+
}
|
39
|
+
p {
|
40
|
+
margin-top: 8px;
|
41
|
+
margin-bottom: 0;
|
42
|
+
margin-right: 30px;
|
43
|
+
}
|
44
|
+
}
|
4
45
|
.z-infoViewer-group + .z-infoViewer-group {
|
5
46
|
margin-top: 10px;
|
6
47
|
}
|
@@ -28,14 +69,14 @@
|
|
28
69
|
.z-infoViewer-file {
|
29
70
|
width: 100%;
|
30
71
|
margin-bottom: 0;
|
31
|
-
a{
|
72
|
+
a {
|
32
73
|
color: $primary-color;
|
33
|
-
|
34
|
-
|
35
|
-
|
74
|
+
&:hover {
|
75
|
+
text-decoration: underline;
|
76
|
+
}
|
36
77
|
}
|
37
78
|
}
|
38
|
-
.z-infoViewer-imgs
|
79
|
+
.z-infoViewer-imgs + .z-infoViewer-file {
|
39
80
|
margin-top: 20px;
|
40
81
|
}
|
41
82
|
.z-infoViewer-file + .z-infoViewer-file {
|
@@ -2,15 +2,18 @@
|
|
2
2
|
|
3
3
|
```jsx
|
4
4
|
import { getProcessEnv } from 'zerod/components/zTool/getProcessEnv';
|
5
|
-
const { baserouter } = getProcessEnv();
|
5
|
+
// const { baserouter } = getProcessEnv();
|
6
6
|
import ZappHOC from 'zerod/components/ZappHOC';
|
7
|
+
const routerType= 'history';
|
8
|
+
const path = routerType==='hash'?window.location.hash.replace('#','') :window.location.pathname;
|
7
9
|
export default ZappHOC({
|
8
10
|
rootRoutes: [
|
9
11
|
{
|
10
|
-
path
|
12
|
+
path,
|
11
13
|
component: Main,
|
12
14
|
},
|
13
15
|
],
|
14
|
-
routerType
|
16
|
+
routerType,
|
17
|
+
routerBasename:"/"
|
15
18
|
});
|
16
19
|
```
|
@@ -166,6 +166,7 @@ export function ZmainHOC(pageConfig, mounted) {
|
|
166
166
|
}
|
167
167
|
//路由地址改变,关闭右边modal
|
168
168
|
if (this.props.location.pathname !== prevProps.location.pathname) {
|
169
|
+
console.log(this.props.location.pathname,prevProps.location.pathname)
|
169
170
|
// //路由地址改变触发父窗口的消息事件
|
170
171
|
// if (window.appProtalWindow) {
|
171
172
|
// window.appProtalWindow &&
|
@@ -307,6 +308,7 @@ export function ZmainHOC(pageConfig, mounted) {
|
|
307
308
|
sideMenuData = [];
|
308
309
|
// 处理侧边导航数据
|
309
310
|
setSideMenu = (sideMenu) => {
|
311
|
+
console.log(this.match.url)
|
310
312
|
let menuData = sideMenu.menuData;
|
311
313
|
let topOtherMenu = sideMenu.topOtherMenu || this.config.sideMenu.topOtherMenu;
|
312
314
|
let bottomOtherMenu = sideMenu.bottomOtherMenu || this.config.sideMenu.bottomOtherMenu;
|
@@ -4,16 +4,18 @@
|
|
4
4
|
|
5
5
|
// 这里渲染demo需要创建一个router根, 如果直接用在项目中的router则不需要
|
6
6
|
import { getProcessEnv } from 'zerod/components/zTool/getProcessEnv';
|
7
|
+
// const { baserouter } = getProcessEnv();
|
7
8
|
import ZappHOC from 'zerod/components/ZappHOC';
|
8
|
-
const
|
9
|
-
|
9
|
+
const routerType= 'history';
|
10
|
+
const path = routerType==='hash'?window.location.hash.replace('#','') :window.location.pathname;
|
10
11
|
export default ZappHOC({
|
11
12
|
rootRoutes: [
|
12
13
|
{
|
13
|
-
path
|
14
|
+
path,
|
14
15
|
component: Main,
|
15
16
|
},
|
16
17
|
],
|
17
|
-
routerType
|
18
|
+
routerType,
|
19
|
+
routerBasename:"/"
|
18
20
|
});
|
19
21
|
```
|
package/package.json
CHANGED
@@ -1,19 +1,11 @@
|
|
1
1
|
{
|
2
2
|
"name": "zerod",
|
3
|
-
"version": "0.6.
|
3
|
+
"version": "0.6.3",
|
4
4
|
"description": "react+antd+scss的扩展组件,结合zerod-admin-web脚手架使用",
|
5
5
|
"author": "zgt",
|
6
6
|
"main": "index.js",
|
7
7
|
"module": "index.js",
|
8
|
-
"scripts": {
|
9
|
-
"login": "npm login --registry=http://172.16.8.10:8081/repository/hosted-npm/"
|
10
|
-
},
|
11
|
-
"repositories": [
|
12
|
-
{
|
13
|
-
"type": "git",
|
14
|
-
"url": "http://172.16.26.120/components/zerod-component-doc.git"
|
15
|
-
}
|
16
|
-
],
|
8
|
+
"scripts": {},
|
17
9
|
"dependencies": {
|
18
10
|
"@loadable/component": "^5.14.1",
|
19
11
|
"@esfaenza/pace": "^1.0.0",
|