fmui-base 2.2.10 → 2.2.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,641 +0,0 @@
1
- import React from 'react';
2
-
3
- import CheckboxField from 'saltui/lib/CheckboxField';
4
- import SearchBar from 'saltui/lib/SearchBar';
5
- import Boxs from 'saltui/lib/Boxs';
6
- import Button from 'saltui/lib/Button';
7
- import Group from 'saltui/lib/Group';
8
- import Popup from 'saltui/lib/Popup';
9
- import RadioField from 'saltui/lib/RadioField';
10
- const { HBox, Box,VBox} = Boxs;
11
- import './table.less';
12
- import Variables from '../../db/variables';
13
- export default class PageHome extends React.Component {
14
-
15
- constructor(props) {
16
- super(props);
17
-
18
- var u = navigator.userAgent;
19
- var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端
20
- var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
21
- var height='';
22
- if(isAndroid==true){
23
- height = window.screen.height-70-44-45+"px";
24
- }else if(isiOS==true){
25
- height = window.screen.availHeight-70-44-45+"px";
26
- }else {
27
- if(window.innerHeight) {
28
- // height = '550px';
29
- height = window.innerHeight-70-44-45+"px";
30
- }
31
- }
32
-
33
- this.state = {
34
- search:'',
35
- change:true,
36
-
37
- data: [],
38
- selectedData:[],
39
- selectNum:0,
40
- checked:'checkbox',
41
- placeholder:'搜索',
42
- showName:'text',
43
- searchField:'text',
44
- isSearch:1,
45
- hasShowData:false,
46
- height:height,
47
-
48
- visible:false,
49
- }
50
- }
51
-
52
- componentDidMount(){
53
-
54
- }
55
-
56
- // 子组件初始化
57
- initState() {
58
- const t = this;
59
- // 是否显示
60
- let visible = t.props.visible;
61
- // 搜索提示
62
- let placeholder = t.props.placeholder;
63
- // 待选择的数据
64
- let data = t.props.data;
65
- // 选中的数据
66
- let value = t.props.value;
67
- // 单选多选标识
68
- let checked = t.props.checked;
69
- // 回显字段名称
70
- let showName = t.props.showName;
71
- // 搜索的值
72
- let searchField = t.props.searchField;
73
-
74
- // 选中的个数
75
- let selectNum = 0;
76
-
77
- // 单选
78
- if (checked == 'radio') {
79
- if (data != null && data.length > 0) {
80
- let tempNum = '0';
81
- for (var j=0;j<data.length;j++) {
82
- if (data[j].text != null && data[j].text != '' && data[j].text != 'undefined' && data[j].text != 'null' && data[j].text != undefined) {
83
- data[j].text = data[j].text.replace(/null/g , '');
84
- data[j].text = data[j].text.replace(/,/g , ' ');
85
- }
86
-
87
- // 重复来回选择某两个,改掉没选的checked属性为false
88
- if (value != null && value != '' && value != undefined && value != 'undefined') {
89
- if (data[j].value == value.value && tempNum == '0') {
90
- data[j].checked = true;
91
- tempNum = '1';
92
- } else {
93
- data[j].checked = false;
94
- }
95
- } else {
96
- // 都没选时,设置checked属性为false
97
- data[j].checked = false;
98
- }
99
- }
100
- }
101
- } else {
102
- // 多选
103
- if (value == null || value == 'null' || value == '' || value == undefined || value == 'undefined') {
104
- value = [];
105
- } else {
106
- selectNum = value.length;
107
- }
108
-
109
- // 循环处理选中的状态
110
- if (data != null && data.length > 0) {
111
- for (var j=0;j<data.length;j++) {
112
- if (data[j].text != null && data[j].text != '' && data[j].text != 'undefined' && data[j].text != 'null' && data[j].text != undefined) {
113
- data[j].text = data[j].text.replace(/null/g , '');
114
- data[j].text = data[j].text.replace(/,/g , ' ');
115
- }
116
-
117
- data[j].disable = false;
118
- if (value != null && value.length > 0) {
119
- var checkStr = '';
120
- for (var ii=0;ii<value.length;ii++) {
121
- var obj = value[ii];
122
- obj.checked = true;
123
-
124
- if (obj.value == data[j].value) {
125
- if (data[j].noShow) {
126
- data[j].disable = true;
127
- }
128
- data[j].checked = true;
129
-
130
- checkStr += data[j].value + ';';
131
- continue;
132
- } else {
133
- if (checkStr == '' || checkStr.indexOf(data[j].value) == -1) {
134
- data[j].checked = false;
135
- }
136
- }
137
- }
138
- } else {
139
- data[j].checked = false;
140
- }
141
- }
142
- }
143
- }
144
- var hasShowData=false;
145
- if (data != null && data.length > 0){
146
- hasShowData=true;
147
- }
148
-
149
- t.setState({
150
- change:true,
151
- placeholder:placeholder,
152
- data:data,
153
- selectedData:value,
154
- checked:checked,
155
- showName:showName,
156
- visible: visible,
157
- selectNum:selectNum,
158
- searchField:searchField,
159
- hasShowData:hasShowData
160
- });
161
- }
162
-
163
- // 多选勾选触发
164
- changeSelectBox(type,value){
165
-
166
- if (type == '1') {
167
- // 选择页面选择
168
- for(var j=0;j<value.length;j++){
169
- value.checked=true;
170
- };
171
-
172
- this.setState({
173
- selectNum:value.length,
174
- selectedData:value,
175
- });
176
- } else {
177
- // 确认页面选择
178
- // 选中的数据
179
- let selectedData = this.state.selectedData;
180
- let checkedId = '';
181
- if (selectedData != null && selectedData.length > 0) {
182
- for (var i = selectedData.length - 1; i >= 0; i--) {
183
- let obj = selectedData[i];
184
- if (value != null && value.length > 0) {
185
- for (var k = 0; k < value.length; k++) {
186
- let vObj = value[k];
187
- if (vObj.value == obj.value) {
188
- if (checkedId.indexOf(obj.value) == -1) {
189
- // 选中状态
190
- obj.checked = true;
191
- checkedId += ';' + obj.value;
192
- }
193
- } else {
194
- // 未选中状态
195
- if (checkedId.indexOf(obj.value) == -1) {
196
- obj.checked = false;
197
- }
198
- }
199
- }
200
- } else {
201
- // 选中为空
202
- obj.checked = false;
203
- }
204
- }
205
- }
206
-
207
- this.setState({
208
- selectNum:value.length,
209
- selectedData:selectedData,
210
- });
211
- }
212
- }
213
-
214
- // 点击已选触发
215
- selectedBoxs(){
216
- let selectedData = this.state.selectedData;
217
- if (selectedData != null && selectedData.length > 0) {
218
- for (var i = selectedData.length - 1; i >= 0; i--) {
219
- var obj = selectedData[i];
220
- obj.disable = false;
221
- }
222
- }
223
- this.setState({
224
- change:!this.state.change,
225
- selectedData:selectedData,
226
- });
227
- }
228
-
229
- // 查看已选页,点击完成触发
230
- selectedOk(){
231
- // 搜索值
232
- let search = this.state.search;
233
-
234
- // 已选页列表数据(包括已选和在已选页取消选择的数据)
235
- let selectedData = this.state.selectedData;
236
- let tempData = [];
237
- var dataAll=this.state.data;
238
- for (var i=0;i<selectedData.length;i++) {
239
- var selectedObj = selectedData[i];
240
- if (selectedObj.checked == true) {
241
- tempData.push(selectedObj);
242
- }
243
- }
244
-
245
- let checkId = '';
246
- // 对可选列表的显示和隐藏进行控制
247
- for(var ii=0;ii<dataAll.length;ii++){
248
- var tempObj = dataAll[ii];
249
- // 处理选择列表是否隐藏
250
- if (tempObj.noShow) {
251
- tempObj.disable = true;
252
- } else {
253
- tempObj.disable = false;
254
- }
255
-
256
- // 处理选择列表是否选中
257
- if (tempData != null && tempData.length > 0) {
258
- for (var j=0;j<tempData.length;j++) {
259
- var obj = tempData[j];
260
- if (obj.value == tempObj.value) {
261
- if (checkId.indexOf(obj.value) == -1) {
262
- tempObj.checked = true;
263
- checkId += ';' + tempObj.value;
264
- }
265
- } else {
266
- if (checkId.indexOf(tempObj.value) == -1) {
267
- tempObj.checked = false;
268
- }
269
- }
270
- }
271
- } else {
272
- tempObj.checked = false;
273
- }
274
- }
275
-
276
- this.setState({
277
- change:!this.state.change,
278
- data:dataAll,
279
- selectedData:tempData,
280
- }, () => {
281
- });
282
- }
283
-
284
- //搜索
285
- onSearch(keyword) {
286
- // 查询字段
287
- keyword = keyword.trim();
288
- this.setState({
289
- search:keyword
290
- });
291
- let hasShowData = false;
292
- // 搜索的字段
293
- let searchField = this.state.searchField;
294
- let searchArr = null;
295
- if (searchField != null) {
296
- searchArr = searchField.split(',');
297
- }
298
-
299
- // 列表集合
300
- var dataAll=this.state.data;
301
- if (keyword != '') {
302
- if (dataAll != null && dataAll.length > 0) {
303
- for(var j=0;j<dataAll.length;j++){
304
- var obj = dataAll[j];
305
- if (obj != null) {
306
- obj.disable=true;
307
- // 循环判断是否在查询字段中
308
- if (searchArr != null && searchArr.length > 0) {
309
- for (var hh = searchArr.length - 1; hh >= 0; hh--) {
310
- var searchObj = searchArr[hh];
311
- var text = obj[searchObj];
312
- text = text + '';
313
- if (text === null || text === 'null' || text === '') {
314
- text = '';
315
- }
316
-
317
- if (text != '' && text.indexOf(keyword) != -1) {
318
- obj.disable=false;
319
- hasShowData=true;
320
- }
321
- }
322
- }
323
-
324
- if (obj.noShow) {
325
- obj.disable=true;
326
- }
327
- }
328
- }
329
- }
330
- } else {
331
- if (dataAll != null && dataAll.length > 0) {
332
- for(var j=0;j<dataAll.length;j++){
333
- var obj = dataAll[j];
334
- if (obj != null) {
335
- // 是否可显示,不能显示的disable设置为true,反之为false
336
- if (obj.noShow) {
337
- obj.disable=true;
338
- } else {
339
- obj.disable=false;
340
- hasShowData=true;
341
- }
342
- }
343
- }
344
- }
345
- }
346
-
347
- let t = this;
348
- t.setState({
349
- data:dataAll,
350
- isSearch:3,
351
- hasShowData:hasShowData
352
- }, () => {
353
- });
354
- }
355
-
356
- //退出
357
- onExit(keyword){
358
- if (keyword == null || keyword == 'null' || keyword == '' || keyword == undefined || keyword == 'undefined') {
359
- keyword = '';
360
- }
361
- // 查询字段
362
- this.setState({
363
- search:keyword
364
- });
365
- let hasShowData=false;
366
- // 搜索的字段
367
- let searchField = this.state.searchField;
368
- let searchArr = null;
369
- if (searchField != null) {
370
- searchArr = searchField.split(',');
371
- }
372
-
373
- // 列表集合
374
- var dataAll=this.state.data;
375
- if (keyword != '') {
376
- if (dataAll != null && dataAll.length > 0) {
377
- for(var j=0;j<dataAll.length;j++){
378
- var obj = dataAll[j];
379
- if (obj != null) {
380
- obj.disable=true;
381
-
382
- // 循环判断是否在查询字段中
383
- if (searchArr != null && searchArr.length > 0) {
384
- for (var hh = searchArr.length - 1; hh >= 0; hh--) {
385
- var searchObj = searchArr[hh];
386
- var text = obj[searchObj];
387
- text = text + '';
388
- if (text === null || text === 'null' || text === '') {
389
- text = '';
390
- }
391
-
392
- if (text != '' && text.indexOf(keyword) != -1) {
393
- obj.disable=false;
394
- hasShowData=true;
395
- }
396
- }
397
- }
398
-
399
- if (obj.noShow) {
400
- obj.disable=true;
401
- }
402
- }
403
- }
404
- }
405
- } else {
406
- if (dataAll != null && dataAll.length > 0) {
407
- for(var j=0;j<dataAll.length;j++){
408
- var obj = dataAll[j];
409
- if (obj != null) {
410
- // 是否可显示,不能显示的disable设置为true,反之为false
411
- if (obj.noShow) {
412
- obj.disable=true;
413
- } else {
414
- obj.disable=false;
415
- hasShowData=true;
416
- }
417
- }
418
- }
419
- }
420
- }
421
- this.setState({
422
- data:dataAll,
423
- isSearch:2,
424
- hasShowData:hasShowData
425
- }, () => {
426
- /*this.instance.update(this.getContent());*/
427
- });
428
- }
429
-
430
- // 确定按钮触发
431
- submitCofirm() {
432
- let t = this;
433
- var dataAll=this.state.selectedData;
434
- var result = [];
435
- var selectText='';
436
- // 回显属性名
437
- let showName = this.state.showName;
438
-
439
- for(var j=0;j<dataAll.length;j++){
440
- var obj = dataAll[j];
441
- let text = obj[showName];
442
- if (text != '') {
443
- if (selectText == '') {
444
- selectText = text;
445
- } else {
446
- selectText = selectText + ',' + text;
447
- }
448
- }
449
- result.push(obj);
450
- }
451
-
452
- t.setState({
453
- visible: false
454
- }, () => {
455
- this.props.onChange(result);
456
- });
457
- }
458
-
459
- //单选方法 changeSelectBox2()
460
- changeSelectBox2(value, index, data){
461
- let t = this;
462
- var selectText=[];
463
- var checkedData = '';
464
- let showName = this.state.showName;
465
- for(var j=0;j<data.length;j++){
466
- if(data[j].checked==true){
467
- selectText = data[j][showName];
468
- checkedData = data[j];
469
- }
470
- };
471
-
472
- t.setState({
473
- selectText:selectText,
474
- visible: false
475
- }, () => {
476
- this.props.onChange(checkedData);
477
- $("#App").removeAttr("style");
478
- $(document).scrollTop(t.props.top);
479
- Popup.hide();
480
- });
481
- }
482
-
483
-
484
- // 弹出页的列表
485
- getContent() {
486
- let t=this;
487
- // 单选多选标识
488
- let checked = this.state.checked;
489
-
490
- // 选择列表数据
491
- let data = this.state.data;
492
- // 被选中的个数
493
- let selectNum = this.state.selectNum;
494
- // 选中的数据
495
- let selectedData = this.state.selectedData;
496
-
497
- // 搜索提示语
498
- let placeholder = this.state.placeholder;
499
-
500
- let height = this.state.height;
501
- let winHeight=(parseInt(getScrollHigh(0, 0, 0))-100)+"px";
502
- // 返回结构
503
- let content = "";
504
- if (checked == 'radio') {
505
- // 单选
506
- content = (
507
- <div>
508
- {/* <div className={t.state.hasShowData == false ?"nodata-wrapper":"t-DN"}>
509
- <VBox vAlign="center" hAlign="center" className="nodata">
510
- <Box>
511
- <div>
512
- <img src={nodataIcon} alt="" style={{width: 68 + 'px'}} />
513
- </div>
514
- </Box>
515
- <Box className="t-FCc">
516
- {t.state.isSearch == 3?'无搜索结果':'暂无数据'}
517
- </Box>
518
- </VBox>
519
- </div> */}
520
- <div id="com-popup-div" className="dd-popup-container" style={{width:300}}>
521
- <SearchBar
522
- hasHistory={false}
523
- instantSearch={false}
524
- onSearch={this.onSearch.bind(this)}
525
- placeholder={placeholder}
526
- onExit={this.onExit.bind(this)}>
527
- </SearchBar>
528
- <div className={t.state.hasShowData == false ?"nodata-wrapper":"t-DN"}>
529
- <VBox vAlign="center" hAlign="center" className="nodata">
530
- <Box>
531
- <div>
532
- <img src={Variables.nodataIcon} alt="" style={{width: 68 + 'px'}} />
533
- </div>
534
- </Box>
535
- <Box className="t-FCc">
536
- {t.state.isSearch == 3?'无搜索结果':'暂无数据'}
537
- </Box>
538
- </VBox>
539
- </div>
540
-
541
- <div className="dd-checkbox-wrap" style={{overflow:"auto" }}>
542
- <RadioField
543
- data={data}
544
- mode='list'
545
- iconPosition="left"
546
- className="poppage-list-search"
547
- onChange={this.changeSelectBox2.bind(this)}
548
- />
549
- </div>
550
- </div>
551
- </div>
552
- );
553
- } else {
554
- // 多选
555
- content = (
556
- <div>
557
- <div className={t.state.hasShowData == false ?"nodata-wrapper":"t-DN"}>
558
- <VBox vAlign="center" hAlign="center" className="nodata">
559
- <Box>
560
- <div>
561
- <img src={Variables.nodataIcon} alt="" style={{width: 68 + 'px'}} />
562
- </div>
563
- </Box>
564
- <Box className="t-FCc">
565
- {t.state.isSearch == 3?'无搜索结果':'暂无数据'}
566
- </Box>
567
- </VBox>
568
- </div>
569
- <div id="com-popup-div" className="dd-popup-container t-PR" style={{width:300}}>
570
- <div className={this.state.change?"":"t-DN"}>
571
- <SearchBar
572
- hasHistory={false}
573
- instantSearch={false}
574
- onSearch={this.onSearch.bind(this)}
575
- placeholder={placeholder}
576
- onExit={this.onExit.bind(this)}>
577
- </SearchBar>
578
- </div>
579
- <div className={this.state.change?"t-DN":""} >
580
- <HBox vAlign="center">
581
- <Box flex={1} className="t-FS16 t-P16 t-FCc">已选{selectNum}个</Box>
582
- <Box className="t-PR16 t-FCblue" onClick={this.selectedOk.bind(this)}>完成</Box>
583
- </HBox>
584
- </div>
585
- <div className={this.state.change?"dd-checkbox-wrap":"t-DN"} style={{overflow:"auto" , height: `${height}`,}}>
586
- <Group.List className="t-PB68">
587
- <CheckboxField
588
- data={data}
589
- value={selectNum}
590
- mode='list'
591
- iconPosition="left"
592
- onChange={this.changeSelectBox.bind(this,'1')}
593
- />
594
- </Group.List>
595
- </div>
596
- <Group.List className={this.state.change?"t-DN":"dd-checkbox-wrap"} >
597
- <CheckboxField
598
- data={selectedData}
599
- value={selectNum}
600
- mode='list'
601
- iconPosition="left"
602
- onChange={this.changeSelectBox.bind(this,'2')}
603
- />
604
- </Group.List>
605
- <HBox vAlign="center" className={this.state.change?"t-bottom-fixed":"t-DN"} style={{width:300}}>
606
- <Box flex={2} className="t-FS16 t-PL16 t-FCblue" onClick={this.selectedBoxs.bind(this)} >已选{selectNum}个</Box>
607
- <Box flex={1} onClick={this.submitCofirm.bind(this)}>
608
- <Button type="primary" display="banner" >确定</Button>
609
- </Box>
610
- </HBox>
611
- </div>
612
- </div>
613
- );
614
- }
615
- return content;
616
- }
617
-
618
- // 点击蒙层关闭
619
- closMask(){
620
- this.props.closMask(this);
621
- }
622
-
623
- render() {
624
-
625
-
626
- return (
627
- <div >
628
- <Popup
629
- content={this.getContent()}
630
- animationType="slide-left"
631
- onMaskClick={() => { this.setState({ visible: false });this.closMask(); }}
632
- visible={this.state.visible}
633
- >
634
- {null}
635
- </Popup>
636
- </div>
637
- )
638
- }
639
- }
640
-
641
-