fmui-base 2.3.24 → 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 CHANGED
@@ -3,6 +3,8 @@
3
3
  ---npm publish
4
4
 
5
5
  ## 更新日志
6
+ - 2.3.26:月日字符时间类型不回显,办理后丢失问题修复
7
+ - 2.3.25:表单乐观锁只有自定义流程生效 非approve流程不生效
6
8
  - 2.3.24:流程办理选人组件支持选择群组和职务
7
9
  - 2.3.23:传阅增加传阅原因,被传阅人打开流程提示传阅原因,移动端流程办理中流程分类筛选支持只显示存在的数据的分类,流程管理支持设置流程办理缓急
8
10
  - 2.3.22:排他网关支持直接连其他网关
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(_DatetimeField2.default, {
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,
@@ -2564,7 +2564,7 @@ var PageHome = function (_React$Component) {
2564
2564
  processInstanceId: _this2.state.processInstanceId,
2565
2565
  permissionCode: _this2.state.permissionCode
2566
2566
  };
2567
- if (t.state.formDataOptlock !== '' && t.state.formDataOptlock !== null && typeof t.state.formDataOptlock !== 'undefined') {
2567
+ if (t.state.module === 'approve' && t.state.formDataOptlock !== '' && t.state.formDataOptlock !== null && typeof t.state.formDataOptlock !== 'undefined') {
2568
2568
  param.optlock = t.state.formDataOptlock;
2569
2569
  }
2570
2570
  var dealActionName = "";
@@ -5309,7 +5309,7 @@ var PageHome = function (_React$Component) {
5309
5309
  // param.commentbizSn=commentbizSn;
5310
5310
  // }
5311
5311
  param.commentbizSn = commentbizSn;
5312
- if (t.state.formDataOptlock !== '' && t.state.formDataOptlock !== null && typeof t.state.formDataOptlock !== 'undefined') {
5312
+ if (t.state.module === 'approve' && t.state.formDataOptlock !== '' && t.state.formDataOptlock !== null && typeof t.state.formDataOptlock !== 'undefined') {
5313
5313
  param.optlock = t.state.formDataOptlock;
5314
5314
  }
5315
5315
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fmui-base",
3
- "version": "2.3.24",
3
+ "version": "2.3.26",
4
4
  "title": "fmui-base",
5
5
  "description": "fmui移动端组件",
6
6
  "main": "lib/index.js",