fmui-base 2.3.14 → 2.3.15

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/README.md CHANGED
@@ -3,6 +3,7 @@
3
3
  ---npm publish
4
4
 
5
5
  ## 更新日志
6
+ - 2.3.15:时分字段保存丢失值,子表删除时页面空白
6
7
  - 2.3.14:表单切换组织增加开关
7
8
  - 2.3.13:子表字段带$时计算不生效,表单切换组织时,表单赋值的宏值实时更新
8
9
  - 2.3.12:门户首页grid常用应用部件增加扩展入口调整为页签(一网通办项目需求,临时版本)
package/lib/form/form.js CHANGED
@@ -690,8 +690,8 @@ var PageHome = function (_React$Component) {
690
690
  itemParam.decimalPlace = form.decimalPlace; //小数位数
691
691
  itemParam.dataAttr = form['dataAttr'];
692
692
  itemParam.maxlength = form['length'];
693
- /*if(itemParam.dataAttr){
694
- alert("265====="+itemParam.dataAttr.textLineFeed);
693
+ /*if(itemParam.dataAttr){
694
+ alert("265====="+itemParam.dataAttr.textLineFeed);
695
695
  }*/
696
696
  //宏值签名图片
697
697
  // if(itemParam.dataAttr && itemParam.dataAttr.dataSrc=='2' && !readOnly && !itemParam.bizCodeRuleId){
@@ -945,11 +945,11 @@ var PageHome = function (_React$Component) {
945
945
  if (value == item.value) {
946
946
  value = { value: value, text: item.name };
947
947
  }
948
- /*}else{
949
- var defaultValue=form.defaultValue;
950
- if(defaultValue == item.value){
951
- value = {value:value,text:item.name};
952
- }
948
+ /*}else{
949
+ var defaultValue=form.defaultValue;
950
+ if(defaultValue == item.value){
951
+ value = {value:value,text:item.name};
952
+ }
953
953
  }*/
954
954
  selectOptions.push(option);
955
955
  }
@@ -993,8 +993,21 @@ var PageHome = function (_React$Component) {
993
993
 
994
994
  if (form.dataAttr && typeof form.dataAttr != "undefined") {
995
995
  var dateDisplayFormat = form.dataAttr.dateDisplayFormat;
996
- if (dateDisplayFormat == "STime" || dateFormat == "YMDHM") {
996
+ // 优先按 dateDisplayFormat 识别展示类型;勿用 form.dateFormat==YMDHM 抢先匹配,
997
+ // 否则时分(HourMin)进不了分支,HH:mm 会被下方当作无效值清空
998
+ if (dateDisplayFormat == "HourMin") {
997
999
  dateFormat = "YMDHM";
1000
+ if (value && typeof value === 'string') {
1001
+ var hm = value.trim();
1002
+ // HH:mm / H:mm / HH:mm:ss
1003
+ if (/^\d{1,2}:\d{2}(:\d{2})?$/.test(hm)) {
1004
+ var hmParts = hm.split(':');
1005
+ var hh = hmParts[0].length === 1 ? '0' + hmParts[0] : hmParts[0];
1006
+ var mm = hmParts[1];
1007
+ value = formattedDate + " " + hh + ":" + mm + ":00";
1008
+ }
1009
+ }
1010
+ dateFormatShow = "HourMin";
998
1011
  } else if (dateDisplayFormat == "YearMon") {
999
1012
  dateFormat = "YM";
1000
1013
  } else if (dateDisplayFormat == "MonthDay") {
@@ -1003,12 +1016,6 @@ var PageHome = function (_React$Component) {
1003
1016
  dateFormat = "Y";
1004
1017
  } else if (dateDisplayFormat == "ODate") {
1005
1018
  dateFormat = "YMD";
1006
- } else if (dateDisplayFormat == "HourMin") {
1007
- dateFormat = "YMDHM";
1008
- if (value && value.length == 5) {
1009
- value = formattedDate + " " + value + ":00";
1010
- }
1011
- dateFormatShow = "HourMin";
1012
1019
  } else if (dateDisplayFormat == "zhDate") {
1013
1020
  dateFormat = "YMD";
1014
1021
  dateFormatShow = "zhDate";
@@ -1021,6 +1028,8 @@ var PageHome = function (_React$Component) {
1021
1028
  } else if (dateDisplayFormat == "DateTimeInterval") {
1022
1029
  dateFormat = "DateInterval";
1023
1030
  dateFormatShow = "dayWithTime";
1031
+ } else if (dateDisplayFormat == "STime" || dateFormat == "YMDHM") {
1032
+ dateFormat = "YMDHM";
1024
1033
  } else {
1025
1034
  dateFormat = "YMDHM";
1026
1035
  }
@@ -1112,6 +1121,11 @@ var PageHome = function (_React$Component) {
1112
1121
  value = new Date(value).getTime();
1113
1122
  } else if (value && typeof value === 'string' && value.length == 7 && dateFormat == "YM") {
1114
1123
  value = new Date(value).getTime();
1124
+ } else if (dateFormatShow == 'HourMin' && value && typeof value === 'string' && /^\d{1,2}:\d{2}(:\d{2})?$/.test(value.trim())) {
1125
+ // 时分兜底:仍为 HH:mm 时拼当前日期再转时间戳,避免被清空
1126
+ var hmFallback = value.trim().split(':');
1127
+ var hhFallback = hmFallback[0].length === 1 ? '0' + hmFallback[0] : hmFallback[0];
1128
+ value = new Date((formattedDate + " " + hhFallback + ":" + hmFallback[1] + ":00").replace(/-/g, "/")).getTime();
1115
1129
  } else {
1116
1130
  for (var i = 0; i < mainTblData.length; i++) {
1117
1131
  if (itemParam.key == mainTblData[i].key) {
@@ -2069,26 +2083,32 @@ var PageHome = function (_React$Component) {
2069
2083
  }
2070
2084
  } else if (itemParam.itemType == 'checkbox') {
2071
2085
  var selectOptions = itemParam.selectOptions;
2072
- var valueHas = false; //判断传过来的值是否有匹配
2073
2086
  var value = itemNew[i].value;
2074
- var valueArray = value.split(",");
2075
- selectOptions.map(function (item1) {
2076
- var isHas = false;
2077
- valueArray.map(function (item2) {
2078
- if (item1.value == item2) {
2079
- item1.checked = true;
2080
- selectText += item1.text + ',';
2081
- isHas = true;
2087
+ // 子表删除后刷新时 value 可能为 undefined/null,直接 split 会报错
2088
+ var valueArray = value == null || value === '' ? [] : String(value).split(",");
2089
+ if (itemParam.isinput == '1') {
2090
+ // 多选可输入走 SelectInput,无 checkbox_ ref
2091
+ itemParam[key] = value == null ? '' : value;
2092
+ } else {
2093
+ selectOptions.map(function (item1) {
2094
+ var isHas = false;
2095
+ valueArray.map(function (item2) {
2096
+ if (item1.value == item2) {
2097
+ item1.checked = true;
2098
+ selectText += item1.text + ',';
2099
+ isHas = true;
2100
+ }
2101
+ });
2102
+ if (!isHas) {
2103
+ item1.checked = false;
2082
2104
  }
2083
2105
  });
2084
- if (!isHas) {
2085
- item1.checked = false;
2106
+ if (selectText != '') {
2107
+ selectText = selectText.substring(0, selectText.length - 1);
2086
2108
  }
2087
- });
2088
- if (selectText != '') {
2089
- selectText = selectText.substring(0, selectText.length - 1);
2109
+ itemParam[key] = value == null ? '' : value;
2110
+ checkboxValueHas = true;
2090
2111
  }
2091
- checkboxValueHas = true;
2092
2112
  } else if (itemParam.itemType == 'datetime') {
2093
2113
  itemParam[key] = itemNew[i].value;
2094
2114
  if (this.props.data) {
@@ -2114,9 +2134,12 @@ var PageHome = function (_React$Component) {
2114
2134
  itemParam: Object.assign({}, itemParam)
2115
2135
  }, function () {
2116
2136
  if (checkboxValueHas) {
2117
- this.refs["checkbox_" + itemParam.tableName + "_" + itemParam.key].setState({
2118
- selectedText: selectText
2119
- });
2137
+ var checkboxRef = this.refs["checkbox_" + itemParam.tableName + "_" + itemParam.key];
2138
+ if (checkboxRef && typeof checkboxRef.setState === 'function') {
2139
+ checkboxRef.setState({
2140
+ selectedText: selectText
2141
+ });
2142
+ }
2120
2143
  }
2121
2144
  // if(dataType=='sub'){
2122
2145
  // this.props.reloadItemParam(itemNew,this.state.itemParam);
@@ -2360,21 +2383,21 @@ var PageHome = function (_React$Component) {
2360
2383
  var length = item.maxlength;
2361
2384
  var patrn = /^-?\d+(\.\d+)?$/;
2362
2385
  if (newValue !== '' && newValue != '-') {
2363
- /* var validAttr=item['validAttr'];
2364
- if(validAttr!=null && validAttr.length>0){
2365
- for(var va=0;va<validAttr.length;va++){
2366
- var regular=validAttr[va]['regular'];
2367
- var tips=validAttr[va]['tips'];
2368
- var reg=new RegExp(regular.slice(1,-1),"g");
2369
- if(!reg.test(newValue)){
2370
- Toast.show({
2371
- type: 'error',
2372
- content:item.title+':'+tips
2373
- });
2374
- return false;
2375
- }
2376
-
2377
- }
2386
+ /* var validAttr=item['validAttr'];
2387
+ if(validAttr!=null && validAttr.length>0){
2388
+ for(var va=0;va<validAttr.length;va++){
2389
+ var regular=validAttr[va]['regular'];
2390
+ var tips=validAttr[va]['tips'];
2391
+ var reg=new RegExp(regular.slice(1,-1),"g");
2392
+ if(!reg.test(newValue)){
2393
+ Toast.show({
2394
+ type: 'error',
2395
+ content:item.title+':'+tips
2396
+ });
2397
+ return false;
2398
+ }
2399
+
2400
+ }
2378
2401
  }*/
2379
2402
  if (this.checkEmoji(newValue)) {
2380
2403
  _Toast2.default.show({
@@ -2847,8 +2870,21 @@ var PageHome = function (_React$Component) {
2847
2870
  if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value != null && value.value != null) {
2848
2871
  raw = value.value;
2849
2872
  }
2873
+ // 时分:只读回显已是 HH:mm,new Date('HH:mm') 无效会导致提交值被清空
2874
+ if (dateFormatShow === 'HourMin' && typeof raw === 'string') {
2875
+ var hmStr = raw.trim();
2876
+ if (/^\d{1,2}:\d{2}(:\d{2})?$/.test(hmStr)) {
2877
+ var p = hmStr.split(':');
2878
+ var h = p[0].length === 1 ? '0' + p[0] : p[0];
2879
+ return h + ':' + p[1];
2880
+ }
2881
+ }
2850
2882
  if (typeof raw === 'string') {
2851
2883
  if (raw.length >= 10 && raw.indexOf('-') >= 0) {
2884
+ // 时分字段提交仍只需 HH:mm
2885
+ if (dateFormatShow === 'HourMin') {
2886
+ return this.dateFormat(new Date(raw.replace(/-/g, '/')).getTime(), dateFormat, dateFormatShow) || '';
2887
+ }
2852
2888
  return raw.substring(0, 19);
2853
2889
  }
2854
2890
  if (/^\d+$/.test(raw)) {
@@ -3386,12 +3422,12 @@ var PageHome = function (_React$Component) {
3386
3422
  });
3387
3423
  return false;
3388
3424
  }
3389
- /* if(newValue=''){
3390
- Toast.show({
3391
- type: 'error',
3392
- content: '意见不能为空!',
3393
- });
3394
- return false;
3425
+ /* if(newValue=''){
3426
+ Toast.show({
3427
+ type: 'error',
3428
+ content: '意见不能为空!',
3429
+ });
3430
+ return false;
3395
3431
  }*/
3396
3432
  if (newValue.length > 2000) {
3397
3433
  newValue = newValue.substring(0, 2000);
@@ -335,28 +335,28 @@ var PageHome = function (_React$Component) {
335
335
  var data = this.props.data;
336
336
  var subTblList = data.subTbl; //子表
337
337
  var relatedTbl = data.relatedTbl; //关联表
338
- /* var calculateExpList = data.calculateExpList;//计算公式列表
339
- var calculateExpList1 = value.calculateExpList;//计算公式列表
340
- if(calculateExpList1){
341
- for(var key in calculateExpList1){
342
- var calculateExpValue;
343
- if(calculateExpList){
344
- calculateExpValue = calculateExpList[key];
345
- if(!calculateExpValue){
346
- calculateExpValue = [];
347
- }
348
- }else{
349
- calculateExpList = {};
350
- calculateExpValue = [];
351
- }
352
- for(var j=0;j<calculateExpList1[key].length;j++){
353
- calculateExpValue.push(calculateExpList1[key][j]);
354
- }
355
- calculateExpList[key] = calculateExpValue;
356
-
357
- }
358
-
359
- data.calculateExpList = calculateExpList;
338
+ /* var calculateExpList = data.calculateExpList;//计算公式列表
339
+ var calculateExpList1 = value.calculateExpList;//计算公式列表
340
+ if(calculateExpList1){
341
+ for(var key in calculateExpList1){
342
+ var calculateExpValue;
343
+ if(calculateExpList){
344
+ calculateExpValue = calculateExpList[key];
345
+ if(!calculateExpValue){
346
+ calculateExpValue = [];
347
+ }
348
+ }else{
349
+ calculateExpList = {};
350
+ calculateExpValue = [];
351
+ }
352
+ for(var j=0;j<calculateExpList1[key].length;j++){
353
+ calculateExpValue.push(calculateExpList1[key][j]);
354
+ }
355
+ calculateExpList[key] = calculateExpValue;
356
+
357
+ }
358
+
359
+ data.calculateExpList = calculateExpList;
360
360
  }*/
361
361
 
362
362
  this.dealwithSubData(subTblList, subTblNo, value, relatedTbl);
@@ -875,8 +875,11 @@ var PageHome = function (_React$Component) {
875
875
  for (var n = 0; n < tblData.length; n++) {
876
876
  var key = tblData[n].key;
877
877
  var value = tblData[n].value;
878
+ if (value == null) {
879
+ value = '';
880
+ }
878
881
  if (this.refs[tblName + '_' + key + '_' + m]) {
879
- this.refs[tblName + '_' + key + '_' + m].reloadItemParam([{ 'key': 'value', 'value': value }]);
882
+ this.refs[tblName + '_' + key + '_' + m].reloadItemParam([{ 'key': 'value', 'value': value }], { silent: true });
880
883
  }
881
884
  }
882
885
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fmui-base",
3
- "version": "2.3.14",
3
+ "version": "2.3.15",
4
4
  "title": "fmui-base",
5
5
  "description": "fmui移动端组件",
6
6
  "main": "lib/index.js",