fmui-base 2.3.25 → 2.3.26
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 +1 -0
- package/lib/form/form.js +164 -1
- package/package.json +1 -1
package/README.md
CHANGED
package/lib/form/form.js
CHANGED
|
@@ -1016,6 +1016,17 @@ var PageHome = function (_React$Component) {
|
|
|
1016
1016
|
dateFormat = "YM";
|
|
1017
1017
|
} else if (dateDisplayFormat == "MonthDay") {
|
|
1018
1018
|
dateFormat = "MD";
|
|
1019
|
+
// 月日兜底:接口常为 MM-DD;先拼当年再转时间戳,避免被下方长度判断清空
|
|
1020
|
+
if (value && typeof value === 'string') {
|
|
1021
|
+
var mdVal = value.trim();
|
|
1022
|
+
if (/^\d{1,2}-\d{1,2}$/.test(mdVal)) {
|
|
1023
|
+
var mdPartsInit = mdVal.split('-');
|
|
1024
|
+
var mmInit = mdPartsInit[0].length === 1 ? '0' + mdPartsInit[0] : mdPartsInit[0];
|
|
1025
|
+
var ddInit = mdPartsInit[1].length === 1 ? '0' + mdPartsInit[1] : mdPartsInit[1];
|
|
1026
|
+
value = year + "-" + mmInit + "-" + ddInit;
|
|
1027
|
+
}
|
|
1028
|
+
}
|
|
1029
|
+
dateFormatShow = "MonthDay";
|
|
1019
1030
|
} else if (dateDisplayFormat == "Year") {
|
|
1020
1031
|
dateFormat = "Y";
|
|
1021
1032
|
} else if (dateDisplayFormat == "ODate") {
|
|
@@ -1125,6 +1136,12 @@ var PageHome = function (_React$Component) {
|
|
|
1125
1136
|
value = new Date(value).getTime();
|
|
1126
1137
|
} else if (value && typeof value === 'string' && value.length == 7 && dateFormat == "YM") {
|
|
1127
1138
|
value = new Date(value).getTime();
|
|
1139
|
+
} else if ((dateFormat == "MD" || dateFormatShow == "MonthDay") && value && typeof value === 'string' && /^\d{1,2}-\d{1,2}$/.test(value.trim())) {
|
|
1140
|
+
// 月日兜底:仍为 MM-DD 时拼当前年再转时间戳,避免被清空(只读不回显)
|
|
1141
|
+
var mdFallback = value.trim().split('-');
|
|
1142
|
+
var mmFallback = mdFallback[0].length === 1 ? '0' + mdFallback[0] : mdFallback[0];
|
|
1143
|
+
var ddFallback = mdFallback[1].length === 1 ? '0' + mdFallback[1] : mdFallback[1];
|
|
1144
|
+
value = new Date((year + "-" + mmFallback + "-" + ddFallback).replace(/-/g, "/")).getTime();
|
|
1128
1145
|
} else if (dateFormatShow == 'HourMin' && value && typeof value === 'string' && /^\d{1,2}:\d{2}(:\d{2})?$/.test(value.trim())) {
|
|
1129
1146
|
// 时分兜底:仍为 HH:mm 时拼当前日期再转时间戳,避免被清空
|
|
1130
1147
|
var hmFallback = value.trim().split(':');
|
|
@@ -1143,6 +1160,9 @@ var PageHome = function (_React$Component) {
|
|
|
1143
1160
|
if (readOnly == true) {
|
|
1144
1161
|
var dateStr = this.dateFormat(value, dateFormat, dateFormatShow);
|
|
1145
1162
|
value = dateStr;
|
|
1163
|
+
} else if (dateFormatShow === 'MonthDay' || dateFormat === 'MD') {
|
|
1164
|
+
// 编辑态:界面显示 MM-DD,选择器仍用带年的时间戳
|
|
1165
|
+
itemParam.monthDayShow = value ? this.dateFormat(value, dateFormat, dateFormatShow) || '' : '';
|
|
1146
1166
|
}
|
|
1147
1167
|
if (fuzhiFields && fuzhiFields.split(",").indexOf(itemParam.uniqueName) != -1 && form.defaultValue && form.defaultValue != null) {
|
|
1148
1168
|
value = form.defaultValue;
|
|
@@ -2928,12 +2948,26 @@ var PageHome = function (_React$Component) {
|
|
|
2928
2948
|
return h + ':' + p[1];
|
|
2929
2949
|
}
|
|
2930
2950
|
}
|
|
2951
|
+
// 月日:只读回显已是 MM-DD,new Date('MM-DD') 无效会导致提交值被清空
|
|
2952
|
+
if ((dateFormatShow === 'MonthDay' || dateFormat === 'MD') && typeof raw === 'string') {
|
|
2953
|
+
var mdStr = raw.trim();
|
|
2954
|
+
if (/^\d{1,2}-\d{1,2}$/.test(mdStr)) {
|
|
2955
|
+
var mp = mdStr.split('-');
|
|
2956
|
+
var mPad = mp[0].length === 1 ? '0' + mp[0] : mp[0];
|
|
2957
|
+
var dPad = mp[1].length === 1 ? '0' + mp[1] : mp[1];
|
|
2958
|
+
return mPad + '-' + dPad;
|
|
2959
|
+
}
|
|
2960
|
+
}
|
|
2931
2961
|
if (typeof raw === 'string') {
|
|
2932
2962
|
if (raw.length >= 10 && raw.indexOf('-') >= 0) {
|
|
2933
2963
|
// 时分字段提交仍只需 HH:mm
|
|
2934
2964
|
if (dateFormatShow === 'HourMin') {
|
|
2935
2965
|
return this.dateFormat(new Date(raw.replace(/-/g, '/')).getTime(), dateFormat, dateFormatShow) || '';
|
|
2936
2966
|
}
|
|
2967
|
+
// 月日字段提交仍只需 MM-DD
|
|
2968
|
+
if (dateFormatShow === 'MonthDay' || dateFormat === 'MD') {
|
|
2969
|
+
return this.dateFormat(new Date(raw.replace(/-/g, '/')).getTime(), dateFormat, dateFormatShow) || '';
|
|
2970
|
+
}
|
|
2937
2971
|
return raw.substring(0, 19);
|
|
2938
2972
|
}
|
|
2939
2973
|
if (/^\d+$/.test(raw)) {
|
|
@@ -2961,6 +2995,13 @@ var PageHome = function (_React$Component) {
|
|
|
2961
2995
|
var itemParam = this.state.itemParam;
|
|
2962
2996
|
var dateFormat = itemParam.dateFormat;
|
|
2963
2997
|
var dateFormatShow = itemParam.dateFormatShow;
|
|
2998
|
+
// salt 在仅 M/D 列时会产出 NaN,直接忽略无效确认,避免把已有值清空
|
|
2999
|
+
if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && (value.value == null || value.value === '' || isNaN(value.value))) {
|
|
3000
|
+
return;
|
|
3001
|
+
}
|
|
3002
|
+
if (typeof value === 'number' && isNaN(value)) {
|
|
3003
|
+
return;
|
|
3004
|
+
}
|
|
2964
3005
|
var dateStr = '';
|
|
2965
3006
|
if (dateFormat == "DateInterval") {
|
|
2966
3007
|
if (value && value.startDate && value.endDate) {
|
|
@@ -2975,12 +3016,25 @@ var PageHome = function (_React$Component) {
|
|
|
2975
3016
|
pickerVal.value = new Date(dateStr.replace(/-/g, "/")).getTime();
|
|
2976
3017
|
} else if (typeof pickerVal.value === 'string' && /^\d+$/.test(pickerVal.value)) {
|
|
2977
3018
|
pickerVal.value = parseInt(pickerVal.value, 10);
|
|
3019
|
+
} else if (dateStr && (dateFormatShow === 'MonthDay' || dateFormat === 'MD') && /^\d{1,2}-\d{1,2}$/.test(String(dateStr).trim())) {
|
|
3020
|
+
// 月日选择后展示值为 MM-DD,拼当年再回填时间戳给组件
|
|
3021
|
+
var mdPick = String(dateStr).trim().split('-');
|
|
3022
|
+
var mmPick = mdPick[0].length === 1 ? '0' + mdPick[0] : mdPick[0];
|
|
3023
|
+
var ddPick = mdPick[1].length === 1 ? '0' + mdPick[1] : mdPick[1];
|
|
3024
|
+
var tsMd = new Date(new Date().getFullYear() + '/' + mmPick + '/' + ddPick).getTime();
|
|
3025
|
+
if (!isNaN(tsMd)) {
|
|
3026
|
+
pickerVal.value = tsMd;
|
|
3027
|
+
}
|
|
2978
3028
|
} else if (dateStr && (typeof pickerVal.value !== 'number' || isNaN(pickerVal.value))) {
|
|
2979
3029
|
var ts = new Date(dateStr.replace(/-/g, '/')).getTime();
|
|
2980
3030
|
if (!isNaN(ts)) {
|
|
2981
3031
|
pickerVal.value = ts;
|
|
2982
3032
|
}
|
|
2983
3033
|
}
|
|
3034
|
+
// 月日:组件展示用时间戳,文案用 MM-DD
|
|
3035
|
+
if (dateFormatShow === 'MonthDay' || dateFormat === 'MD') {
|
|
3036
|
+
itemParam.monthDayShow = dateStr;
|
|
3037
|
+
}
|
|
2984
3038
|
value = pickerVal;
|
|
2985
3039
|
}
|
|
2986
3040
|
|
|
@@ -3180,6 +3234,70 @@ var PageHome = function (_React$Component) {
|
|
|
3180
3234
|
}
|
|
3181
3235
|
}
|
|
3182
3236
|
|
|
3237
|
+
// 月日展示:统一为 MM-DD
|
|
3238
|
+
|
|
3239
|
+
}, {
|
|
3240
|
+
key: 'formatMonthDayDisplay',
|
|
3241
|
+
value: function formatMonthDayDisplay(value) {
|
|
3242
|
+
if (value == null || value === '') {
|
|
3243
|
+
return '';
|
|
3244
|
+
}
|
|
3245
|
+
if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.value != null) {
|
|
3246
|
+
value = value.value;
|
|
3247
|
+
}
|
|
3248
|
+
if (typeof value === 'string') {
|
|
3249
|
+
var s = value.trim();
|
|
3250
|
+
if (/^\d{1,2}-\d{1,2}$/.test(s)) {
|
|
3251
|
+
var p = s.split('-');
|
|
3252
|
+
return (p[0].length === 1 ? '0' + p[0] : p[0]) + '-' + (p[1].length === 1 ? '0' + p[1] : p[1]);
|
|
3253
|
+
}
|
|
3254
|
+
if (s.length >= 10) {
|
|
3255
|
+
var tsFromStr = new Date(s.replace(/-/g, '/')).getTime();
|
|
3256
|
+
if (!isNaN(tsFromStr)) {
|
|
3257
|
+
return this.dateFormat(tsFromStr, 'MD') || '';
|
|
3258
|
+
}
|
|
3259
|
+
}
|
|
3260
|
+
return '';
|
|
3261
|
+
}
|
|
3262
|
+
if (typeof value === 'number' && !isNaN(value)) {
|
|
3263
|
+
return this.dateFormat(value, 'MD') || '';
|
|
3264
|
+
}
|
|
3265
|
+
return '';
|
|
3266
|
+
}
|
|
3267
|
+
|
|
3268
|
+
// 月日选择器内部值:保证是有效时间戳(salt 需带年)
|
|
3269
|
+
|
|
3270
|
+
}, {
|
|
3271
|
+
key: 'getMonthDayPickerValue',
|
|
3272
|
+
value: function getMonthDayPickerValue(value) {
|
|
3273
|
+
if (value == null || value === '') {
|
|
3274
|
+
return new Date().getTime();
|
|
3275
|
+
}
|
|
3276
|
+
if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.value != null) {
|
|
3277
|
+
value = value.value;
|
|
3278
|
+
}
|
|
3279
|
+
if (typeof value === 'number' && !isNaN(value)) {
|
|
3280
|
+
return value;
|
|
3281
|
+
}
|
|
3282
|
+
if (typeof value === 'string') {
|
|
3283
|
+
var s = value.trim();
|
|
3284
|
+
if (/^\d{1,2}-\d{1,2}$/.test(s)) {
|
|
3285
|
+
var p = s.split('-');
|
|
3286
|
+
var mm = p[0].length === 1 ? '0' + p[0] : p[0];
|
|
3287
|
+
var dd = p[1].length === 1 ? '0' + p[1] : p[1];
|
|
3288
|
+
var ts = new Date(new Date().getFullYear() + '/' + mm + '/' + dd).getTime();
|
|
3289
|
+
return isNaN(ts) ? new Date().getTime() : ts;
|
|
3290
|
+
}
|
|
3291
|
+
if (s.length >= 10) {
|
|
3292
|
+
var ts2 = new Date(s.replace(/-/g, '/')).getTime();
|
|
3293
|
+
if (!isNaN(ts2)) {
|
|
3294
|
+
return ts2;
|
|
3295
|
+
}
|
|
3296
|
+
}
|
|
3297
|
+
}
|
|
3298
|
+
return new Date().getTime();
|
|
3299
|
+
}
|
|
3300
|
+
|
|
3183
3301
|
//附件、图片
|
|
3184
3302
|
|
|
3185
3303
|
}, {
|
|
@@ -4425,7 +4543,52 @@ var PageHome = function (_React$Component) {
|
|
|
4425
4543
|
icon: _react2.default.createElement(_AngleRight2.default, { width: 26, fill: '#BCBCBC', onClick: t.handleCalendarFieldFill.bind(t, t.state.prefixName + "_" + t.state.itemParam.key, t.state.itemParam.value) })
|
|
4426
4544
|
// formatter: 'yyyy.MM.dd',
|
|
4427
4545
|
, onOk: t.handleChangeDate.bind(t, t.state.itemParam.key)
|
|
4428
|
-
}) : _react2.default.createElement(
|
|
4546
|
+
}) : t.state.itemParam.dateFormat === 'MD' || t.state.itemParam.dateFormatShow === 'MonthDay' ? _react2.default.createElement(
|
|
4547
|
+
HBox,
|
|
4548
|
+
{ className: isSubFormMultiCol ? "t-field-box t-FBAC t-W100" : "t-field-box t-FBAC t-W100" },
|
|
4549
|
+
_react2.default.createElement(
|
|
4550
|
+
'div',
|
|
4551
|
+
{ className: t.state.itemParam.required ? "t-field-layout-h-label required" : "t-field-layout-h-label" },
|
|
4552
|
+
t.state.itemParam.title
|
|
4553
|
+
),
|
|
4554
|
+
_react2.default.createElement(
|
|
4555
|
+
HBox,
|
|
4556
|
+
{ flex: '1', onClick: function onClick() {
|
|
4557
|
+
t.showSlot('md_' + t.state.itemParam.key);
|
|
4558
|
+
}, className: 't-FBAC' },
|
|
4559
|
+
_react2.default.createElement(
|
|
4560
|
+
Box,
|
|
4561
|
+
{ flex: '1' },
|
|
4562
|
+
_react2.default.createElement(
|
|
4563
|
+
'span',
|
|
4564
|
+
{ className: 't-FL' },
|
|
4565
|
+
t.state.itemParam.monthDayShow || t.formatMonthDayDisplay(t.state.itemParam.value) || ''
|
|
4566
|
+
),
|
|
4567
|
+
!(t.state.itemParam.monthDayShow || t.formatMonthDayDisplay(t.state.itemParam.value)) ? _react2.default.createElement(
|
|
4568
|
+
'span',
|
|
4569
|
+
{ className: 't-datetime-field-placeholder', style: { color: '#ccc' } },
|
|
4570
|
+
t.state.itemParam.placeholder || '请选择'
|
|
4571
|
+
) : null
|
|
4572
|
+
),
|
|
4573
|
+
_react2.default.createElement(
|
|
4574
|
+
Box,
|
|
4575
|
+
{ className: 't-FBAC t-field-icon' },
|
|
4576
|
+
_react2.default.createElement(_AngleRight2.default, { width: 26, fill: '#BCBCBC' }),
|
|
4577
|
+
_react2.default.createElement(_Datetime2.default, {
|
|
4578
|
+
locale: 'zh-cn',
|
|
4579
|
+
slotRef: function slotRef(s) {
|
|
4580
|
+
return t['md_' + t.state.itemParam.key] = s;
|
|
4581
|
+
},
|
|
4582
|
+
title: t.state.itemParam.title || '月日选择',
|
|
4583
|
+
value: t.getMonthDayPickerValue(t.state.itemParam.value),
|
|
4584
|
+
columns: _Datetime2.default.YMD,
|
|
4585
|
+
minDate: t.state.itemParam.minDate ? t.state.itemParam.minDate : new Date(1900, 0, 1).getTime(),
|
|
4586
|
+
maxDate: t.state.itemParam.maxDate ? t.state.itemParam.maxDate : new Date(2051, 0, 1).getTime() - 1,
|
|
4587
|
+
onConfirm: t.handleChangeDate.bind(t, t.state.itemParam.key)
|
|
4588
|
+
})
|
|
4589
|
+
)
|
|
4590
|
+
)
|
|
4591
|
+
) : _react2.default.createElement(_DatetimeField2.default, {
|
|
4429
4592
|
className: 't-W100',
|
|
4430
4593
|
layout: subFormFieldLayout,
|
|
4431
4594
|
multiLine: isSubFormMultiCol,
|